CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 2급/Week 1/Day 1

기준: 리눅스마스터 2급 출제 기준·오류 제보

리눅스마스터 2급· AssociateWeek 1 · Day 1읽기 약 9분
핵심 정리
  • 커널은 하드웨어를 직접 다루는 핵심이고, 셸은 사용자의 명령을 커널에 전달하는 통역사다.
  • "리눅스"는 원래 커널의 이름이다. 우리가 쓰는 완성된 운영체제는 커널 + GNU 도구 모음이다.
  • 커널의 5대 임무: 프로세스·메모리·파일 시스템·장치·네트워크 관리.
  • 리눅스 커널은 모놀리식(monolithic) 구조이며, 필요한 기능을 모듈로 붙였다 뗐다 할 수 있다.
  • 커널 버전은 uname -r로 확인하고, 두 번째 숫자가 짝수면 안정(stable) 버전이라는 옛 규칙이 있었다.

Day 1 - 운영체제와 커널: 리눅스가 하는 일

컴퓨터는 네 겹으로 되어 있다

리눅스를 이해하는 가장 빠른 길은 층 구조를 그려보는 것이다.

┌─────────────────────────────────┐
│  응용 프로그램                    │  vi, 웹 브라우저, 컴파일러
├─────────────────────────────────┤
│  셸(Shell)                       │  bash, sh, csh — 명령 해석기
├─────────────────────────────────┤
│  커널(Kernel)                    │  리눅스 그 자체
├─────────────────────────────────┤
│  하드웨어                         │  CPU, 메모리, 디스크, 네트워크 카드
└─────────────────────────────────┘
  • 위층은 아래층에 직접 손대지 못한다. 응용 프로그램이 디스크에 쓰고 싶으면 커널에 부탁해야 한다.
  • 이 부탁을 시스템 콜(system call) 이라고 부른다.
  • 이렇게 막아두는 이유는 안정성이다. 프로그램 하나가 잘못돼도 시스템 전체가 무너지지 않는다.

시험에서 "커널과 셸의 차이"를 묻는 문항이 반복된다. 셸은 명령을 해석해 전달할 뿐, 하드웨어를 직접 다루지 않는다는 점만 확실히 잡아두면 된다.

커널이 실제로 하는 다섯 가지

임무하는 일예
프로세스 관리어떤 프로그램을 언제 CPU에 올릴지 결정스케줄링, 프로세스 생성·종료
메모리 관리프로그램마다 쓸 메모리를 나눠주고 회수가상 메모리, 스왑
파일 시스템디스크의 0과 1을 "파일과 디렉터리"로 보여줌ext4, xfs 마운트
장치 관리하드웨어를 다루는 드라이버 제공키보드, 프린터, 그래픽 카드
네트워크패킷을 주고받는 규칙 처리TCP/IP 스택
  • 다섯 가지 모두 "자원을 나눠 쓰게 만드는 일" 이라는 공통점이 있다.
  • 운영체제를 한 문장으로 정의하면 "하드웨어 자원을 관리하고 사용자에게 인터페이스를 제공하는 소프트웨어" 다.

리눅스라는 이름의 범위

여기서 초보자가 가장 많이 헷갈린다.

  • 좁은 의미의 리눅스 = 리누스 토르발스가 만든 커널.
  • 넓은 의미의 리눅스 = 커널 + GNU 도구 + 각종 소프트웨어를 묶은 운영체제(= 배포판).

그래서 자유 소프트웨어 진영에서는 "GNU/Linux" 라고 부르자고 주장한다. ls cp bash 같은 우리가 매일 쓰는 명령은 전부 GNU 프로젝트가 만든 것이고, 리눅스 커널이 만든 게 아니기 때문이다.

커널의 구조: 모놀리식과 마이크로커널

구분모놀리식 커널마이크로커널
구조대부분의 기능이 커널 안에 들어있음최소 기능만 커널에, 나머지는 바깥
속도빠름 (호출이 커널 내부에서 끝남)상대적으로 느림 (통신 비용)
안정성한 부분의 오류가 전체에 영향문제 부분만 격리 가능
크기큼작음
예리눅스, 유닉스MINIX, Mach
  • 리눅스는 모놀리식이다. 이 한 줄이 시험 포인트다.
  • 다만 순수한 모놀리식은 아니다. 적재 가능 커널 모듈(LKM) 로 기능을 필요할 때 붙이고 뗄 수 있어, 마이크로커널의 장점을 일부 가져왔다.
  • 그래서 "모듈화된 모놀리식 커널"이라고 부르기도 한다.

커널 버전 읽기

