운영체제 기초 | 프로세스와 스케쥴러,가상메모리,시스템 콜과 파일
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 #커널 #시스템콜 #가상메모리 #개발공부