2강 / 20강

커널과 셸 — 알맹이와 껍데기

전원 버튼부터 프롬프트가 뜨기까지

커널과 셸 — 알맹이와 껍데기
커널은 알맹이, 셸은 그 겉을 감싼 껍데기입니다.

"운영체제"라고 뭉뚱그려 불렀지만, 안을 열어 보면 층이 나뉘어 있습니다. 호두를 떠올려 보세요. 딱딱한 껍데기(shell)가 있고, 그 안에 알맹이(kernel)가 있죠. 리눅스를 만든 사람들도 똑같이 이름을 붙였습니다.

4👤 사용자와 앱

여러분, 그리고 브라우저·쇼핑몰

3🐚 셸 (bash)

내 말을 커널의 말로 옮겨 주는 통역사

2🌰 커널 (Linux)

CPU·메모리·디스크를 진짜로 주무르는 알맹이

1⚙️ 하드웨어

CPU · RAM · SSD · 랜카드

커널은 하드웨어를 직접 만지는 유일한 프로그램입니다. 너무 힘이 세서 아무나 말을 걸 수 없어요. 그래서 우리는 셸이라는 통역사를 통해 부탁합니다.

전원을 누르면 벌어지는 일

버튼을 누르고 프롬프트가 뜨기까지, 순식간에 다섯 단계가 지나갑니다. 아래에서 순서를 직접 맞춰 보세요.

부팅 순서 맞추기 — 다섯 조각을 제자리에 놓아 보세요
불러오는 중…

커널이 정말 있는지 눈으로 확인해 봅시다. 커널은 /boot 폴더에 파일로 들어 있습니다.

커널 파일과 지금 돌고 있는 커널의 버전
bash 내 가상 Ubuntu 서버에서 실행

vmlinuz-6.8.0-45-generic — 이 한 덩어리가 리눅스 커널입니다. 부팅할 때 이 파일이 메모리로 올라가고, 컴퓨터가 꺼질 때까지 계속 돌아갑니다.

그럼 셸은요? 지금 여러분과 대화하고 있는 그 셸도 하나의 프로그램 파일입니다.

지금 쓰고 있는 셸이 어떤 파일인지
bash 내 가상 Ubuntu 서버에서 실행

커널이 하는 일을 한 문장으로

앱이 "파일을 읽고 싶다"고 하면, 커널에게 시스템 콜(system call)이라는 특별한 부탁을 보냅니다. 커널만이 디스크를 만질 수 있으므로, 앱은 반드시 이 통로를 거쳐야 합니다.

앱이 직접 한다면 😱
앱 → 디스크 3번 트랙 512번 섹터
    를 직접 읽는다
다른 앱의 파일도 마음대로 읽을 수 있음
시스템 콜을 통하면 😊
앱 → 커널: "memo.txt 읽어 주세요"
커널: 권한 확인 → 읽어서 건네줌
커널이 권한을 검사한다
🤔 확인 문제
커널과 셸의 관계를 바르게 설명한 것은?
🤔 확인 문제
앱이 파일을 읽을 때 반드시 커널을 거쳐야 하는 이유로 가장 알맞은 것은?