Introduction to the Linux Kernel 國立中正大學 資訊工程研究所 羅習五 老師
GNU/Linux One of Linux's most interesting features is that it is not a commercial product The basics of a Linux system are the kernel, C library, compiler, toolchain, and basic system utilities, such as a login process and shell. Strictly speaking, after all, the term Linux refers to only the kernel.
Kernel components Typical components of a kernel are interrupt handlers to service interrupt requests, a scheduler to share processor time among multiple processes, a memory management system to manage process address spaces, and system services such as networking and interprocess communication (IPC).
Kernel mode and kernel space The kernel includes a protected memory space and full access to the hardware. This system state and memory space is collectively referred to as kernel-space A user process executes in User-space kernel-space
Function calls and OS Eventually call a system call eventually calls write() to write the data to the console Always call a system call some library calls have a one-to-one relationship with the kernel. Other C library functions such as strcpy(), should (you hope) make no use of the kernel at all.
Devices and OS When hardware wants to communicate with the system, it issues an interrupt that asynchronously interrupts the kernel. Interrupts are identified by a number. The number is used to identify a interrupt handler Linux’s interrupt handlers do not run in a process context. Instead, they run in a special interrupt context that is not associated with any process.
The modes a CPU executes in In kernel-space, in process context, executing on behalf of a specific process In kernel-space, in interrupt context, not associated with a process, handling an interrupt In user-space, executing user code in a process
The modes a CPU executes in User space Process context Kernel space (including bottom half) Top halve ISR CTX
Linux Versus Classic Unix Kernels Linux supports the dynamic loading of kernel modules. Linux has symmetrical multiprocessor (SMP) support. Including UMA and NUMA The Linux kernel is preemptive Linux does not differentiate between threads and processes. by invoking “clone()”
Note: A preemptive kernel A preemptive OS initiate a context switch when the OS switch to user mode. A preemptive kernel can also initiate a context switch in kernel mode to satisfy the scheduling policy'
Linux Kernel Versions
Before We Begin This book is about the Linux kernel: how it works, why it works, and why you should care. Do make a Linux kernel Understand menu items listed in “make menuconfig” Read documents in /“linux-src”/Documentation Enjoy your Linux life
Note: Something we have to know and have to try Kernel hacking and others Kernel debugging and others