?? 00000001.htm
字號:
<HTML><HEAD> <TITLE>BBS水木清華站∶精華區</TITLE></HEAD><BODY><CENTER><H1>BBS水木清華站∶精華區</H1></CENTER>發信人: axp33a (無聊中...), 信區: Linux <BR>標 題: Linux內核源代碼分析 <BR>發信站: BBS 水木清華站 (Thu Aug 3 11:14:21 2000) WWW-POST <BR> <BR>Linux 與自由軟件資源叢書
<BR>Linux內核源代碼分析
<BR>(美) Scott Maxwell 著
<BR>馮銳 邢飛 劉隆國 陸麗娜 譯
<BR>
<BR>Linux 擁有現代操作系統所有的功能,如真正的搶先式多任務處理、支持多用戶,內存保 <BR>護,虛擬內存,支持SMP、UP,符合POSIX標準,聯網、圖形用戶接口和桌面環境。具有快 <BR>速性、穩定性等特點。本書通過分析Linux的內核源代碼,充分揭示了Linux作為操作系統 <BR>的內核是如何完成保證系統正常運行、協調多個并發進程、管理內存等工作的。
<BR>現實中,能讓人自由獲取的系統源代碼并不多,通過本書的學習,將大大有助于讀者編寫 <BR>自己的新程序。本書附贈光盤,有關光盤內容請見附錄C。
<BR>
<BR>Scott Maxwell:Linux Core Kernel Commentary.
<BR>Original English language edition published by The Coriolis Group LLC, 14455 <BR>N.Hayden Drive, Suite 220, Scottsdale, Arizona 85260 USA, telephone(602) <BR>483-0192, fax(602) 483-0193.
<BR>Copyright * 2000 by The Coriolis Group. All rights reserved.
<BR>Simplified Chinese language edition copyright * 2000 by China Machine Press. <BR>All rights reserved.
<BR>本書中文版由美國Coriolis公司授權機械工業出版社獨家出版。未經出版者書面許可,不 <BR>得以任何方式復制或抄襲本書內容。
<BR>版權所有,侵權必究。
<BR>本書版權登記號:圖字:01-2000-1157
<BR>圖書在版編目(CIP)數據
<BR>Linux 內核源代碼分析/(美)馬克斯韋爾(Maxwel 1,S.)著;馮銳等譯. -北京:機 <BR>械工業出版社,2000.6
<BR>(Linux 與自由軟件資源叢書)
<BR>書名原文:Linux Core Kernel Commentary
<BR>ISBN 7-111-08092-0
<BR>I. L… II. ①馬… ②馮… III. Linux 操作系統-程序分析 IV.TP316.89
<BR>中國版本圖書館CIP數據核字(2000)第32493號
<BR>
<BR>機械工業出版社(北京市西城區百萬莊大街22號 郵政編碼 100037)
<BR>責任編輯:劉立卿
<BR> 印刷·新華書店北京發行所發行
<BR>2000年6月第1版第1次印刷
<BR>787mm×1092 mm 1/16·40.25印張
<BR>印數:0 001-7 000冊
<BR>定價:98.00元(附光盤)
<BR>凡購本書,如有倒頁、脫頁、缺頁,由本社發行部調換
<BR>譯者序
<BR>前言
<BR>第一部分 Linux 內核源代碼
<BR>arch/i386/kernel/entry.S 2
<BR>arch/i386/kernel/init_task.c 8
<BR>arch/i386/kernel/irq.c 8
<BR>arch/i386/kernel/irq.h 19
<BR>arch/i386/kernel/process.c 22
<BR>arch/i386/kernel/signal.c 30
<BR>arch/i386/kernel/smp.c 38
<BR>arch/i386/kernel/time.c 58
<BR>arch/i386/kernel/traps.c 65
<BR>arch/i386/lib/delay.c 73
<BR>arch/i386/mm/fault.c 74
<BR>arch/i386/mm/init.c 76
<BR>fs/binfmt-elf.c 82
<BR>fs/binfmt_java.c 96
<BR>fs/exec.c 98
<BR>include/asm-generic/smplock.h 107
<BR>include/asm-i386/atomic.h 108
<BR>include/asm-i386/current.h 109
<BR>include/asm-i386/dma.h 109
<BR>include/asm-i386/elf.h 113
<BR>include/asm-i386/hardirq.h 114
<BR>include/asm-i386/page.h 114
<BR>include/asm-i386/pgtable.h 115
<BR>include/asm-i386/ptrace.h 122
<BR>include/asm-i386/semaphore.h 123
<BR>include/asm-i386/shmparam.h 124
<BR>include/asm-i386/sigcontext.h 125
<BR>include/asm-i386/siginfo.h 125
<BR>include/asm-i386/signal.h 127
<BR>include/asm-i386/smp.h 130
<BR>include/asm-i386/softirq.h 132
<BR>include/asm-i386/spinlock.h 133
<BR>include/asm-i386/system.h 137
<BR>include/asm-i386/uaccess.h 139
<BR>include/linux/binfmts.h 146
<BR>include/linux/capability.h 147
<BR>include/linux/elf.h 150
<BR>include/linux/elfcore.h 156
<BR>include/linux/interrupt.h 157
<BR>include/linux/kernel.h 158
<BR>include/linux/kernel_stat.h 159
<BR>include/linux/limits.h 160
<BR>include/linux/mm.h 160
<BR>include/linux/module.h 164
<BR>include/linux/msg.h 168
<BR>include/linux/personality.h 169
<BR>include/linux/reboot.h 169
<BR>include/linux/resource.h 170
<BR>include/linux/sched.h 171
<BR>include/linux/sem.h 179
<BR>include/linux/shm.h 180
<BR>include/linux/signal.h 181
<BR>include/linux/slab.h 184
<BR>include/linux/smp.h 184
<BR>include/linux/smp_lock.h 185
<BR>include/linux/swap.h 185
<BR>include/linux/swapctl.h 187
<BR>include/linux/sysctl.h 188
<BR>include/linux/tasks.h 194
<BR>include/linux/time.h 194
<BR>include/linux/timer.h 195
<BR>include/linux/times.h 196
<BR>include/linux/tqueue.h 196
<BR>include/linux/wait.h 198
<BR>init/main.c 198
<BR>init/version.c 212
<BR>ipc/msg.c 213
<BR>ipc/sem.c 218
<BR>ipc/shm.c 227
<BR>ipc/util.c 236
<BR>kernel/capability.c 237
<BR>kernel/dma.c 240
<BR>kernel/exec_domain.c 241
<BR>kernel/exit.c 242
<BR>kernel/fork.c 248
<BR>kernel/info.c 255
<BR>kernel/itimer.c 255
<BR>kernel/kmod.c 257
<BR>kernel/module.c 259
<BR>kernel/panic.c 270
<BR>kernel/printk.c 271
<BR>kernel/sched.c 275
<BR>kernel/signal.c 295
<BR>kernel/softirq.c 307
<BR>kernel/sys.c 307
<BR>kernel/sysctl.c 318
<BR>kernel/time.c 330
<BR>mm/memory.c 335
<BR>mm/mlock.c 345
<BR>mm/mmap.c 348
<BR>mm/mprotect.c 358
<BR>mm/mremap.c 361
<BR>mm/page_alloc.c 363
<BR>mm/page_io.c 368
<BR>mm/slab.c 372
<BR>mm/swap.c 394
<BR>mm/swap_state.c 395
<BR>mm/swapfile.c 398
<BR>mm/vmalloc.c 406
<BR>mm/vmscan.c 409
<BR>第二部分 Linux 內核源代碼分析
<BR>第1章 Linux簡介 416
<BR>1.1 Linux和Unix的簡明歷史 416
<BR>1.2 GNU通用公共許可證 418
<BR>1.3 Linux開發過程 419
<BR>第2章 代碼初識 421
<BR>2.1 Linux內核源程序的部分特點 421
<BR>2.1.1 gcc特性的使用 421
<BR>2.1.2 內核代碼習慣用語 422
<BR>2.1.3 減少#if和#ifdef的使用 423
<BR>2.2 代碼樣例 424
<BR>2.2.1 printk 424
<BR>2.2.2 等待隊列 429
<BR>2.2.3 內核模塊 432
<BR>2.3 配置與編譯內核 434
<BR>2.3.1 配置內核 434
<BR>2.3.2 構建內核 436
<BR>2.3.3 備份的重要性 436
<BR>2.3.4 發布你的改進 437
<BR>第3章 內核體系結構概述 439
<BR>3.1 內核設計目標 439
<BR>3.1.1 清晰性 439
<BR>3.1.2 兼容性 439
<BR>3.1.3 可移植性 440
<BR>3.1.4 健壯性和安全性 440
<BR>3.1.5 速度 441
<BR>3.2 內核體系結構初識 441
<BR>3.3 內核體系結構的深入了解 442
<BR>3.4 Linux 內核的類型 444
<BR>3.5 設計和實現的關系 446
<BR>3.5.1 內核源程序目錄結構 446
<BR>3.5.2 體系結構相關和體系結構無關的
<BR>代碼 450
<BR>第4章 系統初始化 451
<BR>4.1 引導PC機 451
<BR>4.2 初始化Linux內核 452
<BR>4.2.1 BogoMIPS 455
<BR>4.2.2 分析內核選項 456
<BR>4.3 init 459
<BR>第5章 系統調用 462
<BR>5.1 什么是系統調用 462
<BR>5.2 如何激活系統調用 463
<BR>5.2.1 system_call 464
<BR>5.2.2 lcall7 468
<BR>5.3 系統調用樣例 469
<BR>第6章 信號、中斷和時間 474
<BR>6.1 鎖的概述 474
<BR>6.2 信號 474
<BR>6.2.1 數據結構 475
<BR>6.2.2 應用函數 476
<BR>6.2.3 傳送信號 480
<BR>6.2.4 其他有關信號的函數 489
<BR>6.2.5 內核如何區分實時信號和非
<BR>實時信號 491
<BR>6.3 中斷 492
<BR>6.3.1 中斷請求:IRQ 492
<BR>6.3.2 下半部分 493
<BR>6.3.3 數據結構 493
<BR>6.3.4 操作和IRQ 496
<BR>6.3.5 硬件中斷處理程序和下半部分 499
<BR>6.4 時間 502
<BR>第7章 進程和線程 505
<BR>7.1 調度和時間片 505
<BR>7.2 實時進程 506
<BR>7.3 優先級 506
<BR>7.4 進程ID:PID 506
<BR>7.5 引用計數 506
<BR>7.6 權能 507
<BR>7.7 進程在內核中是如何表示的 508
<BR>7.8 進程來源:fork和_ _clone 511
<BR>7.9 運行新程序 514
<BR>7.10 可執行格式 517
<BR>7.11 調度及它們是如何運行的 519
<BR>7.11.1 調度函數和調度策略 519
<BR>7.11.2 計算goodness值 522
<BR>7.11.3 非實時優先級 523
<BR>7.11.4 實時優先級 525
<BR>7.12 遵守限制 526
<BR>7.12.1 權能 526
<BR>7.12.2 用戶ID和組ID 529
<BR>7.12.3 資源限制 530
<BR>7.13 進程的結束 530
<BR>7.13.1 exit 530
<BR>7.13.2 wait 532
<BR>第8章 內存 535
<BR>8.1 虛擬內存 535
<BR>8.1.1 交換和分頁 536
<BR>8.1.2 地址空間 537
<BR>8.1.3 內存管理單元 537
<BR>8.1.4 頁目錄和頁表 538
<BR>8.1.5 轉換后備緩存 540
<BR>8.1.6 段 540
<BR>8.2 進程的內存組織 541
<BR>8.2.1 struct vm_area_struct 541
<BR>8.2.2 struct vm_operations_struct 542
<BR>8.2.3 struct mm_struct 542
<BR>8.2.4 VMA的操作 542
<BR>8.3 分頁 544
<BR>8.3.1 頁面保護詳述 544
<BR>8.3.2 寫拷貝 545
<BR>8.3.3 頁面錯誤 546
<BR>8.3.4 頁面調出 551
<BR>8.4 交換設備 552
<BR>8.5 內存映射mmap 556
<BR>8.6 用戶空間和內核空間的動態內存 560
<BR>8.6.1 brk 561
<BR>8.6.2 vmalloc和vfree 562
<BR>8.7 主存儲器信息轉儲 565
<BR>第9章 System V IPC 568
<BR>9.1 消息隊列 568
<BR>9.2 信號量 581
<BR>9.3 共享內存 590
<BR>第10章 對稱多處理 596
<BR>10.1 并行程序設計概念及其原語 597
<BR>10.1.1 原子操作 597
<BR>10.1.2 test-and-set 599
<BR>10.1.3 信號量 600
<BR>10.1.4 自旋鎖 604
<BR>10.2 APIC和CPU-To-CPU通信 607
<BR>10.3 SMP支持如何影響內核 607
<BR>10.3.1 對調度的影響 607
<BR>10.3.2 smp_local_timer_interrupt 610
<BR>10.3.3 lock_kernel和unlock_kernel 611
<BR>10.3.4 softirq_trylock 612
<BR>10.3.5 cli和sti 612
<BR>10.3.6 irq_enter和irq_exit 613
<BR>第11章 可調內核參數 614
<BR>11.1 /proc/sys 支持 616
<BR>11.2 sysctl系統調用 621
<BR>附錄A Linux 2.4 627
<BR>附錄B GNU通用公共許可證 629
<BR>附錄C 光盤上的內容及系統需求 634 <BR> <BR>-- <BR>※ 來源:·BBS 水木清華站 smth.org·[FROM: 166.111.196.22] <BR><CENTER><H1>BBS水木清華站∶精華區</H1></CENTER></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -