Linux 2nd Ed.

Kernel Internals

Michael Beck, Harald Böhme, Mirko Dziadzka, Ulrich Kunitz, Robert Magnus, Dirk Verworner

Publisher: Addison-Wesley, 1996, 438 pages

ISBN: 0-201-87741-4

Keywords: Operating Systems

Last modified: April 20, 2021, 9:14 a.m.

So you know C and you know some UNIX basics, but do you know LINUX?

If you want the power of UNIX on your PC at absolutely no cost, you should!

LINUX is a UNIX-like operating system for PCs developed via the Internet, where it is available for free. Because of its reliability, flexibility and its unbeaten price/performance ratio, LINUX is no longer just the operating system of choice for hackers; it is now an accepted operating system with commercial applications ranging from word processors to Internet browsers to SQL databases.

This book explains the internals of the LINUX operating system and is a practical overview and guide to LINUX kernel programming. It is a valuable source of information if you want to start programming the kernel on your own, which of course, you can, because the sources are free!

Based on version 1.2, this book covers:

  • The scheduling of processes
  • Architecture-independent memory management interprocess communication
  • File systems
  • Device driver programming
  • TCP/IP implementation
  • Kernel modules
  • Kernel debugging
  • Overview of all kernel system calls
  • Overview of the proc file systems
  • An explanation about the boot process
  1. Linux — the operating system
    1. Main characteristics
    2. LINUX distributions
  2. Compiling the kernel
    1. Where is everything?
    2. Compiling
    3. Additional configuration facilities
  3. Introduction to the kernel
    1. Important data structures
      1. The task structure
      2. The process table
      3. Files and inodes
      4. Dynamic memory management
      5. Queues and semaphore
      6. System time and timers
    2. Main algorithms
      1. Signals
      2. Interrupts
      3. Booting the system
      4. Timer interrupt
      5. The scheduler
    3. Implementing system calls
      1. How do system calls actually work?
      2. Examples of simple system calls
      3. Examples of more complex system calls
      4. Implementing a new system call
  4. Memory management
    1. The architecture-independent memory model in LINUX
      1. Pages of memory
      2. Virtual address space
      3. Converting the linear address
      4. The page directory
      5. The page middle directory
      6. The page table
    2. The virtual address space for a process
      1. The user segment
      2. Virtual memory areas
      3. The system call brk
      4. Mapping functions
      5. The kernel segment
      6. Static memory allocation in the kernel segment
      7. Dynamic allocation of memory in the kernel segment
    3. Block device caching
      1. Block buffering
      2. The update and bdflush processes
      3. List structures for the buffer cache
      4. Using the buffer cache
    4. Paging under LINUX
      1. Finding a free page
      2. Page errors and reloading a page
  5. Inter-process communication
    1. Synchronization in the kernel
    2. Communication via files
      1. Locking entire files
      2. Locking file areas
    3. Pipes
    4. Debugging using ptrace
    5. System V IPC
      1. Access permissions, numbers and keys
      2. Semaphores
      3. Message queues
      4. Shared memory
      5. The ipcs and ipcrm commands
    6. IPC with sockets
      1. A simple example
      2. The implementation of UNIX domain sockets
  6. The LINUX file system
    1. Basic principles
    2. The representation of file systems in the kernel
      1. Mounting
      2. Superblock operations
      3. The inode
      4. Inode operations
      5. The file structure
      6. File operations
      7. Opening a file
      8. The directory cache
    3. The Proc file system
    4. The Ext2 file system
      1. The structure of the Ext2 file systems
      2. Directories in the Ext2 file systems
      3. Block allocation in the Ext2 file system
      4. Extensions of the Ext2 file system
  7. Device drivers under LINUX
    1. Character and block devices
    2. Polling and interrupts
      1. Polling mode
      2. Interrupt mode
      3. Bottom halves
      4. DMA mode
    3. The hardware
      1. Hardware detection
      2. Automatic interrupt detection
    4. Implementing a driver
      1. The setup function
      2. init
      3. open and release
      4. read and write
      5. IOCTL
      6. select
      7. lseek
      8. mmap
      9. readddir, fsync and fasync
      10. check_media_change and revalidate
    5. An example of DMA operation
  8. Network implementation
    1. Introductory summary
      1. The layer model of the network implementation
      2. Getting the data from A to B
    2. Important structures
      1. the socket structure
      2. The sk_buff structure — buffer management in the network
      3. The INET socket — a special part of a socket
      4. Protocol operations in the proto structure
      5. The general structure of a socket address
    3. Network devices under LINUX
      1. Ethernet
      2. SLIP and PLIP
      3. The loopback device
      4. the dummy device
    4. ARP — the Address Resolution Protocol
    5. IP
      1. IP — general introduction
      2. IP functions
      3. Routing
      4. IP multicasting with IGMP
      5. IP packet filters
      6. IP accounting and IP firewalling
    6. UDP
      1. Functions of UDP
      2. Other functions
    7. TCP
      1. General notes on TCP
      2. The TCP communication end-point — a finite state machine
      3. Functions of TCP
    8. The packet interface — an alternative?
  9. Modules and debugging
    1. What are modules?
    2. Implementation in the kernel
      1. Signatures of symbols
    3. What can be implemented as a module?
    4. An example module
    5. Debugging
      1. Changes are the beginning of the end
      2. The best debugger — printk()
      3. Debugging with gdb
  1. System Calls
    1. Process management
    2. The file system
    3. Communication
    4. Memory management
    5. Initailization
    6. All that remains
  2. Kernel-related commands
    1. free — synopsis of the system memory
    2. ps — display of process statistics
    3. Additional kernel configuration
    4. top — the CPU charts
    5. init — primus inter pares
    6. shutdown — shutting down the system
    7. strace — monitoring a process
    8. Configuring the network interface
    9. traceroute — Ariadne's thread in the Internet
    10. Configuring a serial interface
    11. Configuring a parallel interface
    12. mount
  3. The Proc file system
  4. The boot process
    1. Carrying out the boot process
    2. LILO — the LINUX loader
      1. LILO started by MS-DOS MBR
      2. LILO started by a boot manager
      3. LILO in the master boot record
      4. LILO files
      5. LILO boot parameters
      6. LILO start-up messages
      7. Error messages
  5. Useful kernel functions

Reviews

Linux

Reviewed by Roland Buresund

Disappointing *** (3 out of 10)

Last modified: May 21, 2007, 3:09 a.m.

An old book, covers Linux 1.2. Good introductory text, but not very up-to-date. There is a rumour about a 3rd edition that should cover 2.0.

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required

captcha

required