Cert Notes/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
    • 1.파일과 디렉터리 명령: 리눅스 파일 시스템을 손끝으로 다루기
    • 2.텍스트 처리: 유닉스의 진짜 힘, 파이프라인으로 데이터를 다듬다
    • 3.vi/vim 정밀 정복: 손을 떼지 않고 편집하는 에디터의 미학
    • 4.압축과 아카이브, 그리고 도움말: 파일을 묶고 줄이고, 스스로 배우는 법
    • 5.Week 2 종합 복습: 명령행에서 살아남기 위한 모든 것
  • Week 3
    • 1.셸의 정체: 명령을 해석하는 프로그램과 변수의 세계
    • 2.흐름을 잇고 비트는 기술: 리다이렉션, 파이프, 메타문자
    • 3.셸을 길들이다: 별칭, 히스토리, 그리고 작업 제어
    • 4.셸 스크립트: 명령을 코드로 엮는 첫걸음
    • 5.Week 3 종합 복습: 셸과 스크립트의 큰 그림
  • Week 4
    • 1.계정 파일 4종: /etc/passwd · /etc/shadow · /etc/group · /etc/gshadow 필드 해부
    • 2.계정 관리 명령과 권한 상승: useradd부터 sudo까지
    • 3.권한의 산수: rwx · 8진수 chmod · 소유권 · umask 계산
    • 4.특수 권한과 ACL: SetUID · SetGID · Sticky bit · getfacl/setfacl
    • 5.Week 4 종합 복습: 계정·권한 체계를 한 장으로 꿰기
  • Week 5
    • 1.파일시스템 종류와 구조: ext2/3/4 · xfs · btrfs · 저널링 · inode와 블록
    • 2.파티션과 마운트: fdisk · gdisk · parted · mkfs · mount/umount · /etc/fstab 6필드
    • 3.LVM과 스왑: PV·VG·LV 계층 · pvcreate부터 lvextend·resize2fs · mkswap·swapon
    • 4.RAID와 쿼터, 디스크 점검: RAID 0/1/5/6/10 · mdadm · quota/edquota · fsck/df/du/lsblk/blkid
    • 5.Week 5 종합 복습: 파일시스템·파티션·LVM·스왑·RAID·쿼터 총정리와 실전 연습
  • Week 6
    • 1.프로세스 관리: PID부터 시그널·우선순위까지
    • 2.데몬과 프로세스 생애: fork·exec부터 좀비·고아까지
    • 3.시스템 초기화: init·런레벨에서 systemd·target까지
    • 4.작업 예약: cron의 5필드부터 at·batch까지
    • 5.Week 6 종합 복습: 프로세스·초기화·예약을 한 장으로 꿰기
  • Week 7
    • 1.패키지 관리: RPM·YUM/DNF와 DEB·APT 두 계열을 한 손에
    • 2.소스 컴파일과 라이브러리: tar→configure→make→make install의 의미
    • 3.커널과 모듈: 시스템의 심장과 그 확장 부품 다루기
    • 4.장치 관리와 프린터: /dev·udev로 하드웨어 다루고 CUPS로 인쇄하기
    • 5.Week 7 종합 복습: 백업과 시스템 관리의 큰 그림
    • 6.가상화 관리: 하이퍼바이저·KVM·컨테이너로 한 서버를 여럿처럼 쓰기
  • Week 8
    • 1.네트워크 기초: OSI 7계층과 IP 주소·서브넷 계산
    • 2.네트워크 설정: 인터페이스·게이트웨이·DNS를 손으로 잡기
    • 3.네트워크 진단: ping부터 tcpdump까지 문제를 좁히는 명령들
    • 4.네트워크 장비·프로토콜·이중화: 계층으로 꿰는 인프라
    • 5.Week 8 종합 복습: 네트워크를 계층 한 장으로 꿰기
  • Week 9
    • 1.DNS와 BIND: 이름을 주소로 바꾸는 인터넷의 전화번호부
    • 2.DHCP와 NTP: 주소를 나눠 주고 시계를 맞추는 두 서비스
    • 3.Apache 웹 서버: httpd.conf와 가상 호스트의 모든 것
    • 4.Nginx와 리버스 프록시: 이벤트 기반 웹 서버의 설계
    • 5.Week 9 종합 복습: 이름·주소·시간·웹을 한 장으로
    • 6.데이터베이스 서비스: MySQL/MariaDB 설치부터 백업·복구까지
  • Week 10
    • 1.메일 서비스: MTA·MDA·MUA와 SMTP·POP3·IMAP의 삼각 구도
    • 2.파일 전송 서비스: FTP의 능동·수동 모드와 vsftpd
    • 3.원격 접속의 표준: SSH와 sshd_config, 키 인증, 포트 포워딩
    • 4.원격 GUI: VNC와 X 윈도 시스템의 클라이언트·서버 역전
    • 5.Week 10 종합 복습: 네트워크 서비스를 포트 한 장으로 꿰기
  • Week 11
    • 1.Samba: 윈도와 리눅스를 잇는 파일·프린터 공유
    • 2.NFS: 유닉스 세계의 표준 파일 공유
    • 3.방화벽: iptables와 firewalld
    • 4.접근 제어와 보안: TCP Wrapper, SELinux, 로그 관리
    • 5.Week 11 종합 복습: 공유, 방화벽, 보안의 큰 그림
  • Week 12
    • 1.명령어 옵션 빈출 정리: 실기 단답으로 굳히는 핵심 명령
    • 2.설정 파일 경로·핵심 지시어 총정리: 빈칸 채우기를 위한 정밀 암기
    • 3.디스크·LVM·권한 작업형: 시나리오를 명령 순서로 풀어내기
    • 4.프로세스·스케줄링·systemd 작업형: 운영 명령을 시나리오로 굳히기
    • 5.시스템 작업형 모의고사 + 오답노트: 12문항으로 굳히기
  • Week 13
    • 1.네트워크 설정·진단 작업형: 손으로 IP를 세우고 길을 뚫는다
    • 2.서비스 설정파일 단답: 지시어 하나가 합격을 가른다
    • 3.셸 스크립트 작성형: 조건·반복·함수로 실무를 자동화한다
    • 4.보안·방화벽·로그 작업형: 규칙을 쓰고 컨텍스트를 바로잡는다
    • 5.네트워크·서비스 작업형 모의 + 오답노트
  • Week 14
    • 1.1차 과목① 종합 모의: 리눅스 실무의 이해 약점 정리
    • 2.1차 과목② 종합 모의: 리눅스 시스템 관리 약점 정리
    • 3.1차 과목③ 종합 모의: 네트워크와 서비스의 활용 약점 정리
    • 4.2차 실기 종합 모의: 단답·작업형 실전 훈련
    • 5.최종 오답·암기카드 총정리와 시험 당일 전략 (70일 마무리)
