rent-now

Rent More, Save More! Use code: ECRENTAL

5% off 1 book, 7% off 2 books, 10% off 3+ books

9780596005658

Understanding The Linux Kernel

by
  • ISBN13:

    9780596005658

  • ISBN10:

    0596005652

  • Edition: 3rd
  • Format: Paperback
  • Copyright: 2005-11-01
  • Publisher: Oreilly & Associates Inc

Note: Supplemental materials are not guaranteed with Rental or Used book purchases.

Purchase Benefits

  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $69.99 Save up to $26.77
  • Rent Book $43.22
    Add to Cart Free Shipping Icon Free Shipping

    TERM
    PRICE
    DUE
    USUALLY SHIPS IN 24-48 HOURS
    *This item is part of an exclusive publisher rental program and requires an additional convenience fee. This fee will be reflected in the shopping cart.

How To: Textbook Rental

Looking to rent a book? Rent Understanding The Linux Kernel [ISBN: 9780596005658] for the semester, quarter, and short term or search our site for other textbooks by Bovet, Daniel Plerre. Renting a textbook can save you up to 90% from the cost of buying.

Summary

This new edition covers Version 2.6 of the Linux kernel, which has seen significant changes to nearly every kernel subsystem, particularly in the areas of memory management and block devices. Understanding the Linux Kernel provides a guided tour of the code that forms the core of all Linux operating systems. Beyond the functioning of the code, the book explains the theoretical underpinnings for why Linux, and many other operating systems, do things the way they do.

Author Biography

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 and his followers that he spent the last few years trying to unravel some of Linux's mysteries. It seemed natural, after all that work, to write a book about what he found.

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).

Table of Contents

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

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program