APUE: Advance Programming in the Unix Enviroment
ULK : Undertanding the Linux Kernel
一直想读这两本书,希望对Linux有更多的了解,尤其是memory management & multi-process/thread。据说,APUE是讲如何在Linux上编程,ULK是讲kernel内部如何设计实现的。这个周末把两本书的Preface和Chapter 1都看了一遍,确实如此。
Conclusion:
- 直接看英文原版,读起来其实不费力,几乎不会有语言障碍。
- 这两本都是1000页(APUEv3 English, ULK v3 English)的大部头,通读是不可能的,效果也必然不好。要么根据实际问题查找问题答案,要么根据感兴趣的某个主题通读相关章节(如内存管理)。
- 根据Coding时遇到的实际问题,一般先查找APUE,找不到答案时再深入查找ULK。 如:
- gettimeofday() 为什么不适合profile
- 多进程、多线程、多核的联系
- 根据感兴趣的某个主题,也可以先看APUE得出一个感性、宏观的认识。仍然有兴趣?那么进一步参考ULK吧,这时,一定要看Source code & build & run. 如:
- In one word, buy both the English version of APUE & ULK for daily reference.
APUE
Preface gives the audience and purpose of the book :
This book describes the programming interface to the Unix system—the system call interface and many of the functions provided in the standard C library. It is intended for anyone writing programs that run under Unix.
The system call interface and the library routines have traditionally been described in Sections 2 and 3 of the Unix Programmer‘s Manual. This book is not a duplication of these sections. Examples and rationale are missing from the Unix Programmers Manual,
and that‘s what this book provides.
By reading the Table of Contents and Chapter 1, the details of APUE focus on the following list. Such a plenty of Processes/Threads, but no specific memory management chapters.
- filesystem
- ch4 Files and Directories
- ch6 System Data and Information
- I/O
- ch3 File I/O
- ch5 Standard I/O library
- ch14 Advanced I/O
- ch18 Terminal I/O
- Process & Thread
- ch7 Process Env
- ch8 Process Control
- ch9 Process Relationships
- ch10 Signals
- ch11 Threads
- ch12 Thread Control
- ch13 Daeman Process
- Interprocess communication
- ch15 Interprocess communication
- ch16 Network IPC: Socket
- ch17 Advanced IPC
- Examples
- ch19 Pseudo Terminals
- ch20 A Database Library
- ch21 Communicating with a Network Printer
ULK
Preface gives the audience and purpose of the book:
All people curious about how Linux works and why it is so efficient will find answers here. After reading the book, you will find your way through the many thousands of lines of code, distinguishing between crucial data structures and secondary ones—in
short, becoming a true Linux hacker.
On another level, the book provides valuable insight to people who want to know more about the critical design issues in a modern operating system. It is not specifically addressed to system administrators or programmers; it is mostly for people who want to understand how things really work inside the machine! As with any good guide, we try to go beyond superficial features. We offer a background, such as the history of major features and the reasons why they were used.
By reading the Table of Contents and Chapter 1, the details of ULK focus on the following list. "we describe The process and memory fairly thoroughly", especially memory, "The heart of any Unix kernel is memory management". No specific chapter for networks. "The book describe the official Linux 2.6.11 version".
- Kernel
- memory management
- ch2 Memory Addressing
- ch8 Memory Management
- ch15 The Page Cache
- how to reduce disk accesses
- ch16 Accessing Files
- ch17 Page Frame Reclaiming
- process management
- ch3 Processes
- ch4 Interrupts and Execeptions
- How to transit between User Model and Kernel Model
- ch5 Kernel Synchromization
- ch6 Timing Measurements
- ch7 Process Scheduling
- ch9 Process Address Space
- ch10 System calls
- ch11 Signals
- ch19 Process Communication
- ch20 Program Execution
- device drivers
- ch13 I/O Architecture and Device Drivers
- ch14 Block Device Drivers
- filesystem
- ch12 The Virtual Filesystem VFS
- ch18 The Ext2 and Ext3 Filesystems