操作系统
一、进程与线程
1. 进程概念
2. 进程的状态与转换
3. 进程控制
4. 进程组织
进程存在的唯一标志是常驻内存,系统通过控制PCB来控制进程,PCB用链表形成的队列组织,进程的不同状态对应着PCB挂在不同的队列。
PCB
- 进程描述信息:进程标识符PID、用户标识符UID
- 进程控制管理信息:进程状态、进程优先级
- 资源分配清单:内存、虚存地址、进程文件目录打开表、IO设备信息
- 处理机相关信息:保持处理机的寄存器各值,用于进程间切换
程序段
- 可被多进程共享,存放的是二进制代码、常量、全局赋值变量
数据段
- 对应进程原始数据或处理的中间数据或最终结果,存放的是 堆:动态分配存储区,栈:临时使用的变量。
PCB+程序段+数据段 = 进程实体(静态)
进程(动态) = 进程实体的一次运行
同一进程实体的不同运行过程 = 不同进程
切换
- 进程切换:指CPU从一个 进程的运行切换到另一个进程的运行。必须保存进程的现场。
- CPU模式切换:用户态<—>核心态:只需保存CPU现场,不必保存进程现场(模式切换下仍然处理同一个进程)
- 开销:保存进程现场 > 保存CPU现场 => 进程切换 > 模式切换
5.进程通信
1. 共享存储系统
- 通信进程共享一个存储空间,通过对该空间进行读/写操作进程通信。
- 存储空间:只能读+读,不能读+写,不能写+写 (必须共享空间没有别的进程进行写操作才能访问)
2. 消息传递系统
- 直接以格式化的数据“消息”为单位,通过“发送消息” & “接收消息” 原语进行通信。
- 两种方式:
- 直接通信:进程间直接传说消息
- 间接通信:进程中有“消息” 中间实体(类似于网络中的电子邮箱系统的信箱)
3. 管道通信
- 管道通信是一种半双工通信,性质同IO中的缓冲区。且运行多进程读写管道。数据一旦被读出立刻丢弃,管道必须同时有一端读端和另一头写端。
- 进程对管道进行read() 和write() 都可能被阻塞。 读操作:只要有数据,就能读;写操作:缓冲区清空,才能写。
- 读进程可能比写进程块。
- 一个普通的管道仅可具有共同祖先的两个进程之间共享并且这个祖先系必须已经建立了供它们使用的管道。
以上三种通信方式为高级通信,还有一种低级通信是PV操作,还有文件映射和套接字。
注意共享存储与管道的区别:
- 共享存储可同时被访问读&读,而管道(缓冲区)不可被同时访问(临界资源)
- 共享存储两天都能进行读或写,而管道只能从一天读,另一头写。
6.线程概念与多线程模型
二、处理机调度
1. 调度的基本概念
2. 调度时机、切换与过程
3. 调度的基本原则
4. 调度方式
5. 典型调度算法
- 先来先服务调度算法
- 短作业(短进程、短线程)优先调度算法
- 时间片轮转调度算法
- 优先级调度算法
- 高响应比优先调度算法
- 多级反馈队列调度算法
三、同步与互斥
1. 进程同步的基本概念
2. 实现临界区互斥的基本方法
- 软件实现方法
- 硬件实现方法
3.信号量
4.管程
5.经典同步问题
- 生产者-消费者问题
- 读者-写着问题
- 哲学家进餐问题
四、死锁
1.死锁的概念
2.死锁处理策略
3.死锁预防
4.死锁避免
- 系统安全状态
- 银行家算法