《Linux内核设计与实现》笔记5 - 系统调用
Unix接口设计的格言:提供机制(mechanism)而不是策略(policy)。Unix系统调用抽象除了用于完成某种确定的目的的函数,至于这些函数怎么用完全不需要内核去关心。
《Linux内核设计与实现》笔记4 - 进程调度
多任务系统分为2类:
- 非抢占式多任务系统,需要进程主动让出(yield)系统资源
- 抢占式多任务系统,如Linux,调度程序决定何时停止运行某个进程
《Linux内核设计与实现》笔记3 - 进程管理
进程是处于执行期的程序,在内核中通常称为任务task
。进程描述符存放在内核的任务队列(task list)双向链表中,链表的每一项是一个task_struct
结构体,每个task_struct
在32位机器上大约占1.7KB内存。
// linux/sched.h
struct task_struct{
unsigned long state;
int prio;
unsigned long policy;
struct task_struct *parent;
struct list_head tasks;
pid_t pid;
// ...
}
《Linux内核设计与实现》笔记2 - 从内核出发
内核开发的特点
- 不能访问C函数库,不能访问标准C头文件
- 必须使用GNU C
- 没有用户空间的内存保护机制
- 难以执行浮点运算
- 内核给每个进程只有很小的栈,通常是8KB
- 内核支持异步中断、抢占、SMP,必须注意同步和并发
- 需要考虑可移植性
《Linux内核设计与实现》笔记1 - 介绍
原书:Linux Kernel Development 3rd. Edition,书名也可以翻译为《Linux内核开发》,书中描述的是2.6.34版内核。