进程:是程序的一次执行过程,是系统资源和处理机的独立单位
进程的三种状态:
就绪状态:等cpu 程序一旦运行就创建了本次运行的PCB也就创建了进程,此时进程处于就绪状态
阻塞状态:等事件
执行状态:用cpu
转换:
- 就绪---> 执行
处于就绪状态的cpu空闲时,就从就绪状态中选取优先级最高的进程将cpu分配给它
- 执行--->阻塞
处于执行状态的进程,若运行完成,则撤销此进程
若出现了I/O等事件,分时状态的一个时间片完,则转换为阻塞状态
- 阻塞--->就绪
处于阻塞状态的进程,在等事件发生后,转换为等cpu就绪态
挂起 :
使正在活动的进程处于静止状态
此时系统回收被这些进程占用的内存资源
进程的控制原语及其作用:
进程的控制通过操作系统内核实现,内核实现使用原语
原语:是若干条机器指令构成的,完成特定功能段的程序,其执行过程不可分割
包含:创建 撤销 阻塞 唤醒 挂起 **
创建原语:
从空白队列粘取PCB节点
就绪队列选取优先级最高的进程,将CPU分配给它
写入本次运行对应的信息
撤销原语:【运行--->撤销】
运行完成
回收所有资源
将该PCB链接空白进程
阻塞:【运行--->阻塞】
遍历头节点 data域
将该PCB插入阻塞队列
唤醒:【阻塞--->就绪】
遍历头节点data域
依次将阻塞节点移入就绪队列
进程同步:
使并发执行的进程间可以有效的共享资源和相互合作,使程序的并发执行具有可再现性。
进程间的制约关系:
直接制约关系:进程间由于共享资源而引起的直接制约关系------互斥
间接制约关系:进程间由于相互合作引起的间接制约关系---------同步
临界区互斥的访问:
临界区:一次仅允许一个资源访问的进程
临界区:访问临界资源的代码段,不允许多个并发进程交叉执行
实现:
临界区前加进入区,判断是否空闲,若不空闲,时钟管理的控制下每隔一段时间进入临界区
空闲,进入临界区,设置访问标志
临界区后加退出区,恢复访问标志,允许其他程序进入
利用硬件方法解决进程互斥问题:
Test-and-Set指令:
读出标志后设置为true
swap指令