资源说明:英文原版
作者:Andy Oram
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Linux Versus Other Unix-Like Kernels
Hardware Dependency
Linux Versions
Basic Operating System Concepts
An Overview of the Unix Filesystem
An Overview of Unix Kernels
2
6
7
8
12
19
2. Memory Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Memory Addresses
Segmentation in Hardware
Segmentation in Linux
Paging in Hardware
Paging in Linux
35
36
41
45
57
3. Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Processes, Lightweight Processes, and Threads
Process Descriptor
Process Switch
Creating Processes
Destroying Processes
79
81
102
114
126
4. Interrupts and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
The Role of Interrupt Signals
Interrupts and Exceptions
132
133
vNested Execution of Exception and Interrupt Handlers
Initializing the Interrupt Descriptor Table
Exception Handling
Interrupt Handling
Softirqs and Tasklets
Work Queues
Returning from Interrupts and Exceptions
143
145
148
151
171
180
183
5. Kernel Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
How the Kernel Services Requests
Synchronization Primitives
Synchronizing Accesses to Kernel Data Structures
Examples of Race Condition Prevention
189
194
217
222
6. Timing Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Clock and Timer Circuits
The Linux Timekeeping Architecture
Updating the Time and Date
Updating System Statistics
Software Timers and Delay Functions
System Calls Related to Timing Measurements
228
232
240
241
244
252
7. Process Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Scheduling Policy
The Scheduling Algorithm
Data Structures Used by the Scheduler
Functions Used by the Scheduler
Runqueue Balancing in Multiprocessor Systems
System Calls Related to Scheduling
258
262
266
270
284
290
8. Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Page Frame Management
Memory Area Management
Noncontiguous Memory Area Management
294
323
342
9. Process Address Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
The Process’s Address Space
The Memory Descriptor
Memory Regions
vi
| Table of Contents
352
353
357Page Fault Exception Handler
Creating and Deleting a Process Address Space
Managing the Heap
376
392
395
10. System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
POSIX APIs and System Calls
System Call Handler and Service Routines
Entering and Exiting a System Call
Parameter Passing
Kernel Wrapper Routines
398
399
401
409
418
11. Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
The Role of Signals
Generating a Signal
Delivering a Signal
System Calls Related to Signal Handling
420
433
439
450
12. The Virtual Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
The Role of the Virtual Filesystem (VFS)
VFS Data Structures
Filesystem Types
Filesystem Handling
Pathname Lookup
Implementations of VFS System Calls
File Locking
456
462
481
483
495
505
510
13. I/O Architecture and Device Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
I/O Architecture
The Device Driver Model
Device Files
Device Drivers
Character Device Drivers
519
526
536
540
552
14. Block Device Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Block Devices Handling
The Generic Block Layer
The I/O Scheduler
Block Device Drivers
Opening a Block Device File
560
566
572
585
595
Table of Contents
|
vii15. The Page Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
The Page Cache
Storing Blocks in the Page Cache
Writing Dirty Pages to Disk
The sync( ), fsync( ), and fdatasync() System Calls
600
611
622
629
16. Accessing Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Reading and Writing a File
Memory Mapping
Direct I/O Transfers
Asynchronous I/O
632
657
668
671
17. Page Frame Reclaiming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
The Page Frame Reclaiming Algorithm
Reverse Mapping
Implementing the PFRA
Swapping
676
680
689
712
18. The Ext2 and Ext3 Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
General Characteristics of Ext2
Ext2 Disk Data Structures
Ext2 Memory Data Structures
Creating the Ext2 Filesystem
Ext2 Methods
Managing Ext2 Disk Space
The Ext3 Filesystem
738
741
750
753
755
757
766
19. Process Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
Pipes
FIFOs
System V IPC
POSIX Message Queues
776
787
789
806
20. Program Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
Executable Files
Executable Formats
Execution Domains
The exec Functions
viii
| Table of Contents
809
824
827
828A. System Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
B. Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
Source Code Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。