Professional¶
Linux Kernel Architecture¶
Welcome to sean’s Guide to Linux Kernel Architecture
리눅스 커널의 구조에 입문하신것을 환영합니다.
본 번역서는 Wolfgang Mauerer 저서의 <Professional Linux Architecture> 를 근간으로 하고 있습니다.
현재 번역중이며… 언제라도 잘못된 부분이 있으면 알려주세요.
If you’d like to help, fork us on GitHub!
contacts: newstein33@gmail.com
Professional Linux Kernel Architecture¶
본 문서는 리눅스 커널의 구조에 대해서 서술한다.
- Chapter 0: About
- Chapter 1:Introduction and Overview
- 1.1 Task of the Kernel
- 1.2 Implementation Strategies
- 1.3 Elements of the Kernel
- 1.3.1 Processes, Task Switching, and Scheduling
- 1.3.2 Unix Processes
- 1.3.3 Address Spaces and Privilege Levels
- 1.3.4 Page Tables
- 1.3.5 Allocation of Physical Memory
- 1.3.6 Timing
- 1.3.7 System Calls
- 1.3.8 Device Drivers, Block and Charater Devices
- 1.3.9 Networks
- 1.3.10 Filesystems
- 1.3.11 Modules and Hotplugging
- 1.3.12 Caching
- 1.3.13 List Handling
- 1.3.14 Object Management and Reference Counting
- 1.3.15 Data Types
- 1.3.16 … and Beyond the Infinite
- 1.4 Why the kernel Is Special
- 1.5 Some Notes on Presentation
- 1.6 Summary
- Chapter 2 : Process Management and Scheduling
- Chapter 3 : Memory Management
- 3.2 Organization in the (N)UMA Model
- 3.2.1 Overview
- 3.2.2 Data Structures
- Node Management
- Memory Zones
- Calculation of Zone Watermarks
- Hot-N-Cold Pages
- Page Frames
- Definition of page
- Architecture-Independent Page Flags
- 3.3 Page Tables
- 3.3.1 Data Structures
- Breakdown of Addresses inMemory
- Format of Page Tables
- PTE-Specific Entries
- 3.3.2 Creating and Manipulating Entries
- 3.4 Initialization of Memory Management
- 3.4.1 Data Structure Setup
- Prerequisites
- System Start
- Node and Zone Initialization
- 3.4.2 Architecture-Specific Setup
- Arrangement of the Kernel in Memory
- Initialization Steps
- Initialization of Paging
- Division of Address Space
- Alternative Division
- Splitting the Virtual Address Space
- Initialization of the Hot-n-Cold Cache
- Registering Active Memory Regions
- Registering Regions on IA-32
- Registering Regions on AMD64
- Address Space Setup on AMD64
- 3.4.3 Memory Management during the Boot Process
- Data Structures
- Initialization
- Initialization for IA-32
- Initialization for AMD64
- Releasing Memory
- Disabling the Bootmem Allocator
- Releasing Initialization Data
- 3.5 Management of Physical Memory
- 3.5.1 Structure of the Buddy System
- 3.5.2 Avoiding Fragmentation
- Grouping Pages byMobility
- Data Structures
- Global Variables and Auxiliary Functions
- Initializing Mobility-Based Grouping
- The Virtual Movable Zone
- Data Structures
- Implementation
- 3.5.3 Initializing the Zone and Node Data Structures
- Managing Data Structure Creation
- Creating Data Structures for Each Node
- 3.5.4 Allocator API
- 3.5.5 Reserving Page
- 3.6 The Slab Allocator
- 3.7 Processor Cache and TLB Control
- Summary
- 3.2 Organization in the (N)UMA Model
- Chapter 4 : Virtual Process Memory
- 4.1 Introduction
- 4.2 Virtual Process Address Space
- 4.3 Principle ofMemoryMappings
- 4.4 Data Structures
- 4.5 Operations on Regions
- 4.6 Address Spaces
- 4.7 Memory Mappings
- 4.8 Reverse Mapping
- 4.9 Managing the Heap
- 4.10 Handling of Page Faults
- 4.11 Correction of Userspace Page Faults
- Kernel Page Faults
- Copying Data between Kernel and Userspace
- Summary
- Chapter 5 : Locking and Interprocess Communication
- Chapter 6 : Device Drivers
- Chapter 7 : Modules
- Chapter 8 : The Virtual Filesystem
- Chapter 9 : The Extended Filesystem Family
- Chapter 10 : Filesystems without Persistent Storage
- Chapter 11 : Extended Attributes and Access Control Lists
- Chapter 12 : Networks
- 12.1 Linked Computers
- 12.2 ISO/OSI and TCP/IP Reference Model
- 12.3 Communication via Sockets
- 12.4 The Layer Model of Network Implementation
- 12.5 Networking Namespaces
- 12.6 Socket Buffers
- 12.7 Network Access Layer
- 12.8 Network Layer
- 12.9 Transport Layer
- 12.10 Application Layer
- 12.11 Networking from within the Kernel
- Summary
- Chapter 13 : System Calls
- Chapter 14 : Kernel Activities
- Chapter 15 : Time Management
- Chapter 16 : Page and Buffer Cache
- Chapter 17 : Data Synchronization
- 17.1 Overview
- 17.2 The pdflush Mechanism
- 17.3 Starting a New Thread
- 17.4 Thread Initialization
- 17.5 Performing Actual Work
- 17.6 Periodic Flushing
- 17.7 Associated Data Structures
- 17.8 Central Control
- 17.9 Superblock Synchronization
- 17.10 Inode Synchronization
- 17.11 Congestion
- 17.12 Forced Writeback
- 17.13 Laptop Mode
- 17.14 System Calls for Synchronization Control
- 17.15 Full Synchronization
- Summary
- Chapter 18 : Page Reclaim and Swapping
- Chapter 19 : Auditing
- Appendix A: Architecture Specifics
- Appendix B: Working with the Source Code
- Appendix C: Notes on C
- Appendix D: System Startup
- Appendix E: The ELF Binary Format
- Appendix F: The Kernel Development Process
라이센스 정보는 아래와 같다. 또한 스타일 가이드도 첨부한다.