$ uname -r
5.15.0-88-generic
│ │  │
│ │  └── 패치 레벨
│ └───── 주 버전(major) 안의 부 버전(minor)
└─────── 주 버전(major)
  • 예전(2.6 이전)에는 부 버전이 짝수면 안정판, 홀수면 개발판이라는 규칙이 있었다.
    • 2.4 → 안정판 / 2.5 → 개발판
  • 이 규칙은 2.6 이후 사라졌다. 지금은 짝·홀수와 안정성이 무관하다.
  • 시험은 여전히 옛 규칙을 묻는 경우가 있으니 "짝수=안정" 이라는 문장 자체를 기억해 둘 만하다.

지금의 커널은 어떻게 나뉘나

짝·홀수 규칙이 사라진 뒤, 커널 공식 사이트(kernel.org)는 버전을 성격으로 구분한다.

구분뜻
mainline리누스 토르발스가 직접 관리하는 개발 본줄기. 새 기능이 여기로 들어온다
stablemainline에서 나온 버전에 버그 수정만 더해 가는 안정 버전
longterm여러 해 동안 수정이 이어지는 장기 지원 버전. 배포판이 주로 이것을 고른다
  • 5.15.0-88-generic에서 -88-generic처럼 뒤에 붙는 부분은 배포판이 붙인 표시다. 같은 5.15 커널이라도 배포판마다 뒷부분이 다르다.
  • 커널 파일 자체는 /boot 아래에 vmlinuz-버전 이라는 이름으로 놓인다.

사용자 모드와 커널 모드: 시스템 콜이 지나는 문

"위층은 아래층에 직접 손대지 못한다"는 규칙은 약속이 아니라 CPU가 강제하는 구분이다.

구분사용자 모드(user mode)커널 모드(kernel mode)
여기서 도는 것응용 프로그램, 셸, 일반 명령커널, 장치 드라이버(모듈)
하드웨어 직접 접근불가가능
볼 수 있는 메모리자기 프로세스 영역만전체
오류가 나면그 프로그램만 죽는다시스템 전체가 멈출 수 있다(커널 패닉)

cat memo.txt 한 줄이 실행될 때 일어나는 일을 따라가 보면 층 구조가 그대로 보인다.

 셸(bash)      "cat memo.txt" 를 해석해 cat 프로그램을 실행시킨다
    │
 cat           사용자 모드 — 파일을 "열어 달라 · 읽어 달라 · 화면에 써 달라" 고 요청
    │            open()      read()        write()      ← 시스템 콜
    ▼
 커널          커널 모드 — 파일 시스템에서 위치를 찾고 디스크 드라이버를 부른다
    │
 디스크        실제 데이터가 읽힌다
  • 셸은 명령을 해석해 프로그램을 띄우는 데까지만 한다. 디스크를 읽는 일은 처음부터 끝까지 커널이 한다.
  • 셸 자신도 사용자 모드에서 도는 평범한 프로그램이다. 그래서 bash를 zsh로 바꿔도 커널은 그대로다.

⚠️ 함정: "셸이 하드웨어를 제어한다", "커널이 명령어를 해석한다" — 둘 다 역할을 맞바꾼 오답 보기다. 해석은 셸, 제어는 커널로 고정된다.

리눅스의 특징

'리눅스의 이해' 영역에서 "리눅스의 특징으로 틀린 것"을 고르는 문항의 재료가 되는 목록이다.

특징뜻
다중 사용자(multi-user)여러 사람이 동시에 한 시스템에 로그인해 쓸 수 있다
다중 작업(multi-tasking)여러 프로그램을 동시에 실행한다. CPU 시간을 잘게 나눠 번갈아 준다
뛰어난 이식성커널 대부분이 C로 작성돼 PC·서버·스마트폰·임베디드 기기까지 옮겨 간다
가상 메모리메모리가 모자라면 디스크의 스왑 영역을 메모리처럼 빌려 쓴다
계층적 파일 시스템모든 파일이 /(루트) 하나에서 뻗어 나가는 트리 구조에 놓인다
공유 라이브러리여러 프로그램이 같은 라이브러리 코드를 함께 써서 메모리와 디스크를 아낀다
가상 콘솔모니터 한 대에서 여러 개의 로그인 화면을 전환해 쓴다(Ctrl+Alt+F1~F6)
강력한 네트워크TCP/IP를 커널이 기본 지원한다. 서버로 널리 쓰이는 이유다
공개 소프트웨어커널 소스가 GPL로 공개돼 누구나 고쳐 쓸 수 있다
  • 다중 사용자와 다중 작업은 서로 다른 말이다. 앞은 "사람이 여럿", 뒤는 "프로그램이 여럿"이다.
  • 약점도 함께 묻는다 — 공개 소프트웨어라 문제 해결을 공식적으로 보장받기 어렵고(상용 배포판의 유료 지원은 예외), 일부 상용 프로그램·하드웨어는 리눅스를 지원하지 않는다.

커널 모듈을 눈으로 확인하기