합격 후기
← 리눅스마스터 1급/Week 1/Day 1
리눅스마스터 1급· AssociateWeek 1 · Day 1읽기 약 16분

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

📌 핵심 정리

  • 운영체제 = 자원 관리 + 추상화. 4대 기능은 프로세스·메모리·파일·장치(I/O) 관리다.
  • 사용자 모드(Ring 3) 프로그램은 하드웨어를 직접 못 만진다. 시스템 콜로 커널 모드(Ring 0)에 대신 해달라고 요청한다.
  • 리눅스는 모놀리식 커널 — 단, LKM으로 드라이버를 재컴파일 없이 동적 적재/제거할 수 있다.
  • 셸은 명령어 해석기이며 fork() → exec() → wait() 순서로 명령을 실행한다. 리눅스 기본 셸은 bash.
  • "리눅스"는 엄밀히 커널만을 가리킨다. 우분투·CentOS는 커널 + GNU 도구를 묶은 배포판이다.

운영체제란 무엇인가 — 자원 관리자와 추상화 계층

1급 시험은 명령어 암기가 아니라 "왜 이 명령어가 이렇게 동작하는가"를 커널 수준에서 묻는다. 그 출발점이 운영체제의 정의다.

  • 정의: 하드웨어 자원을 관리하고, 응용 프로그램에게 그 자원을 추상화하여 제공하는 소프트웨어.
  • 자원 관리(resource management): 자원은 한정돼 있다. CPU는 코어 단위로 한 번에 하나의 명령만, 메모리 용량도 정해져 있고, 디스크 I/O 속도에도 한계가 있다. 수백 개 프로그램이 마구잡이로 요구하면 시스템이 마비되므로, 운영체제가 시간적·공간적으로 나누어 공평하고 효율적으로 배분한다.
  • 추상화(abstraction): 응용 프로그래머는 SSD가 SATA인지 NVMe인지, RAM이 DDR4인지 DDR5인지 알 필요가 없다. open()·read()·write() 표준 인터페이스만 호출하면 운영체제가 실제 하드웨어를 다룬다.
