1 option
Understanding the Linux kernel / Daniel P. Bovet and Marco Cesati.
LIBRA QA76.76.O63 B69 2003
Available from offsite location
- Format:
- Book
- Author/Creator:
- Bovet, Daniel P. (Daniel Pierre)
- Language:
- English
- Subjects (All):
- Linux.
- Operating systems (Computers).
- Physical Description:
- xv, 765 pages : illustrations ; 24 cm
- Edition:
- Second edition.
- Place of Publication:
- Sebastopol, CA : O'Reilly, [2003]
- Summary:
- In order to thoroughly understand what makes GNU/Linux tick, and why it works so well on a wide variety of systems, you need to delve deep into the heart of the operating system -- that is, into the Linux kernel itself. The kernel handles all the requests or completed I/O operations and determines which programs will share its processing time, and in what order. Responsible for the sophisticated management of the whole system, the Linux kernel is the force behind the legendary Linux efficiency. The new edition of Understanding the Linux Kernel takes you on a guided tour of the most significant data structures, algorithms, and programming tricks used in the kernel. Important Intel-specific features are discussed. But the book covers more than just the functioning of the code; it explains the theoretical underpinnings for why Linux does things the way it does. Understanding the Linux Kernel will acquaint you with all the inner workings of Linux, but it's not just an academic exercise. You'll learn what conditions bring out Linux's best performance, and you'll see how it meets the challenge of providing good system response during process scheduling, file access, and memory management in a wide variety of environments. Knowledge is power, and this book will help you make the most of your Linux system.
- Contents:
- Linux Versus Other Unix-Like Kernels 2
- Hardware Dependency 6
- Linux Versions 7
- Basic Operating System Concepts 8
- An Overview of the Unix Filesystem 12
- An Overview of Unix Kernels 18
- 2. Memory Addressing 34
- Memory Addresses 34
- Segmentation in Hardware 35
- Segmentation in Linux 40
- Paging in Hardware 44
- Paging in Linux 54
- 3. Processes 72
- Processes, Lightweight Processes, and Threads 72
- Process Descriptor 74
- Process Switch 89
- Creating Processes 99
- Destroying Processes 106
- 4. Interrupts and Exceptions 109
- The Role of Interrupt Signals 110
- Interrupts and Exceptions 111
- Nested Execution of Exception and Interrupt Handlers 121
- Initializing the Interrupt Descriptor Table 122
- Exception Handling 125
- Interrupt Handling 128
- Softirqs, Tasklets, and Bottom Halves 145
- Returning from Interrupts and Exceptions 156
- 5. Kernel Synchronization 161
- Kernel Control Paths 161
- When Synchronization Is Not Necessary 162
- Synchronization Primitives 163
- Synchronizing Accesses to Kernel Data Structures 184
- Examples of Race Condition Prevention 189
- 6. Timing Measurements 193
- Hardware Clocks 194
- The Linux Timekeeping Architecture 197
- CPU's Time Sharing 202
- Updating the Time and Date 203
- Updating System Statistics 204
- Software Timers 206
- System Calls Related to Timing Measurements 213
- 7. Memory Management 217
- Page Frame Management 217
- Memory Area Management 239
- Noncontiguous Memory Area Management 256
- 8. Process Address Space 263
- The Process's Address Space 264
- The Memory Descriptor 265
- Memory Regions 268
- Page Fault Exception Handler 285
- Creating and Deleting a Process Address Space 298
- Managing the Heap 300
- 9. System Calls 303
- POSIX APIs and System Calls 303
- System Call Handler and Service Routines 304
- Kernel Wrapper Routines 316
- 10. Signals 318
- The Role of Signals 318
- Generating a Signal 327
- Delivering a Signal 332
- System Calls Related to Signal Handling 343
- 11. Process Scheduling 348
- Scheduling Policy 348
- The Scheduling Algorithm 352
- System Calls Related to Scheduling 367
- 12. The Virtual Filesystem 372
- The Role of the Virtual Filesystem (VFS) 372
- VFS Data Structures 378
- Filesystem Types 394
- Filesystem Mounting 397
- Pathname Lookup 407
- Implementations of VFS System Calls 416
- File Locking 420
- 13. Managing I/O Devices 427
- I/O Architecture 427
- Device Files 437
- Device Drivers 441
- Block Device Drivers 449
- Character Device Drivers 471
- 14. Disk Caches 474
- The Page Cache 476
- The Buffer Cache 481
- 15. Accessing Files 497
- Reading and Writing a File 497
- Memory Mapping 513
- Direct I/O Transfers 523
- 16. Swapping: Methods for Freeing Memory 528
- Swap Area 531
- The Swap Cache 545
- Transferring Swap Pages 548
- Swapping Out Pages 551
- Swapping in Pages 556
- Reclaiming Page Frame 559
- 17. The Ext2 and Ext3 Filesystems 574
- General Characteristics of Ext2 574
- Ext2 Disk Data Structures 577
- Ext2 Memory Data Structures 584
- Creating the Ext2 Filesystem 588
- Ext2 Methods 590
- Managing Ext2 Disk Space 592
- The Ext3 Filesystem 600
- 18. Networking 608
- Main Networking Data Structures 609
- System Calls Related to Networking 618
- Sending Packets to the Network Card 627
- Receiving Packets from the Network Card 629
- 19. Process Communication 632
- Pipes 633
- FIFOs 642
- System V IPC 644
- 20. Program Execution 661
- Executable Files 662
- Executable Formats 674
- Execution Domains 676
- The exec Functions 678
- A. System Startup 685
- B. Modules 692
- C. Source Code Structure 702.
- Notes:
- "From I/O ports to process management"--Cover.
- "Covers Linux Kernel version 2.4"--Cover.
- Includes bibliographical references (pages 707-709) and indexes.
- Local Notes:
- Acquired for the Penn Libraries with assistance from the Sabin W. Colton, Jr., Memorial Fund.
- ISBN:
- 0596002130
- OCLC:
- 51324795
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.