"모듈로 붙였다 뗐다 한다"는 말은 명령 몇 개로 바로 확인된다.

명령하는 일
lsmod지금 커널에 올라와 있는 모듈 목록
modinfo 모듈명모듈의 설명·파일 위치·의존 관계
modprobe 모듈명모듈을 올린다. 의존하는 다른 모듈까지 알아서 함께 올린다
insmod 파일경로모듈 파일 하나만 올린다. 의존성은 처리하지 않는다
rmmod 모듈명모듈을 내린다
$ lsmod | head -4
Module                  Size  Used by
isofs                  49152  1
xfs                  1589248  2
e1000                 151552  0
  • 모듈 파일은 /lib/modules/커널버전/ 아래에 있고 확장자는 .ko(kernel object)다.
  • Used by 가 0이 아니면 누군가 쓰는 중이라 내릴 수 없다.

직접 쳐보기

uname -a          # 커널 이름·버전·아키텍처 전부
uname -r          # 커널 버전만
cat /proc/version # 커널이 스스로 보고하는 정보
echo $SHELL       # 지금 쓰는 셸
$ uname -a
Linux ubuntu 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

uname은 옵션 하나가 출력의 한 조각에 대응한다. -a는 그걸 전부 이어 붙인 것이다.

옵션출력위 예에서
-s커널 이름Linux
-n호스트명(네트워크 노드 이름)ubuntu
-r커널 릴리스(버전)5.15.0-88-generic
-v커널 빌드 정보(빌드 번호·날짜)#98-Ubuntu SMP …
-m하드웨어 아키텍처x86_64
-o운영체제 이름GNU/Linux
  • 맨 끝의 GNU/Linux가 눈에 띈다. 커널 이름(-s)은 Linux, 운영체제 이름(-o)은 GNU/Linux — 앞에서 본 "좁은 의미·넓은 의미"가 명령 출력에도 그대로 나뉘어 있다.
  • uname은 커널 정보만 알려준다. 배포판 이름과 버전은 cat /etc/os-release로 봐야 한다.

내일은 이 커널이 어디서 왔는지 — 유닉스에서 리눅스까지의 계보를 따라간다.

📖 용어

  • 커널(Kernel) : 하드웨어를 직접 제어하는 운영체제의 핵심부. "리눅스"의 원래 뜻.
  • 셸(Shell) : 사용자가 친 명령을 해석해 커널에 전달하는 프로그램. bash가 대표적이다.
  • 시스템 콜(System Call) : 응용 프로그램이 커널에 일을 부탁하는 공식 창구.
  • 모놀리식 커널 : 대부분의 기능이 커널 안에 들어있는 구조. 리눅스가 여기 속한다.
  • 마이크로커널 : 최소 기능만 커널에 두고 나머지를 바깥으로 뺀 구조. MINIX가 대표적이다.
  • 커널 모듈(LKM) : 실행 중에 붙였다 뗄 수 있는 커널 기능 조각. 장치 드라이버가 주로 이 형태다.
  • GNU/Linux : 리눅스 커널과 GNU 도구를 합친 운영체제를 정확히 부르는 이름.
  • 가상 메모리 : 실제 메모리보다 큰 공간을 쓰는 것처럼 보이게 하는 커널의 메모리 관리 기법.
  • 커널 모드 / 사용자 모드 : 하드웨어를 직접 만질 수 있는 실행 상태와 그렇지 못한 상태. 응용 프로그램은 사용자 모드에서 돈다.
  • 가상 콘솔 : 모니터 한 대에서 여러 로그인 화면을 전환해 쓰는 기능.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

다음 중 리눅스 커널의 구조에 대한 설명으로 알맞은 것은?

문제 2

다음 중 셸(Shell)에 대한 설명으로 가장 알맞은 것은?

문제 3

다음 중 커널의 주요 기능으로 거리가 먼 것은?

문제 4

응용 프로그램이 하드웨어에 직접 접근하지 못하도록 막고, 커널에 작업을 요청할 때 사용하는 공식적인 통로를 무엇이라 하는가?

문제 5

다음 중 "리눅스"라는 이름에 대한 설명으로 알맞은 것은?

다음 리눅스의 탄생: 유닉스에서 리누스까지Week 1 · Day 2

참고 공식 자료

  • 리눅스마스터 2급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 컴퓨터는 네 겹으로 되어 있다
  • 커널이 실제로 하는 다섯 가지
  • 리눅스라는 이름의 범위
  • 커널의 구조: 모놀리식과 마이크로커널
  • 커널 버전 읽기
  • 지금의 커널은 어떻게 나뉘나
  • 사용자 모드와 커널 모드: 시스템 콜이 지나는 문
  • 리눅스의 특징
  • 커널 모듈을 눈으로 확인하기
  • 직접 쳐보기
  • 용어
  • 연습 문제