자원관리 주체(커널 서브시스템)핵심 기능
CPU프로세스 스케줄러어느 프로세스를 언제 얼마나 실행할지 결정
메모리메모리 관리자(MMU 활용)가상 메모리, 페이징, 스왑
저장장치파일시스템 / 블록 I/O 계층파일·디렉터리 추상화, 디스크 스케줄링
입출력 장치디바이스 드라이버키보드·네트워크·디스크 등 하드웨어 제어
네트워크네트워크 스택(TCP/IP)패킷 송수신, 소켓 인터페이스

💡 개념: 운영체제의 4대 핵심 기능은 프로세스 관리, 메모리 관리, 파일 관리, 장치(I/O) 관리다. 여기에 사용자 인터페이스(셸/GUI)와 보안·권한 관리를 더해 6대 기능으로 보기도 한다. 1급 시험에서는 각 기능을 담당하는 커널 서브시스템과 묶어서 묻는 경우가 많다.

커널 모드와 사용자 모드 — 보호의 경계선

  • **커널(kernel)**은 하드웨어에 가장 가까이 있으면서 모든 자원에 대한 최종 권한을 갖는 핵심 코드다.
  • 모든 프로그램이 하드웨어를 직접 건드리면 악성·버그 프로그램 하나가 디스크를 지우거나 남의 메모리를 망가뜨릴 수 있다 → 현대 CPU는 **특권 수준(privilege level)**을 하드웨어 차원에서 제공한다.
  • x86에는 Ring 0~Ring 3의 보호 링이 있고, 리눅스는 그중 두 개만 사용한다.
모드링권한실행 주체
커널 모드(특권 모드)Ring 0모든 CPU 명령·메모리 영역 접근 가능커널 코드
사용자 모드(비특권 모드)Ring 3제한된 명령만 실행 가능일반 응용 프로그램
  • 사용자 모드 프로그램이 디스크에 쓰거나 네트워크로 보내려면 커널에게 "대신 해달라"고 요청해야 한다 → 이것이 **시스템 콜(system call)**이다.
# strace로 프로그램이 호출하는 시스템 콜을 직접 관찰해보자
strace -c ls /tmp
# write, read, openat, close, mmap 등 시스템 콜 통계가 출력된다
  • ls 같은 단순한 명령조차 수십 개의 시스템 콜(openat, read, write, close, stat 등)을 호출한다.
  • 사용자 모드 → 커널 모드로 전환되는 이 순간을 모드 전환(mode switch)(컨텍스트 전환의 일종)이라 하며, 약간의 오버헤드가 발생한다.

🔍 더 깊이: 시스템 콜은 단순한 함수 호출이 아니다. CPU가 특권 수준을 Ring 3에서 Ring 0으로 올리는 하드웨어 이벤트다. 과거에는 int 0x80 소프트웨어 인터럽트를 사용했지만, 현대 x86-64 리눅스는 더 빠른 syscall 명령어를 사용한다. 이 전환 비용 때문에 고성능 프로그램은 시스템 콜 횟수를 줄이려고 버퍼링을 활용한다.

커널의 종류 — 모놀리식 vs 마이크로커널

커널 설계에는 크게 두 철학이 있고, 1급 시험에 자주 출제된다.

구분모놀리식 커널마이크로커널
구성파일시스템·드라이버·네트워크 스택·스케줄러를 하나의 커널 공간(단일 주소 공간)에 넣음커널은 최소한(IPC, 기본 스케줄링, 메모리 관리)만. 파일시스템·드라이버는 사용자 공간의 별도 서비스
통신 방식함수 호출서비스 간 메시지 전달(IPC)
장점빠르다안정성·모듈성이 높다
단점한 부분의 버그가 전체 커널을 죽임, 코드가 거대해짐IPC 오버헤드로 느릴 수 있음
대표 예리눅스미닉스(MINIX), GNU Hurd
  • 리눅스는 모놀리식이지만 **적재 가능한 커널 모듈(LKM, Loadable Kernel Module)**을 지원해 마이크로커널의 장점인 모듈성을 일부 흡수했다.
  • 덕분에 드라이버를 커널 재컴파일 없이 동적으로 넣고 뺄 수 있다.
