譯者序
前言
第一部分 Linux內核源代碼
arch/i386/kemel/entry.S
arch/i386/kernel/init_task.c
arch/i386/kernel/irq.c
arch/i386/kernel/irq.h
arch/i386/kernel/process.c
arch/i386/kernel/signal.c
arch/i386/kernel/smp.c
arch/i386/kernel/time.c
arch/i386/kernel/traps.c
arch/i386/lib/delay.c
arch/i386/mm/fault.c
arch/i386/mm/init.c
fs/binfmt-elf.c
fs/binfmt_java.c
fs/exec.c
include/asm-generic/smplock.h
include/asm-i386/atomic.h
include/asm-i386/current.h
include/asm-i386/dma.h
include/asm-i386/elf.h
include/asm-i386/hardirq.h
include/asm-i386/page.h
include/asm-i386/pgtable.h
include/asm-i386/ptrace.h
include/asm-i386/semaphore.h
include/asm-i386/shmparam.h
include/asm-i386/sigcontext.h
include/asm-i386/siginfo.h
include/asm-i386/signal.h
include/asm-i386/smp.h
include/asm-i386/softirq.h
include/asm-ie86/spinlock.h
include/asm-i386/system.h
include/asm-i386/uaccess.h
include/linux/binfmts.h
include/linux/capability.h
include/linux/elf.h
include/linux/elfcore.h
include/linux/interrupt.h
include/linux/kernel.h
include/linux/kamel_stat.h
include/linux/limits.h
include/linux/mm.h
include/linux/module.h
include/linux/msg.h
include/linux/personality.h
include/linux/reboot.h
include/linux/resource.h
include/linux/sched.h
include/linux/sem.h
include/linux/shm.h
include/linux/signal.h
include/linux/slab.h
include/linux/smp.h
include/linux/smp_lock.h
include/linux/swap.h
include/linux/swapctl.h
include/linux/sysctl.h
include/linux/tasks.h
include/linux/time.h
include/linux/timer.h
inc1ude/linux/times.h
include/linux/tqueue.h
include/linux/wait.h
init/main.c
init/version.c
ipc/msg.c
ipc/sem.c
ipc/shm.c
ipc/util.c
kernel/capability.c
kernel/dma.c
kernel/exec_domain.c
kernel/exit.c
kernel/fork.c
kernel/info.c
kernel/itimer.c
kernel/kmod.c
kernel/module.c
kernel/panic.c
kernel/printk.c
kernel/sched.c
kernel/signal.c
kernel/softirq.c
kernel/sys.c
kernel/sysctl.c
kernel/time.c
mm/memory.c
mmj/mlock.c
mm/mmap.c
mm/mprotect.c
mm/mremap.c
mm/page_alloc.c
mm/page_io.e
mm/slab.c
mm/swap.c
mm/swap_state.c
mm/swapfile.c
mm/vmalloc.c
mm/vmscan.c
第二部分 Linux內核源代碼分析
第1章 Linux簡介
1.1 Linux和Unix的簡明歷史
l.2 GNU通用公共許可證
1.3 Linux開發(fā)過程
第2章 代碼初識
2.1 Linux內核源程序的部分特點
2.1.1 gCC特性的使用
2.1.2 內核代碼習慣用語
2.1.3 減少#if和#ifdeng使用
2.2 代碼樣例
2.2.1 printk
2.2.2 等待隊列
2.2.3 內核模塊
2.3 配置與編譯內核
2.3.1 配置內核
2.3.2 構建內核
2.3.3 備份的重要性
2.3.4 發(fā)布你的改進
第3章 內核體系結構概述
3.1 內核設計目標
3.1.1 清晰性
3.1.2 兼容性
3.1.3 可移植性
3.1.4 健壯性和安全性
3.1.5 速度
3.2 內核體系結構初識
3.3 內核體系結構的深入了解
3.4 Linux內核的類型
3.5 設計和實現(xiàn)的關系
3.5.1 內核源程序目錄結構
3.5.2 體系結構相關和體系結構無關的代碼
第4章 系統(tǒng)初始化
4.1 引導PC機
4.2 初始化Linux內核
4.2.1 BogoMIPS
4.2.2 分析內核選項
4.3 init
第5章 系統(tǒng)調用
5.1 什么是系統(tǒng)調用
5.2 如何激活系統(tǒng)調用
5.2.1 system_call
5.2.2 lcall7
5.3 系統(tǒng)調用樣例
第6章 信號、中斷和時間
6.1 鎖的概述
6.2 信號
6.2.1 數(shù)據結構
6.2.2 應用函數(shù)
6.2.3 傳送信號
6.2.4 其他有關信號的函數(shù)
6.2.5 內核如何區(qū)分實時信號和非實時信號
6.3 中斷
6.3.1 中斷請求:IRQ
6.3.2 下半部分
6.3.3 數(shù)據結構
6.3.4 操作和IRQ
6.3.5 硬件中斷處理程序和下半部分
6.4 時間
第7章 進程和線程
7.1 調度和時間片
7.2 實時進程
7.3 優(yōu)先級
7.4 進程ID:PID
7.5 引用計數(shù)
7.6 權能
7.7 進程在內核中是如何表示的
7.8 進程來源:fork和__clone
7.9 運行新程序
7.10 可執(zhí)行格式
7.11 調度及它們是如何運行的
7.11.1 調度函數(shù)和調度策略
7.11.2 計算goodness值
7.11.3 非實時優(yōu)先級
7.11.4 實時優(yōu)先級
7.12 遵守限制
7.12.1 權能
7.12.2 用戶ID和組ID
7.12.3 資源限制
7.13 進程的結束
7.13.1 exit
7.13.2 Wait
第8章 內存
8.1 虛擬內存
8.1.1 交換和分頁
8.1.2 地址空間
8.1.3 內存管理單元
8.1.4 頁目錄和頁表
8.1.5 轉換后備緩存
8.1.6 段
8.2 進程的內存組織
8.2.1 struct vm_area_struct
8.2.2 struct vm_operations_truct
8.2.3 struct mm_struct
8.2.4 VMA的操作
8.3 分頁
8.3.1 頁面保護詳述
8.3.2 寫拷貝
8.3.3 頁面錯誤
8.3.4 頁面調出
8.4 交換設備
8.5 內存映射mmap
8.6 用戶空間和內核空間的動態(tài)內存
8.6.1 brk
8.6.2 vmalloc和vfree
8.7 主存儲器信息轉儲
第9章 System V IPC
9.1 消息隊列
9.2 信號量
9.3 共享內存
第10章 對稱多處理
10.1 并行程序設計概念及其原語
10.1.1 原子操作
10.1.2 test-and-set
10.1.3 信號量
10.1.4 自旋鎖
10.2 APIC和CPU-To-CPU通信
10.3 SMP支持如何影響內核
10.3.1 對調度的影響
10.3.2 smp_local_timer_interrupt
10.3.3 lock_kernel和unlock_kernel
10.3.4 softirq_trylock
10.3.5 cli和sti
10.3.6 irq_enter和irq_exit
第11章 可調內核參數(shù)
11.1 /proc/sys支持
11.2 sysctl系統(tǒng)調用
附錄A Linux 2.4
附錄B GNU通用公共許可證
附錄C 光盤上的內容及系統(tǒng)需求