Skip to content

Understanding the Linux Kernel From I/o Ports to Process Management

Best in textbook rentals since 2012!

ISBN-10: 0596005652

ISBN-13: 9780596005658

Edition: 3rd 2005 (Revised)

Authors: Daniel P. Bovet, Marco Cesati

List price: $69.99
Blue ribbon 30 day, 100% satisfaction guarantee!

Rental notice: supplementary materials (access codes, CDs, etc.) are not guaranteed with rental orders.

what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

In order to thoroughly understand what makes Linux tick and why it works so well on a wide variety of systems, you need to delve deep into the heart of the kernel. The kernel handles all interactions between the CPU and the external world, and determines which programs will share processor time, in what order. It manages limited memory so well that hundreds of processes can share the system efficiently, and expertly organizes data transfers so that the CPU isn't kept waiting any longer than absolutely necessary for the relatively slow disks. The third edition of "Understanding the Linux Kernel takes you on a guided tour of the most significant data structures, algorithms, and programming…    
Customers also bought

Book details

List price: $69.99
Edition: 3rd
Copyright year: 2005
Publisher: O'Reilly Media, Incorporated
Publication date: 12/13/2005
Binding: Paperback
Pages: 920
Size: 7.01" wide x 9.13" long x 2.01" tall
Weight: 3.212
Language: English

Daniel P. Bovet got a Ph.D. in computer science at UCLA in 1968 and is now full Professor at the University of Rome, "Tor Vergata," Italy. He had to wait over 25 years before being able to teach an operating system course in a proper manner because of the lack of source code for modern, well-designed systems. Now, thanks to cheap PCs and to Linux, Marco and Dan are able to cover all the facets of an operating system from booting to tuning and are able to hand out tough, satisfying homework to their students. (These young guys working at home on their PCs are really spoiled; they never had to fight with punched cards.) In fact, Dan was so fascinated by the accomplishments of Linus Torvalds…    

Marco Cesati received a degree in mathematics in 1992 and a Ph.D. in computer science (University of Rome, "La Sapienza") in 1995. He is now a research assistant in the computer science department of the School of Engineering (University of Rome, "Tor Vergata"). In the past, he served as system administrator and Unix programmer for the university (as a Ph.D. student) and for several institutions (as a consultant).

Preface
Introduction
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
Memory Addressing
Memory Addresses
Segmentation in Hardware
Segmentation in Linux
Paging in Hardware
Paging in Linux
Processes
Processes, Lightweight Processes, and Threads
Process Descriptor
Process Switch
Creating Processes
Destroying Processes
Interrupts and Exceptions
The Role of Interrupt Signals
Interrupts and Exceptions
Nested 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
Kernel Synchronization
How the Kernel Services Requests
Synchronization Primitives
Synchronizing Accesses to Kernel Data Structures
Examples of Race Condition Prevention
Timing Measurements
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
Process Scheduling
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
Memory Management
Page Frame Management
Memory Area Management
Noncontiguous Memory Area Management
Process Address Space
The Process's Address Space
The Memory Descriptor
Memory Regions
Page Fault Exception Handler
Creating and Deleting a Process Address Space
Managing the Heap
System Calls
POSIX APIs and System Calls
System Call Handler and Service Routines
Entering and Exiting a System Call
Parameter Passing
Kernel Wrapper Routines
Signals
The Role of Signals
Generating a Signal
Delivering a Signal
System Calls Related to Signal Handling
The Virtual Filesystem
The Role of the Virtual Filesystem (VFS)
VFS Data Structures
Filesystem Types
Filesystem Handling
Pathname Lookup
Implementations of VFS System Calls
File Locking
I/O Architecture and Device Drivers
I/O Architecture
The Device Driver Model
Device Files
Device Drivers
Character Device Drivers
Block Device Drivers
Block Devices Handling
The Generic Block Layer
The I/O Scheduler
Block Device Drivers
Opening a Block Device File
The Page Cache
The Page Cache
Storing Blocks in the Page Cache
Writing Dirty Pages to Disk
The sync(), fsync(), and fdatasync() System Calls
Accessing Files
Reading and Writing a File
Memory Mapping
Direct I/O Transfers
Asynchronous I/O
Page Frame Reclaiming
The Page Frame Reclaiming Algorithm
Reverse Mapping
Implementing the PFRA
Swapping
The Ext2 and Ext3 Filesystems
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
Process Communication
Pipes
FIFOs
System V IPC
POSIX Message Queues
Program Execution
Executable Files
Executable Formats
Execution Domains
The exec Functions
System Startup
Modules
Bibliography
Source Code Index
Index