深入理解Linux内核(第三版,影印版)
深入理解Linux内核(第三版,影印版)
Daniel P. Bovet, Marco Cesati
出版时间:2006年04月
页数:923
为了彻底理解是什么使得Linux能正常运行以及其为何能在各种不同的系统中运行良好,你需要深入研究内核最本质的部分。内核处理CPU与外界间的所有交互,并且决定哪些程序将以什么顺序共享处理器时间。它如此有效地管理有限的内存,以至成百上千的进程能高效地共享系统。它熟练地统筹数据传输,这样CPU不用为等待速度相对较慢的硬盘而消耗比正常耗时更长的时间。
《深入理解Linux内核,第三版》指导你对内核中使用的最重要的数据结构、算法和程序设计诀窍进行一次遍历。通过对表面特性的探究,作者给那些想知道自己机器工作原理的人提供了颇有价值的见解。书中讨论了Intel特有的重要性质。相关的代码片段被逐行剖析。然而,本书涵盖的不仅仅是代码的功能,它解释了Linux以自己的方式工作的理论基础。
本书新版涵盖2.6版本,其在内核的几乎每个子系统中都有重要的变化,尤其是在内存管理和块设备领域。本书侧重于以下主题:
●内存管理,包括文件缓存、进程交换和直接内存存取(DMA)
●虚拟文件系统层和第二、第三扩展文件系统
●进程创建和调度
●信号、中断和设备驱动程序的主要接口
●定时
●内核中的同步
●进程间通信(IPC)
●程序的执行
《深入理解Linux内核》将使你了解Linux的所有内部工作,它不仅仅是一个理论上的练习。你将学习到哪些情况下Linux性能最佳,并且你将看到,在大量的不同环境里进行进程调度、文件存取和内存管理时它如何满足提供良好的系统响应的需要。这本书将帮助你充分利用Linux系统。
  1. Preface
  2. 1. Introduction
  3. Linux Versus Other Unix-Like Kernels
  4. Hardware Dependency
  5. Linux Versions
  6. Basic Operating System Concepts
  7. An Overview of the Unix Filesystem
  8. An Overview of Unix Kernels
  9. 2. Memory Addressing
  10. Memory Addresses
  11. Segmentation in Hardware
  12. Segmentation in Linux
  13. Paging in Hardware
  14. Paging in Linux
  15. 3. Processes
  16. Processes, Lightweight Processes, and Threads
  17. Process Descriptor
  18. Process Switch
  19. Creating Processes
  20. Destroying Processes
  21. 4. Interrupts and Exceptions
  22. The Role of Interrupt Signals
  23. Interrupts and Exceptions
  24. Nested Execution of Exception and Interrupt Handlers
  25. Initializing the Interrupt Descriptor Table
  26. Exception Handling
  27. Interrupt Handling
  28. Softirqs and Tasklets
  29. Work Queues
  30. Returning from Interrupts and Exceptions
  31. 5. Kernel Synchronization
  32. How the Kernel Services Requests
  33. Synchronization Primitives
  34. Synchronizing Accesses to Kernel Data Structures
  35. Examples of Race Condition Prevention
  36. 6. Timing Measurements
  37. Clock and Timer Circuits
  38. The Linux Timekeeping Architecture
  39. Updating the Time and Date
  40. Updating System Statistics
  41. Software Timers and Delay Functions
  42. System Calls Related to Timing Measurements
  43. 7. Process Scheduling
  44. Scheduling Policy
  45. The Scheduling Algorithm
  46. Data Structures Used by the Scheduler
  47. Functions Used by the Scheduler
  48. Runqueue Balancing in Multiprocessor Systems
  49. System Calls Related to Scheduling
  50. 8. Memory Management
  51. Page Frame Management
  52. Memory Area Management
  53. Noncontiguous Memory Area Management
  54. 9. Process Address Space
  55. The Process’s Address Space
  56. The Memory Descriptor
  57. Memory Regions
  58. Page Fault Exception Handler
  59. Creating and Deleting a Process Address Space
  60. Managing the Heap
  61. 10. System Calls
  62. POSIX APIs and System Calls
  63. System Call Handler and Service Routines
  64. Entering and Exiting a System Call
  65. Parameter Passing
  66. Kernel Wrapper Routines
  67. 11. Signals
  68. The Role of Signals
  69. Generating a Signal
  70. Delivering a Signal
  71. System Calls Related to Signal Handling
  72. 12. The Virtual Filesystem
  73. The Role of the Virtual Filesystem (VFS)
  74. VFS Data Structures
  75. Filesystem Types
  76. Filesystem Handling
  77. Pathname Lookup
  78. Implementations of VFS System Calls
  79. File Locking
  80. 13. I/O Architecture and Device Drivers
  81. I/O Architecture
  82. The Device Driver Model
  83. Device Files
  84. Device Drivers
  85. Character Device Drivers
  86. 14. Block Device Drivers
  87. Block Devices Handling
  88. The Generic Block Layer
  89. The I/O Scheduler
  90. Block Device Drivers
  91. Opening a Block Device File
  92. 15. The Page Cache
  93. The Page Cache
  94. Storing Blocks in the Page Cache
  95. Writing Dirty Pages to Disk
  96. The sync( ), fsync( ), and fdatasync() System Calls
  97. 16. Accessing Files
  98. Reading and Writing a File
  99. Memory Mapping
  100. Direct I/O Transfers
  101. Asynchronous I/O
  102. 17. Page Frame Reclaiming
  103. The Page Frame Reclaiming Algorithm
  104. Reverse Mapping
  105. Implementing the PFRA
  106. Swapping
  107. 18. The Ext2 and Ext3 Filesystems
  108. General Characteristics of Ext2
  109. Ext2 Disk Data Structures
  110. Ext2 Memory Data Structures
  111. Creating the Ext2 Filesystem
  112. Ext2 Methods
  113. Managing Ext2 Disk Space
  114. The Ext3 Filesystem
  115. 19. Process Communication
  116. Pipes
  117. FIFOs
  118. System V IPC
  119. POSIX Message Queues
  120. 20. Program Execution
  121. Executable Files
  122. Executable Formats
  123. Execution Domains
  124. The exec Functions
  125. A. System Startup
  126. B. Modules
  127. Bibliography
  128. Source Code Index
  129. Index
