本文共 4669 字,大约阅读时间需要 15 分钟。
第一部分 Linux 内核源代码
arch/i386/kernel/entry.S 2 arch/i386/kernel/init_task.c 8 arch/i386/kernel/irq.c 8 arch/i386/kernel/irq.h 19 arch/i386/kernel/process.c 22 arch/i386/kernel/signal.c 30 arch/i386/kernel/smp.c 38 arch/i386/kernel/time.c 58 arch/i386/kernel/traps.c 65 arch/i386/lib/delay.c 73 arch/i386/mm/fault.c 74 arch/i386/mm/init.c 76 fs/binfmt-elf.c 82 fs/binfmt_java.c 96 fs/exec.c 98 include/asm-generic/smplock.h 107 include/asm-i386/atomic.h 108 include/asm-i386/current.h 109 include/asm-i386/dma.h 109 include/asm-i386/elf.h 113 include/asm-i386/hardirq.h 114 include/asm-i386/page.h 114 include/asm-i386/pgtable.h 115 include/asm-i386/ptrace.h 122 include/asm-i386/semaphore.h 123 include/asm-i386/shmparam.h 124 include/asm-i386/sigcontext.h 125 include/asm-i386/siginfo.h 125 include/asm-i386/signal.h 127 include/asm-i386/smp.h 130 include/asm-i386/softirq.h 132 include/asm-i386/spinlock.h 133 include/asm-i386/system.h 137 include/asm-i386/uaccess.h 139 include/linux/binfmts.h 146 include/linux/capability.h 147 include/linux/elf.h 150 include/linux/elfcore.h 156 include/linux/interrupt.h 157 include/linux/kernel.h 158 include/linux/kernel_stat.h 159 include/linux/limits.h 160 include/linux/mm.h 160 include/linux/module.h 164 include/linux/msg.h 168 include/linux/personality.h 169 include/linux/reboot.h 169 include/linux/resource.h 170 include/linux/sched.h 171 include/linux/sem.h 179 include/linux/shm.h 180 include/linux/signal.h 181 include/linux/slab.h 184 include/linux/smp.h 184 include/linux/smp_lock.h 185 include/linux/swap.h 185 include/linux/swapctl.h 187 include/linux/sysctl.h 188 include/linux/tasks.h 194 include/linux/time.h 194 include/linux/timer.h 195 include/linux/times.h 196 include/linux/tqueue.h 196 include/linux/wait.h 198 init/main.c 198 init/version.c 212 ipc/msg.c 213 ipc/sem.c 218 ipc/shm.c 227 ipc/util.c 236 kernel/capability.c 237 kernel/dma.c 240 kernel/exec_domain.c 241 kernel/exit.c 242 kernel/fork.c 248 kernel/info.c 255 kernel/itimer.c 255 kernel/kmod.c 257 kernel/module.c 259 kernel/panic.c 270 kernel/printk.c 271 kernel/sched.c 275 kernel/signal.c 295 kernel/softirq.c 307 kernel/sys.c 307 kernel/sysctl.c 318 kernel/time.c 330 mm/memory.c 335 mm/mlock.c 345 mm/mmap.c 348 mm/mprotect.c 358 mm/mremap.c 361 mm/page_alloc.c 363 mm/page_io.c 368 mm/slab.c 372 mm/swap.c 394 mm/swap_state.c 395 mm/swapfile.c 398 mm/vmalloc.c 406 mm/vmscan.c 409 第二部分 Linux 内核源代码分析 第1章 Linux简介 416 1.1 Linux和Unix的简明历史 416 1.2 GNU通用公共许可证 418 1.3 Linux开发过程 419 第2章 代码初识 421 2.1 Linux内核源程序的部分特点 421 2.1.1 gcc特性的使用 421 2.1.2 内核代码习惯用语 422 2.1.3 减少#if和#ifdef的使用 423 2.2 代码样例 424 2.2.1 printk 424 2.2.2 等待队列 429 2.2.3 内核模块 432 2.3 配置与编译内核 434 2.3.1 配置内核 434 2.3.2 构建内核 436 2.3.3 备份的重要性 436 2.3.4 发布你的改进 437 第3章 内核体系结构概述 439 3.1 内核设计目标 439 3.1.1 清晰性 439 3.1.2 兼容性 439 3.1.3 可移植性 440 3.1.4 健壮性和安全性 440 3.1.5 速度 441 3.2 内核体系结构初识 441 3.3 内核体系结构的深入了解 442 3.4 Linux 内核的类型 444 3.5 设计和实现的关系 446 3.5.1 内核源程序目录结构 446 3.5.2 体系结构相关和体系结构无关的 代码 450 第4章 系统初始化 451 4.1 引导PC机 451 4.2 初始化Linux内核 452 4.2.1 BogoMIPS 455 4.2.2 分析内核选项 456 4.3 init 459 第5章 系统调用 462 5.1 什么是系统调用 462 5.2 如何激活系统调用 463 5.2.1 system_call 464 5.2.2 lcall7 468 5.3 系统调用样例 469 第6章 信号、中断和时间 474 6.1 锁的概述 474 6.2 信号 474 6.2.1 数据结构 475 6.2.2 应用函数 476 6.2.3 传送信号 480 6.2.4 其他有关信号的函数 489 6.2.5 内核如何区分实时信号和非 实时信号 491 6.3 中断 492 6.3.1 中断请求:IRQ 492 6.3.2 下半部分 493 6.3.3 数据结构 493 6.3.4 操作和IRQ 496 6.3.5 硬件中断处理程序和下半部分 499 6.4 时间 502 第7章 进程和线程 505 7.1 调度和时间片 505 7.2 实时进程 506 7.3 优先级 506 7.4 进程ID:PID 506 7.5 引用计数 506 7.6 权能 507 7.7 进程在内核中是如何表示的 508 7.8 进程来源:fork和_ _clone 511 7.9 运行新程序 514 7.10 可执行格式 517 7.11 调度及它们是如何运行的 519 7.11.1 调度函数和调度策略 519 7.11.2 计算goodness值 522 7.11.3 非实时优先级 523 7.11.4 实时优先级 525 7.12 遵守限制 526 7.12.1 权能 526 7.12.2 用户ID和组ID 529 7.12.3 资源限制 530 7.13 进程的结束 530 7.13.1 exit 530 7.13.2 wait 532 第8章 内存 535 8.1 虚拟内存 535 8.1.1 交换和分页 536 8.1.2 地址空间 537 8.1.3 内存管理单元 537 8.1.4 页目录和页表 538 8.1.5 转换后备缓存 540 8.1.6 段 540 8.2 进程的内存组织 541 8.2.1 struct vm_area_struct 541 8.2.2 struct vm_operations_struct 542 8.2.3 struct mm_struct 542 8.2.4 VMA的操作 542 8.3 分页 544 8.3.1 页面保护详述 544 8.3.2 写拷贝 545 8.3.3 页面错误 546 8.3.4 页面调出 551 8.4 交换设备 552 8.5 内存映射mmap 556 8.6 用户空间和内核空间的动态内存 560 8.6.1 brk 561 8.6.2 vmalloc和vfree 562 8.7 主存储器信息转储 565 第9章 System V IPC 568 9.1 消息队列 568 9.2 信号量 581 9.3 共享内存 590 第10章 对称多处理 596 10.1 并行程序设计概念及其原语 597 10.1.1 原子操作 597 10.1.2 test-and-set 599 10.1.3 信号量 600 10.1.4 自旋锁 604 10.2 APIC和CPU-To-CPU通信 607 10.3 SMP支持如何影响内核 607 10.3.1 对调度的影响 607 10.3.2 smp_local_timer_interrupt 610 10.3.3 lock_kernel和unlock_kernel 611 10.3.4 softirq_trylock 612 10.3.5 cli和sti 612 10.3.6 irq_enter和irq_exit 613 第11章 可调内核参数 614 11.1 /proc/sys 支持 616 11.2 sysctl系统调用 621转载地址:http://tykmo.baihongyu.com/