공든탑앱 열기

리눅스의 특징과 구조

리눅스마스터 2급 · 리눅스의 이해 · 약 12분

쉽게 말하면

리눅스는 네 층으로 쌓인 건물 같아요. 맨 아래 실제 기계(하드웨어), 그 위에서 기계를 직접 다루는 심장(커널), 사람의 명령을 받아 커널에 전해 주는 창구(셸), 맨 위에 우리가 쓰는 프로그램이 있어요. 사람이 기계를 직접 만지면 위험하고 어려우니, 언제나 창구를 거쳐 부탁하는 구조예요.

시험용 정의

리눅스 시스템은 아래에서부터 하드웨어 → 커널 → 셸 → 응용 프로그램 네 층으로 쌓여 있다. 사용자는 셸이나 응용 프로그램을 통해 일을 시키고, 그 요청은 커널이 받아 하드웨어를 직접 움직인다. 리눅스 커널은 핵심 기능을 한 덩어리로 묶은 모놀리식 커널이지만, 장치 드라이버 같은 부분을 모듈로 붙였다 뗄 수 있다.

비유로 이해하기

식당으로 치면 하드웨어는 주방 설비, 커널은 설비를 다루는 주방장, 셸은 손님 주문을 받아 주방에 전하는 직원, 응용 프로그램은 손님이 고르는 메뉴다. 손님은 주방에 직접 들어가지 않고 직원을 통해 주문한다.

자세히

왜 알아야 하나요

시험에서는 "이건 커널이 하는 일인가, 셸이 하는 일인가"를 자주 가른다. 명령을 해석하는 건 셸, 프로세스·메모리·장치를 관리하는 건 커널이라는 경계를 잡아 두면 셸·프로세스·모듈 단원도 훨씬 쉽게 이해된다.

네 계층 한눈에

계층하는 일예사용자가 만나는 방식
응용 프로그램사용자가 원하는 작업을 수행하는 프로그램. 필요한 자원은 시스템 콜로 커널에 요청vi, 웹 브라우저, 아파치 웹 서버, 데이터베이스실행해서 직접 쓴다
셸사용자가 입력한 명령을 해석해 프로그램을 실행하고 결과를 보여 줌sh, csh, ksh, bash(GNU 셸), zsh터미널에 명령을 친다
커널하드웨어 자원을 관리하고 프로그램들이 나눠 쓰게 함리눅스 커널(vmlinuz)직접 만나지 않는다. 셸·프로그램을 거친다
하드웨어실제 장치CPU, 메모리, 디스크, 네트워크 카드

커널이 하는 일

기능뜻예
프로세스 관리여러 프로그램이 CPU를 번갈아 쓰게 순서를 정함(스케줄링)동시에 여러 명령을 실행
메모리 관리프로그램마다 메모리를 나눠 주고, 모자라면 디스크를 가상 메모리(스왑)로 씀free 명령으로 확인
파일시스템 관리디스크에 파일을 저장·찾는 규칙 관리ext4, XFS
장치 관리디바이스 드라이버로 하드웨어를 제어USB, 그래픽카드
네트워크 관리TCP/IP 통신 처리다른 컴퓨터와 데이터 주고받기
시스템 콜 제공응용 프로그램이 커널 기능을 요청하는 공식 창구파일 열기(open), 프로세스 만들기(fork)

모놀리식 커널과 모듈

모놀리식 커널은 프로세스·메모리·파일시스템·드라이버 같은 핵심 기능이 커널 안에 한 덩어리로 들어 있는 구조다. 기능끼리 바로 호출해서 빠르다. 반대로 마이크로커널은 최소 기능만 커널에 두고 나머지를 바깥 프로그램으로 돌린다(미닉스, Mach).

리눅스는 모놀리식이지만 커널 모듈을 지원해서, 새 장치 드라이버를 커널을 다시 컴파일하지 않고 실행 중에 적재·제거할 수 있다. 모듈 확인은 lsmod, 적재는 modprobe·insmod, 제거는 rmmod다.

