软考-2.2进程调度-死锁-存储管理-固定分页分段
前言
内容:
- 进程调度
- 死锁
- 线程
- 存储
中论
进程调度
进程调度方式指当有更高优先级的进程到来时如何分配CPU。分为可剥夺和不可剥夺。区别是是否会强制将正在运行其他进程的CPU分配给更高优先级进程。
在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
- 高级调度:又称长调度、作业调度、接纳调度。决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备。
- 中级调度:又称中程调度、对换调度。决定处于交换区中的哪个就绪进程可以调入内存。
- 低级调度:又称短程调度、进程调度。决定处于内存中的哪个就绪进程可以占用CPU。
是系统最活跃、最重要的调度程序
进程调度算法
- 先来先服务FCFS
- 时间片轮转
- 优先级调度
- 多级反馈调度
死锁
产生原因:当一个进程在等待永远不可能发生的事件时,就会产生死锁,如果系统中多个进程处于死锁,就会造成系统死锁。
产生死锁的四个必要条件
- 资源互斥
- 不可剥夺
- 每个进程占有资源并且等待其他资源
- 进程资源图是个环路
打破死锁的方法
- 死锁预防。破坏死锁的四个必要条件
- 死锁避免。银行家算法
- 死锁检测。系统定时运行一个检测死锁的程序
- 死锁解除。系统强制剥夺资源,关闭进程等
死锁资源计算:系统内有n个进程,每个进程都要R个资源
- 发生死锁的最大资源数 = n*(R-1)
- 不发生死锁的最小资源数 = n*(R-1)+1
线程
进程特点:拥有资源的独立单位;独立调度和分配的基本单位。
线程特点:共享资源;独调度和分配的基本单位。线程基本上不拥有私人资源,只拥有一点运行中必不可少的资源(程序计数器、寄存器、栈)。
引入线程的原因:进程在创建、撤销和切换中,系统会有额外开销,因此在系统中设置的进程数目不宜过多,进程切换的频率不宜太高。引入线程后,可以减少额外开销。
存储
分区存储
分区存储就是整存,将某进程运行所需的内存整体一起分配给他,然后再执行。
分区方式
- 固定分区:主存分为若干个固定分区,会产生内部碎片
- 可变分区:作业转入时划分,整好划分为作业需要的大小,会产生外部分区
- 可重定位分区:移动所有已经分配好的分区,使其成为一个连续的区域。只有在外部作业请求空间得不到满足时进行。
分区存储算法
- 首次是适应法:按内存地址,从头查找满足的空闲块
- 最佳适应法:将空闲块从小到大排序查找
- 最差适应法:将空闲块从大到小排序查找
- 循环首次适应法:按内存地址顺序查找,若后续还需分配则继续查找下一个
分页存储管理
逻辑页分为页号和页内地址。
地址页则为页帧号和页内地址。
需要查表得出逻辑页的页号所对应的页帧号。逻辑页和地址页的页内地址相同,所以需要两者的页大小保持一致
优点:利用率高,碎片小,分配及管理简单。
缺点:增加了系统开销,可能产生抖动现象。
抖动现象:分配给进程的存储块数量小于进程所需要的最小值,导致进程运行频繁地产生缺页中断。具体表现为,对刚被替换出去的页面,立即又要被访问,需要将它调入,但因为无空闲内存又要替换另一页,而后者又是即将被访问的页,造成了系统需花费大量的时间忙于进行这种频繁的页面交换。
分页存储算法(页面置换算法)
- 最优算法:理论上的算法,无法实现
- 先进先出FIFO
- 最近最少使用LRU
- 淘汰原则:优先淘汰最近未访问的,而后淘汰最近未修改的页面。
快表:一块小容量的相联存储器,由快速存储器组成,按内容访问、速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数多动页面的页号。
块表将页表存于Cache中,慢表则将页表存在内存中。
慢表访问两次内存才能取出页,块表则是访问一次Cache和一次内存。
分段存储管理
将进程空间分成一段一段,每段有段号和段长。和分页存储不同,分段不需要段内地址统一(因为用的段长长度而不是地址)
1 | 分段和分页: |
段页式存储管理
对进程空间先分段,后分页
优点:空间浪费小,存储共享容易、能动态链接
缺点:复杂性和开销也随之增加。
段页式地址转换
- 先从逻辑地址中的段号与段寄存器里的段长进行比较,越界发生中断
- 然后根据段寄存器中的段表地址找到段表,这时候段表存储内容发生改变,每一个内容应该为页表项的长度,以及页表起始地址
- 然后根据页号与该段进行比较,如果越界就发生中断
- 进入内存查询页表,查询页框
- 最后获得物理地址
一共访问三次内存:第一次访问段表,第二次访问页表,第三次访问数据
为何先分段后分页:因为页是物理,段是逻辑。先分页后分段和直接分段没有本质区别。
后记
世界不过是身外之物
————— 马尔克斯《百年孤独》