lsmod                    # 현재 적재된 커널 모듈 목록
modinfo e1000            # 특정 모듈의 정보 확인
sudo modprobe vfat       # 모듈 적재(의존성 자동 해결)
sudo rmmod vfat          # 모듈 제거
uname -r                 # 실행 중인 커널 버전 확인

📚 유래/사례: 1992년, 미닉스의 저자 앤드루 타넨바움 교수와 리누스 토르발스 사이에 "모놀리식 커널은 구식이다 vs 마이크로커널은 너무 느리다"를 둘러싼 유명한 논쟁(Tanenbaum–Torvalds debate)이 Usenet에서 벌어졌다. 타넨바움은 "리눅스는 구식 설계"라고 비판했지만, 결과적으로 모놀리식 리눅스가 세상을 지배했다. 실용성이 학문적 우아함을 이긴 사례로 자주 인용된다.

셸 — 사용자와 커널 사이의 통역사

  • **셸(shell)**은 사용자가 커널과 대화하는 통역사이자 **명령어 해석기(command interpreter)**다.
  • ls -l을 입력하면 셸이 해석 → 적절한 프로그램을 찾아 실행 → 결과를 사용자에게 보여준다.
  • 이름의 유래: 커널을 "껍질(shell)"처럼 감싸고 있다는 데서 왔다.
셸개발자/유래특징
sh (Bourne Shell)Stephen Bourne (1977)최초의 유닉스 표준 셸, 스크립트의 원형
csh (C Shell)Bill JoyC 언어 문법 차용, 히스토리·별칭 도입
ksh (Korn Shell)David Kornsh 호환 + csh 기능 통합
bash (Bourne Again Shell)Brian Fox (GNU)sh의 확장판, 리눅스 기본 셸
zshPaul Falstadbash 호환 + 강력한 자동완성
tcshcsh 확장csh + 명령행 편집
  • 리눅스의 기본 셸은 거의 항상 bash. "Bourne Again Shell"은 원조 Bourne Shell을 "다시 태어나게" 했다는 GNU 특유의 말장난이다.
echo $SHELL              # 현재 로그인 셸 확인
cat /etc/shells          # 시스템에 등록된 사용 가능한 셸 목록
chsh -s /bin/zsh         # 로그인 셸을 zsh로 변경 (/etc/passwd 갱신)
echo $0                  # 현재 실행 중인 셸 이름
  • 사용자별 기본 셸은 /etc/passwd의 마지막 필드에 기록된다.
  • 예: user:x:1000:1000:User:/home/user:/bin/bash → 맨 끝 /bin/bash가 그 사용자의 로그인 셸.

⚠️ 함정: 시험에서 "기본 셸을 변경하는 명령"으로 chsh를 묻는데, 이때 변경된 셸은 /etc/shells에 등록된 셸이어야 한다. 또한 chsh는 즉시 적용되지 않고 다음 로그인부터 반영된다. 현재 세션에서 즉시 다른 셸을 쓰려면 그냥 셸 이름(zsh)을 입력해 하위 셸을 실행하면 된다.

셸의 동작 원리 — fork와 exec

사용자가 ls를 입력하면 셸은 다음 단계를 거친다. 이 과정이 운영체제의 프로세스 생성 메커니즘을 그대로 보여준다.

  1. 파싱: 입력 문자열을 명령어와 인자로 분해하고, 와일드카드(*)·변수($HOME)·따옴표를 확장한다.
  2. fork(): 자기 자신을 복제해 자식 프로세스를 만든다. 이 시점에 부모(셸)와 자식은 동일한 코드·데이터를 가진다.
  3. exec(): 자식 프로세스가 execve() 시스템 콜로 자신의 메모리 이미지를 ls 프로그램으로 교체한다.
  4. wait(): 부모(셸)는 자식이 끝날 때까지 기다렸다가, 자식의 종료 상태를 회수한다.
  • fork-exec-wait 모델은 유닉스의 가장 우아한 설계 중 하나다 — "복제 후 교체"라는 두 단계로 모든 프로그램 실행이 이루어진다.

