
书: https://pan.baidu.com/s/1hMg-9fMkkzntAfHoLymQMA?pwd=2tx9
笔记如下:
- Linux内核架构:采用宏内核设计,包含进程管理、内存管理、文件系统、设备驱动等核心模块。
- 进程管理机制:通过
fork()
创建进程,exec()
加载程序,wait()
等待子进程结束。 - 进程调度策略:CFS(完全公平调度器)基于虚拟运行时间分配CPU资源。
- 内存管理:虚拟内存机制(分页、页表、TLB)实现进程隔离和高效内存分配。
- 文件系统结构:VFS(虚拟文件系统)抽象不同文件系统(ext4、XFS、Btrfs等)。
- 设备驱动模型:基于字符设备、块设备和网络设备,通过设备文件(如
/dev/sda
)访问硬件。 - 系统调用流程:用户态通过软中断(如
int 0x80
或syscall
)进入内核态执行特权指令。 - 中断处理机制:硬件中断触发IRQ,内核调用对应的中断服务例程(ISR)。
- 网络协议栈:TCP/IP协议栈分层处理(链路层、网络层、传输层、应用层)。
- Shell工作原理:解析用户输入的命令,调用
fork()
+exec()
执行程序。 - 动态链接与静态链接:动态链接库(
.so
)节省内存,静态链接(.a
)提高移植性。 - 信号处理:进程通过
sigaction()
注册信号处理函数,响应SIGKILL
、SIGTERM
等信号。 - 管道与进程通信:匿名管道(
|
)和命名管道(mkfifo
)实现进程间数据传输。 - 共享内存:
shmget()
创建共享内存段,mmap()
映射到进程地址空间。 - 同步机制:互斥锁(mutex)、信号量(semaphore)、自旋锁(spinlock)避免竞态条件。
- 页缓存(Page Cache):内核缓存磁盘数据,加速文件读写性能。
- Swap交换空间:当物理内存不足时,将不活跃的页面换出到磁盘。
- 模块化设计:内核模块(
.ko
)可动态加载/卸载,扩展内核功能。 - 启动流程:BIOS/UEFI → Bootloader(GRUB)→ 内核初始化 → 用户空间(systemd/sysvinit)。
- 系统日志与调试:
dmesg
查看内核日志,strace
追踪系统调用,gdb
调试内核。