书名:深入理解Linux内核(第三版,影印版)
国内出版社:东南大学出版社
出版时间:2006年04月
页数:923
书号:7-5641-0276-4
原版书出版商:O'Reilly Media
Daniel P. Bovet
 
Daniel P. Bovet于1968年在加州大学洛杉矶分校获得计算机科学博士学位,现任意大利罗马大学Tor Vergata分校教授。由于以前缺乏现代的、设计良好的操作系统源代码,他等待了25年后才得以用适当的方法讲授操作系统课程。现在,借助于廉价PC机和Linux,Dan和Marco能够在课程中讲述操作系统的所有方面,从系统启动到系统调整,并且可以布置有一定的深度、又能满足学生们需要的作业。(这些真正被宠坏了的年轻人在家中的PC机上工作,从来没有用过那些穿孔卡片。)实际上,Dan对Linus Torvalds及其同事们的成就非常着迷,他花费了几年的时间试图揭示Linux的一些秘密。自然,在所有这些工作之后,他会就其研究成果写一本书。
 
 
Marco Cesati
 
Marco Cesati分别于1992年和1995年在罗马大学La Sapienza分校获得数学学位和计算机科学博士学位。现任罗马大学Tor Vergata分校工程学院计算机科学系的助理研究员。过去,他曾经是该大学(作为博士研究生)及其他几家研究机构(作为咨询顾问)的系统管理员和Unix程序员。最近三年,他一直致力于教授学生们如何以新奇和有趣的方式修改Linux内核。