🔍 더 깊이: 명령어 뒤에 &를 붙이면(sleep 100 &) 셸이 wait()를 하지 않고 즉시 프롬프트를 돌려준다. 이것이 백그라운드 실행이다. 반대로 wait를 하는 동안 부모가 죽으면 자식은 **고아 프로세스(orphan)**가 되어 init(PID 1)에게 입양된다. 자식이 죽었는데 부모가 종료 상태를 회수하지 않으면 **좀비 프로세스(zombie)**가 된다.

유닉스의 탄생과 철학 — 모든 것의 뿌리

  • 1969년 미국 벨 연구소(Bell Labs)에서 켄 톰슨(Ken Thompson)과 데니스 리치(Dennis Ritchie)가 PDP-7 미니컴퓨터에서 유닉스를 만들었다. 처음에는 어셈블리로 작성.
  • 1973년 데니스 리치가 만든 C 언어로 유닉스를 다시 작성 → 고급 언어로 작성하니 다른 하드웨어로 이식(porting)이 쉬워졌고, 유닉스가 빠르게 여러 기종으로 퍼졌다.

유닉스가 후대에 남긴 가장 큰 유산은 코드가 아니라 철학이다.

  • "하나의 프로그램은 하나의 일만 잘하라" — 작은 도구들을 조합해 큰 일을 한다.
  • "모든 것은 파일이다(Everything is a file)" — 장치, 프로세스 정보, 네트워크 소켓까지 파일처럼 다룬다.
  • "파이프로 프로그램을 연결하라" — 한 프로그램의 출력을 다른 프로그램의 입력으로 연결한다.
# 작은 도구들을 파이프(|)로 연결해 복잡한 작업을 수행
cat /etc/passwd | grep "/bin/bash" | wc -l
# passwd 출력 → bash 셸 사용자만 필터 → 줄 수 세기
  • 각 도구(cat, grep, wc)는 한 가지 일만 하지만, 파이프로 엮으면 "bash 셸을 쓰는 사용자 수 세기"라는 새 작업이 만들어진다. 이것이 유닉스 철학의 정수다.

📚 유래/사례: 유닉스(UNIX)라는 이름은 그 전신인 MULTICS(Multiplexed Information and Computing Service)를 비꼰 말장난이다. MULTICS가 너무 복잡하고 거대했던 데 대한 반작용으로, 단순함을 추구한다는 의미에서 "UNICS(Uniplexed)"라 불렀고 이것이 UNIX가 되었다. 단순함을 향한 의지가 이름에 새겨진 것이다.

리눅스의 탄생 — 리누스 토르발스와 GNU

  • 1980년대: 유닉스가 상업화되어 비싸졌고 소스 코드는 닫혔다.
  • 1983년: 리처드 스톨먼(Richard Stallman)이 GNU 프로젝트를 시작 — 자유로운 유닉스 호환 운영체제를 목표로.
  • GNU는 컴파일러(gcc), 셸(bash), 핵심 유틸리티(coreutils) 등 거의 모든 부품을 완성했지만, 심장인 **커널(GNU Hurd)**은 마이크로커널 설계의 복잡함 때문에 완성되지 못했다.
  • 1991년: 핀란드 헬싱키 대학의 21세 학생 리누스 토르발스(Linus Torvalds)가 학습용 운영체제 미닉스에 만족하지 못하고 자신만의 커널을 취미로 만들기 시작. 8월 25일 comp.os.minix 뉴스그룹에 올린 글은 전설이 되었다.

"Hello everybody out there ... I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) ..."

  • "거대하거나 전문적이지 않을 것"이라던 취미 프로젝트가 세상에서 가장 널리 쓰이는 운영체제 커널이 되었다.
  • 리누스의 커널 + GNU의 도구들 = GNU/Linux. 스톨먼이 "리눅스"가 아니라 "GNU/Linux"라 불러야 한다고 주장하는 이유다 — 커널만 리누스의 것이고 나머지 시스템 도구 대부분은 GNU의 산물이기 때문.

💡 개념: 엄밀히 말하면 "리눅스"는 커널만을 가리킨다. 우리가 설치해서 쓰는 우분투·CentOS 같은 것은 리눅스 커널 + GNU 도구 + 패키지 관리자 + 응용 프로그램을 묶은 **배포판(distribution)**이다. 시험에서 "리눅스는 ( )이다"라는 빈칸에는 "커널"이 정답인 경우가 많다.

  • 라이선스 전환도 중요한 시험 사실이다: 1991년 처음에는 GPL이 아닌 자체 라이선스로 배포 → **1992년 버전 0.99부터 GPL(GNU General Public License)**로 전환.
  • 이 GPL 채택이 전 세계 개발자의 참여를 폭발적으로 끌어냈고 오늘날의 리눅스를 만들었다. 라이선스 상세는 Day 2에서 다룬다.

다음 시간에는 리눅스를 자유롭게 만든 라이선스와, 그 결과 갈라진 배포판 계열들을 살펴본다.

📖 용어

  • 커널(kernel) : 운영체제의 심장. 하드웨어 자원을 직접 다루는 최고 권한의 핵심 코드.
  • 시스템 콜(system call) : 사용자 프로그램이 커널에게 특권 작업을 대신 해달라고 요청하는 창구.
  • 모드 전환(mode switch) : CPU 권한이 사용자 모드(Ring 3)에서 커널 모드(Ring 0)로 올라가는 순간. 비용이 든다.
  • 모놀리식 커널 : 파일시스템·드라이버 등 거의 모든 기능을 커널 하나에 몰아넣은 설계. 리눅스가 여기 속한다.
  • 마이크로커널 : 커널을 최소한만 남기고 나머지를 사용자 공간 서비스로 분리한 설계. 안정적이지만 느릴 수 있다.
  • LKM(적재 가능한 커널 모듈) : 커널을 다시 컴파일하지 않고도 넣고 뺄 수 있는 부품. lsmod·modprobe로 다룬다.
  • 셸(shell) : 사용자가 입력한 명령어를 해석해 실행해 주는 프로그램. 리눅스 기본은 bash.
  • fork()/exec() : 프로세스를 복제하는 호출과, 복제된 프로세스를 다른 프로그램으로 갈아끼우는 호출.
  • 좀비 프로세스 : 자식이 끝났는데 부모가 종료 상태를 회수하지 않아 흔적만 남은 프로세스.
  • 배포판(distribution) : 리눅스 커널에 GNU 도구·패키지 관리자·응용 프로그램을 묶어 설치 가능하게 만든 꾸러미.

📝 연습 문제

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

문제 1

운영체제에서 사용자 모드의 프로그램이 디스크 입출력이나 네트워크 통신 같은 특권 작업을 수행하기 위해 커널에 요청하는 메커니즘은 무엇인가?

문제 2

리눅스 커널의 설계 방식과 그 특징에 대한 설명으로 가장 옳은 것은?

문제 3

셸이 사용자가 입력한 명령어 `ls`를 실행할 때 거치는 유닉스의 표준 프로세스 생성 모델 순서로 옳은 것은?

문제 4

다음 중 리눅스의 기본 로그인 셸이며 그 이름이 "Bourne Again Shell"의 약자인 것은?

문제 5

"모든 것은 파일이다(Everything is a file)"라는 유닉스 철학에 대한 설명으로 옳지 않은 것은?

문제 6

리눅스의 역사에 대한 설명으로 옳은 것은?

다음 자유 소프트웨어와 배포판: 라이선스가 만든 생태계Week 1 · Day 2

이 페이지

  • 핵심 정리
  • 운영체제란 무엇인가 — 자원 관리자와 추상화 계층
  • 커널 모드와 사용자 모드 — 보호의 경계선
  • 커널의 종류 — 모놀리식 vs 마이크로커널
  • 셸 — 사용자와 커널 사이의 통역사
  • 셸의 동작 원리 — fork와 exec
  • 유닉스의 탄생과 철학 — 모든 것의 뿌리
  • 리눅스의 탄생 — 리누스 토르발스와 GNU
  • 용어
  • 연습 문제