Перейти к содержимому

운영체제 기초 | 프로세스와 스케쥴러,가상메모리,시스템 콜과 파일

Codedeck

0:00 / 0:00

운영체제 기초 | 프로세스와 스케쥴러,가상메모리,시스템 콜과 파일

21 просмотр · 3 дн. назад
Codedeck
1,22 тыс. подписчиков
21 просмотр · 3 дн. назад
명령 한 줄이 프로그램이 되어 실행되기까지, 그 아래에서 운영체제 커널은 어떤 일을 할까요? 프로세스 생성부터 CPU 스케줄링, 가상 메모리, 시스템 콜, 파일 읽기까지. 「운영체제 안쪽」 시리즈 전편(0~3편)을 하나로 모았습니다. 설명자와 신입의 2인 대화 형식으로, 신입이 궁금한 점을 질문하고 설명자가 애니메이션과 실제 리눅스 실험을 통해 단계별로 풀어 갑니다. 단순히 개념을 설명하는 데 그치지 않고, 실제 Linux 환경에서 직접 측정한 수치와 터미널 출력으로 운영체제 내부 동작을 확인합니다. ━━━━━━━━━━━━━━━━━━━━ 📚 시리즈 구성 0편. 오버뷰 — 프로그램이 실행되기까지 명령 한 줄이 실제 프로그램으로 실행되는 전체 과정을 살펴봅니다. • 시스템 콜 — 사용자 프로그램이 커널에 부탁하는 창구 • fork·execve — 실행 파일이 프로세스가 되는 과정 • 스케줄러 — CPU를 사용할 순서를 정하는 방법 • 가상 메모리 — 프로세스가 사용하는 메모리의 지도 1편. 프로세스와 스케줄러 — 누가 CPU를 받는가 여러 프로그램이 동시에 실행될 때 CPU를 어떻게 나눠 사용하는지 알아봅니다. • 프로세스 상태 다섯 가지 — 생성·실행 가능·실행 중·대기·종료 • 선점과 컨텍스트 스위치의 원리 • Linux EEVDF 스케줄러의 동작 방식 • nice 값에 따른 CPU 점유율 실측 🔬 실측 결과 코어 고정 5초 경합 실험 CPU 시간 4.90초 vs 0.07초 점유율 98.6% : 1.4% 2편. 가상 메모리 — 없는 페이지의 비밀 프로그램이 사용하는 가상 주소가 실제 메모리와 연결되는 과정을 살펴봅니다. • 가상 주소와 물리 주소 • 페이지 테이블과 TLB • 페이지 폴트 — 오류가 아니라 정상적인 처리 절차 • mmap과 지연 적재 • 스왑이 없는 환경과 OOM 킬러 🔬 실측 결과 65,536개 페이지를 모두 접근했지만 마이너 페이지 폴트는 4,099회. fault-around로 한 번의 폴트 처리에서 주변 페이지까지 함께 연결되는 현상을 확인합니다. 3편. 시스템 콜과 파일 — read 한 번의 여정 프로그램에서 read()를 호출했을 때 커널 내부에서 벌어지는 일을 따라갑니다. • 유저 모드와 커널 모드 전환 • 파일 디스크립터(fd)와 VFS • 페이지 캐시 히트와 미스 • 캐시 미스에서 저장장치 접근까지 • strace, vDSO, mincore 실험 🔬 실측 결과 • cat 실행 시 시스템 콜 78회 • strace에 나타나지 않는 clock_gettime(vDSO) • mincore 페이지 상주율 0.0% → 100.0% ━━━━━━━━━━━━━━━━━━━━ 🧪 실험 환경 및 검증 기준 • OS: Ubuntu 24.04.5 • Kernel: Linux 7.0.0-39-generic • CPU: 2 vCPU • RAM: 7.9 GiB • 페이지 크기: 4 KiB 영상의 측정 수치는 위 환경에서 직접 얻은 실측 원값입니다. 터미널 출력은 측정 당시의 원문 그대로 표시했습니다. 스케줄러 이름의 로컬 조회, OOM 킬러의 실제 동작 등 직접 측정하거나 확인하지 못한 부분은 영상에서 해당 전제와 한계를 별도로 설명합니다. EEVDF 설명은 kernel.org 공식 문서를 기준으로 합니다. ━━━━━━━━━━━━━━━━━━━━ ⏱️ 챕터 타임라인 00:00 0편 오버뷰 — 프로그램이 실행되기까지 00:44 부탁의 창구 — 시스템 콜 01:33 파일에서 프로세스로 02:25 차례를 받는 일 — 스케줄러 03:32 실행과 마무리 04:49 1편 프로세스와 스케줄러 — 누가 CPU를 받는가 05:45 상태 다섯 칸 06:53 선점과 컨텍스트 스위치 07:37 자발·비자발 — 스위치 실측 08:35 차례의 기준 — EEVDF 09:33 nice와 점유율 실측 10:42 종료와 정리 11:30 2편 가상 메모리 — 없는 페이지의 비밀 12:12 가상 주소와 페이지 13:12 페이지 테이블과 TLB 14:31 페이지 폴트 — 고장이 아닌 절차 15:38 mmap과 폴트 카운트 실측 17:28 스왑 — 없는 것이 만드는 차이 18:20 OOM 킬러와 정리 19:43 3편 시스템 콜과 파일 — read 한 번의 여정 20:19 두 개의 모드 — 유저 모드와 커널 모드 21:32 fd와 VFS — 파일을 찾는 길 23:00 페이지 캐시 — 히트면 여기서 끝 24:07 캐시 미스 — 디스크까지의 긴 여정 25:25 실측 — 세 가지로 재 보기 27:41 정리 — 시리즈를 돌아보며 ━━━━━━━━━━━━━━━━━━━━ 💡 이런 분들에게 추천합니다. • 운영체제와 리눅스 커널을 처음 공부하는 개발자 • 프로세스, 스레드, 스케줄러의 원리가 궁금한 분 • 가상 메모리와 페이지 폴트를 제대로 이해하고 싶은 분 • 시스템 콜과 파일 I/O 내부 동작을 알고 싶은 분 • 개념뿐 아니라 실제 리눅스 실험 결과까지 확인하고 싶은 분 #운영체제 #리눅스 #Linux #커널 #시스템콜 #가상메모리 #개발공부