用户态/内核态
动态链接/静态连接
1 进程管理
1.1 进程状态:
新的:进程正在被创建
运行:指令正在被执行
等待:进程等待某个事件的发生(如I/O完成或收到信号)
就绪:进程等待分配处理器
终止:进程完成执行
1.2 进程控制块(PCB):
每个进程在操作系统中用进程控制块来表示,PCB一般包括:进程状态、程序计数器、CPU寄存器、CPU调度信息、内存管理信息、记账信息、I/O状态
1.3 进程调度
调度队列
就绪队列:通常用链表实现,其中头结点指向链表的第一个和最后一个PCB块的指针。每个PCB包括执行下一个PCB的指针域。
上下文切换:进程的上下文用进程的PCB表示
1.4 进程操作
PID:进程标识符
进程创建
进程终止
父进程/子进程
1.5 进程间通信
进程间通信机制 IPC interprocess communication
进程间通信有两种基本模式:共享内存、消息传递
1.6 线程
线程是CPU使用的基本单元,由线程ID、程序计数器、寄存器集合和栈组成。它与属于同一进程的其他线程共享代码段、数据段、和其他操作系统资源。
多线程
Linux并不区分进程和线程,而是将两者同样对待,将一个任务视为进程或线程,这取决于传递给clone()系统调用的标志集。
1.7 CPU调度
抢占式/非抢占式
调度算法
2 同步
2.1 进程同步
竞争条件:多个进程并发访问和操作同一数据且执行结果与访问发生特定的顺序有关,称为竞争条件。
临界区问题:
假设某个系统有n个进程{P0, P1, …, Pn-1},每个进程有一个代码段称为临界区,在该区中进程可能改变共同变量、更新一个表、写一个文件等。这种系统的重要特征是当一个进程进入临界区,没有其他进程可被允许在临界区内执行,即没有两个进程可同时在临界区内执行。临界区问题是设计一个以便进程协作的协议。每个进程必须请求进入临界区。实现这一请求的代码段称为进入区,临界区之后可有退出区,其他代码称为剩余区。
do {
进入区
临界区(critical section)
退出区
剩余区(reminder se