IT 로드맵의 하드웨어 & OS 구역이다.

터미널에 ls 를 치면 목록이 나오고, rm 을 치면 파일이 사라진다. 그 사이에 커널은 프로세스를 복제하고, 권한을 확인하고, 디스크에서 읽어 메모리에 얹는다. 그 일들을 분야로 가르고, 분야마다 실제로 궁금한 것을 하나씩 떼어 놓았다.

그 커널이 만지는 메모리 · 디스크 · 랜 카드가 실제로 무엇인지는 부품에서 본다. 부품은 커널 아래층이라 이 페이지 맨 앞에 둔다.


부품 아홉 — 이 PC의 실제 하드웨어를 부품마다 한 페이지에 모은다

부품 하나에 카드 한 장이고, 누르면 그 부품의 페이지가 나온다. 비유 없이 있는 그대로 본다 — 그 부품이 무엇을 하는지(움직임 그림과 함께), 그리고 이 PC에서 잰 값이다. 이 PC에 없는 부품(HDD)도 「없다」를 잰 값으로 두고 같은 자리에 둔다. 부품 속을 깊게 파 내려간 것(RAM부터)도 그 페이지에 쌓는다.

값은 tools/hardware-snapshot.ps1이 재서 _data/hardware-snapshot.json에 적은 것이다. GitHub Pages는 이 PC를 직접 읽지 못해서 실시간 값은 아니고, 다시 재고 커밋하면 화면이 바뀐다.

LENOVO ThinkPad E14 Gen 6에서 2026-10-11 11:04에 잰 값이다. 다시 재려면 pwsh tools/hardware-snapshot.ps1

처음에는 이 부품들을 세계관의 비유(땅 · 작업대 · 서고)로 그렸다. 부품마다 땅에 자리를 주다가 메인보드 · 파워에서 비유가 컴퓨터 배치도가 되어 가서 2026-10-10에 그만뒀다. 세계관은 코드가 겪는 일을 그리는 무대로만 쓴다.


켜면 일어나는 일 — 부품이 깨어나고 커널이 올라오기까지

부품과 커널 분야 사이에 놓이는 일이다. 전원 버튼을 누르면 부품이 하나씩 깨어나고, 펌웨어가 커널을 RAM에 올리고, 그다음에야 아래 분야들이 시작된다. 이 PC는 대부분 처음부터가 아니라 저장해 둔 상태에서 깨어난다는 것도 거기서 본다.


왜 「1단계 → 5단계」가 아니라 「분야 × 항목」인가

처음에는 로그인 → 명령 → 파일 → 메모리 → 네트워크 다섯 단계로 늘어놓았다. 버렸다. 두 가지가 어긋나서다.

첫째, 다섯은 순서가 아니다. 메모리를 알아야 네트워크를 볼 수 있는 것이 아니고, 네트워크를 봤다고 「다 읽었다」가 되지도 않는다. 그런데 번호를 붙이는 순간 화면은 「이전 · 다음」과 「STEP 3 / 5」를 그리고, 그건 없는 순서를 있다고 말하는 것이다.

둘째, 한 단계가 너무 크다. 「파일」 하나에 만들기 · 읽기 · 지우기 · 권한이 전부 들어가 있었다. 그러면 화면 하나가 네 가지를 답해야 하고, 무엇 하나 제대로 못 본다. 실제로 궁금한 것은 「파일」이 아니라 「rm 을 했는데 그 파일을 읽던 프로그램은 어떻게 되나」 같은 질문 하나다.

그래서 분야는 순서가 없고, 분야 안의 항목은 순서가 있다. 파일을 만들어야 지우고, 소켓을 만들어야 연결을 받는다. 번호는 그 안에서만 뜻이 있다.


커널이 하는 일은 분야 5개 · 항목 17개로 나눈다

Study · 운영체제는 항목마다 버튼으로 한 스텝씩 넘기며 본다. 글로 읽고 끝나는 것이 아니라 그 자리에서 값이 움직이는 것을 본다.

소스는 Linux 7.3-rc4를 저장소(open-source/os/linux)에 그대로 받아 두고 읽는다. 리눅스에서 돌려 봐야 아는 것은 도커로 잰다(tools/os-study).

분야를 누르면 그 분야의 항목이 순서대로 카드로 나온다.

근거가 두 갈래다. 장면에 붙은 파일:줄은 저장소에 받아 둔 Linux 7.3-rc4 소스를 직접 열어 확인한 것이고(장면 17개에 137곳), 수치는 도커 우분투 24.04 · 커널 6.6.87.2 에서 돌려 잰 것이다. 둘의 커널이 다르므로 섞어 읽으면 안 된다 — 줄 번호를 6.6 에서 찾으면 안 맞고, 수치를 7.3-rc4 의 값이라고 말해도 안 된다. 무엇을 어떻게 쟀는지는 항목마다 「어떻게 확인했나」에 있고, 다시 재려면 tools/os-study 를 돌린다.


분야를 잇는 개념이 하나 있다 — 파일 디스크립터

다섯 분야를 따로 두었지만 10번과 15번은 같은 것을 말한다. 프로세스가 파일을 열면 번호 하나를 받고(10번), 소켓을 만들어도 같은 종류의 번호를 받는다(15번). 그래서 read 와 write 가 파일에도 소켓에도 똑같이 통한다.

이게 「분야가 다섯인데 왜 따로 안 놀고 한 덩어리로 읽히나」의 답이다. 프로세스 · 파일 · 네트워크가 fd 표 하나를 사이에 두고 만난다.


같이 읽는 글

같은 일을 자바 쪽에서 보면 이렇게 보인다. 층이 다를 뿐 같은 장면이다.


아직 안 한 것

이 구역의 나머지 자리다. 지금은 비어 있고, 공부하면서 채운다.

  • 디스크 스케줄러 — 7번은 페이지 캐시까지만 본다. 캐시에 없을 때 실제로 디스크에 가는 길
  • 시그널 — Ctrl+C 와 kill 이 하는 일. kill 이 왜 「죽이기」가 아닌지
  • 컨테이너 — cgroup 과 네임스페이스. 도커가 무엇으로 가두는지. 칸막이가 이 구역의 다섯 분야와 어떻게 겹치는지는 데브옵스에 표로 먼저 적어 두었다
  • 인터럽트 — 하드웨어가 CPU 를 붙잡는 방법. 17번의 랜 카드가 여기에 닿는다

← IT 로드맵으로

최상단으로 이동했습니다!
확대 이미지

조회수: - · -

업데이트: