Linux知识清单
Linux 系统核心概念
1.内核与系统调用
-
内核职责: 进程调度、内存管理、文件系统、设备驱动、网络协议栈。
-
系统调用: 用户态程序与内核交互的唯一方式。理解 glibc 等C库如何封装系统调用(如 open, read, write, fork, execve, mmap, ioctl)。
-
原理: 触发一个软中断(如x86的 int 0x80 或 syscall 指令),CPU切换到内核态,根据系统调用号查找表(syscall table)跳转到对应的内核函数执行。
2.进程与线程
-
进程
-
概念: 程序的一个执行实例,拥有独立的地址空间和系统资源。
-
创建: fork() + exec()。fork 的写时复制(Copy-On-Write, COW)机制是其高效的关键。vfork 的用途和与 fork 的区别。
-
进程描述符: 内核中用 task_struct 结构体管理进程的所有信息。
-
进程状态: 就绪(TASK_RUNNING)、可中断睡眠(TASK_INTERRUPTIBLE)、不可中断睡眠(TASK_UNINTERRUPTIBLE, D状态)、僵尸(ZOMBIE)、停止(STOPPED)。
-
僵尸进程: 成因(子进程退出,父未调用 wait 回收其资源)、危害(占用进程号)、如何避免。
-
-
线程
-
概念: 轻量级进程,共享同一进程的地址空间和大部分资源。
-
实现: Linux内核并不区分进程和线程,线程本质上就是共享资源的进程(CLONE_VM | CLONE_FS | CLONE_
-