목차
역자 서문 ... 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
닫기