역자 서문 ... 6 서문 ... 15 1장 소개 리눅스와 다른 유닉스 계열 커널 비교 ... 24 하드웨어 의존성 ... 27 리눅스 버전 ... 29 운영체제의 기초 개념 ... 29 유닉스 파일 시스템 개요 ... 34 유닉스 커널의 개요 ... 41 2장 메모리 주소 지정 메모리 주소 ... 57 하드웨어 세그먼테이션 ... 58 리눅스에서의 세그먼테이션 ... 63 하드웨어 페이징 ... 67 리눅스 페이징 ... 78 3장 프로세스 프로세스와 경량 프로세스. 스레드 ... 99 프로세스 디스크립터 ... 101 프로세스 전환 ... 121 프로세스 생성 ... 133 프로세스 끝내기 ... 144 4장 인터럽트와 예외 인터럽트 신호의 역할 ... 150 인터럽트와 예외 ... 151 예외 핸들러와 인터럽트 핸들러의 중첩 실행 ... 160 인터럽트 디스크립터 테이블 초기화 ... 162 예외 처리 ... 165 인터럽트 처리 ... 168 소프트 IRQ와 소작업 ... 187 작업 큐 ... 195 인터럽트와 예외에서 복귀 ... 198 5장 커널 동기화 커널이 요청을 서비스하는 방법 ... 205 동기화 원시 기법 ... 209 커널 자료 구조로의 접근 동기화 ... 232 경쟁 조건 방지의 예 ... 238 6장 타이밍 측정 클록와 타이머 회로 ... 244 리눅스 시간 관리 구조 ... 248 시간과 날짜 갱신 ... 256 시스템 통계 갱신 ... 257 소프트웨어 타이머와 지연 함수 ... 260 타이밍 측정 관련 시스템 콜 ... 268 7장 프로세스 스케줄링 스케줄링 정책 ... 275 스케줄링 알고리즘 ... 279 스케줄러가 사용하는 자료 구조 ... 283 스케줄러가 사용하는 함수 ... 286 멀티프로세서 시스템에서 실행 큐 부하 조절 ... 301 스케줄링 관련 시스템 콜 ... 306 8장 메모리 관리 페이지 프레임 관리 ... 311 메모리 영역 관리 ... 339 불연속적인 메모리 영역 관리 ... 358 9장 프로세스 주소 공간 프로세스의 주소 공간 ... 370 메모리 디스크립터 ... 371 메모리 구역 ... 375 페이지 폴트 예외 핸들러 ... 394 프로세스 주소 공간의 생성과 제거 ... 409 힙 관리 ... 412 10장 시스템 콜 POSIX API와 시스템 콜 ... 415 시스템 콜 핸들러와 서비스 루틴 ... 416 시스템 콜로의 진입과 복귀 ... 418 매개 변수 전달 ... 425 커널 래퍼 루틴 ... 434 11장 시그널 시그널의 역할 ... 437 시그널 발생 ... 449 시그널 배달 ... 455 시그널 처리 관련 시스템 콜 ... 466 12장 가상 파일 시스템 가상 파일 시스템의 역할 ... 473 VFS 자료 구조 ... 479 파일 시스템 유형 ... 496 파일 시스템 다루기 ... 499 경로명 탐색 ... 510 VFS 시스템 콜 구현 ... 519 파일 락킹 ... 524 13장 입출력 아키텍처와 디바이스 드라이버 입출력 아키텍처 ... 533 디바이스 드라이버 모델 ... 539 장치 파일 ... 548 디바이스 드라이버 ... 552 문자 장치 드라이버 ... 564 14장 블록 장치 드라이버 블록 장치 다루기 ... 571 일반 블록 계층 ... 577 입출력 스케줄러 ... 582 블록 장치 드라이버 ... 594 블록 장치 파일 열기 ... 603 15장 페이지 캐시 페이지 캐시 ... 608 페이지 캐시에 블록 저장하기 ... 619 디스크에 더티 페이지 쓰기 ... 629 sync(), fsync(), fdatasync() 시스템 콜 ... 635 16장 파일 접근 파일 읽기와 쓰기 ... 638 메모리 매핑 ... 659 직접 입출력 전송 ... 669 비동기 입출력 ... 671 17장 페이지 프레임 회수 페이지 프레임 회수 알고리즘 ... 677 역 매핑 ... 681 PFRA 구현 ... 689 스와핑 ... 710 18장 EXT2, EXT3 파일 시스템 Ext2의 일반적인 특징 ... 735 Ext2 디스크 자료 구조 ... 738 Ext2 메모리 자료 구조 ... 746 Ext2 파일 시스템 생성 ... 749 Ext2 메소드 ... 751 Ext2 디스크 공간 관리 ... 753 Ext3 파일 시스템 ... 762 19장 프로세스 통신 파이프 ... 772 FIFO ... 782 시스템 V IPC ... 784 POSIX 메시지 큐 ... 799 20장 프로그램 실행 실행 파일 ... 802 실행 파일 형식 ... 816 실행 도메인 ... 818 exec 계열 함수 ... 819 부록 A 시스템 시작 선사 시대 : BIOS ... 825 고대 시대 : 부트 로더 ... 827 중세 시대 : setup() 함수 ... 828 르네상스 : startup_32() 함수 ... 830 근대 시대 : start_kernel() 함수 ... 831 부록 B 모듈 모듈로 만들 것인가 말 것인가 ... 833 모듈 구현 ... 835 모듈의 링크와 언링크 ... 838 요청할 때 모듈 링크하기 ... 840 참고문헌 ... 843 찾아보기 ... 847