The Linux kernelAndries Brouwer,
aeb@cwi.nl
2003-02-01
Some remarks on the Linux Kernel
1.
Linux
- 1.1 History
- 1.2 Size
- 1.3 Hardware platforms
- 1.4 Authors
- 1.5 Users and marketshare
- 1.6 Name
- 1.7 Distributions
- 1.8 Copyright, Open Source, GPL
- 1.9 Literature and documentation
2.
The kernel source
- 2.1 Kernel versions
- 2.2 Obtaining the kernel source
- 2.3 Compiling the kernel
- 2.4 Booting a new kernel
- 2.5 Modules
- 2.6 Subsystems - layout of the tree
- 2.7 The C code
- 2.8 Logging kernel messages
- 2.9 Keyboard interface to the kernel
- 2.10 Profiling the kernel
- 2.11 Debugging the kernel
- 2.12 Submitting patches
- 2.13 Talking about the kernel
3.
User space and the libc interface
- 3.1 Application programs and C library
- 3.2 Kernel and user space
- 3.3 Error return conventions
- 3.4 Alternative C libraries
- 3.5 Initial userspace
- 3.6 Libraries and binary formats
4.
System Calls
- 4.1 System call numbers
- 4.2 The call
- 4.3 System call parameters
- 4.4 Error return
- 4.5 Interrupted system calls
- 4.6 Sysenter and the vsyscall page
5.
Signals
- 5.1 Sending signals
- 5.2 Receiving signals
- 5.3 Semantics
- 5.4 Blocking signals
- 5.5 Voodoo: wait and SIGCHLD
- 5.6 Returning from a signal handler
- 5.7 ptrace
- 5.8 The Linux "parent death" signal
6.
File names and files
- 6.1 The file hierarchy
- 6.2 The Unix filesystem model
- 6.3 The Linux filesystem model
- 6.4 Open files
- 6.5 Path names relative to a file descriptor
7.
Filesystems
- 7.1 FAT
- 7.2 Ext2
- 7.3 Journaling filesystems
- 7.4 NFS
- 7.5 The proc filesystem
- 7.6 A baby filesystem example
8.
The Linux Virtual File System
- 8.1 Terminology
- 8.2 Filesystem type registration
- 8.3 Struct file_system_type
- 8.4 Mounting
- 8.5 The superblock
- 8.6 Inodes
- 8.7 Dentries
- 8.8 Files
- 8.9 struct vfsmount
- 8.10 fs_struct
- 8.11 nameidata
9.
Memory
- 9.1 Physical and virtual memory
- 9.2 Kinds of memory
- 9.3 Kernel memory handling
- 9.4 i386 addressing
- 9.5 Reference
- 9.6 Overcommit and OOM
- 9.7 Stack overflow
10.
Processes
- 10.1 Processes
- 10.2 Process groups
- 10.3 Sessions
- 10.4 Threads
11.
Character devices
- 11.1 Registration
- 11.2 Opening
- 11.3 The tty driver
- 11.4 Raw devices
- 11.5 The random device
12.
Handling of asynchronous events
- 12.1 O_NONBLOCK
- 12.2 select
- 12.3 pselect
- 12.4 poll
- 12.5 epoll
- 12.6 dnotify
- 12.7 inotify
13.
Sysfs and kobjects
- 13.1 atomic_t
- 13.2 struct kref
- 13.3 struct kobject
- 13.4 struct kset
- 13.5 struct kobj_type
- 13.6 struct subsystem
- 13.7 struct kobj_map
- 13.8 Example: floppy
- 13.9 Hotplug
14.
Security