리눅스의 특징

특징풀이
다중 사용자여러 사용자가 동시에 접속해 각자 계정으로 쓴다. 단일 사용자 전용 운영체제가 아니다
다중 작업여러 프로그램을 동시에 실행한다(멀티태스킹)
이식성커널 대부분이 C 언어로 작성되어 x86·ARM 등 여러 CPU로 옮기기 쉽다
가상 콘솔하나의 모니터에서 Ctrl+Alt+F1~F6 로 여러 로그인 화면을 전환
다양한 파일시스템ext4·XFS 같은 리눅스 파일시스템과 FAT·NTFS 등 다른 운영체제 파일시스템도 읽고 쓴다
네트워크TCP/IP를 기본 지원해 서버로 널리 쓰인다
표준 준수POSIX 표준을 따라 유닉스 프로그램과 호환된다
오픈소스GPL로 공개되어 누구나 무료로 쓰고 고칠 수 있다. 대신 공식 기술 지원은 상용 배포판 업체(레드햇 등)가 유료로 제공

시험에 이렇게 나와요

1차 출제기준 · 공개 기출 없음

확인 문제

Q1. 사용자가 터미널에 친 ls 명령을 해석해서 커널에 전달하는 것은?

  1. 디바이스 드라이버
  2. 부트로더
  3. 커널
  4. 셸
정답 보기

4번 셸

셸(bash 등)은 사용자와 커널 사이의 명령어 해석기다. 사용자가 친 명령을 읽고 알맞은 프로그램을 실행해 커널에 일을 요청한다. 실제로 하드웨어를 움직이는 건 커널이다.

Q2. 리눅스 커널이 담당하는 기능이 아닌 것은?

  1. 프로세스 스케줄링
  2. 메모리 관리
  3. 장치 드라이버를 통한 하드웨어 제어
  4. 사용자 명령어 해석
정답 보기

4번 사용자 명령어 해석

명령어 해석은 셸이 한다. 나머지는 커널의 일.

Q3. 리눅스 커널 구조에 대한 설명으로 옳은 것은?

  1. 모놀리식 커널이며, 실행 중에 모듈을 적재·제거할 수 있다
  2. 최소 기능만 가진 마이크로커널이다
  3. 장치 드라이버를 추가하려면 항상 커널을 다시 컴파일해야 한다
  4. 셸이 커널 안에 포함되어 있다
정답 보기

1번 모놀리식 커널이며, 실행 중에 모듈을 적재·제거할 수 있다

모놀리식 + 적재 가능한 커널 모듈. 셸은 커널 밖의 프로그램이다.

Q4. 리눅스의 특징으로 옳지 않은 것은?

  1. 한 번에 한 사용자만 쓸 수 있는 단일 사용자 시스템이다
  2. 대부분 C 언어로 작성되어 이식성이 높다
  3. 여러 작업을 동시에 실행할 수 있다
  4. 여러 사용자가 동시에 접속할 수 있다
정답 보기

1번 한 번에 한 사용자만 쓸 수 있는 단일 사용자 시스템이다

리눅스는 다중 사용자 시스템이다.

Q5. 응용 프로그램이 파일을 열거나 새 프로세스를 만들 때 커널에 요청하는 공식 창구는?

  1. 가상 콘솔
  2. 환경 변수
  3. 부트로더
  4. 시스템 콜
정답 보기

4번 시스템 콜

시스템 콜(open, fork 등).

헷갈리기 쉬운 O·X

셸은 하드웨어를 직접 제어하는 운영체제의 핵심이다.

정답 보기

X 하드웨어 제어는 커널. 셸은 명령어 해석기.

리눅스는 실행 중에 커널 모듈을 적재하고 제거할 수 있다.

정답 보기

O modprobe로 적재, rmmod로 제거.

리눅스 커널은 대부분 어셈블리어로 작성되어 다른 CPU로 옮기기 어렵다.

정답 보기

X 대부분 C 언어로 작성되어 이식성이 높다.

함께 보면 좋은 개념