目录
(1)死锁的概念:所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象
(2)死锁的四大条件:互斥、保持和等待、不剥夺、环路等待
(3)死锁的处理:
(1)进程管理与死锁:进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果进程在等待一件不可能发生的事,则进程就死锁了。而如果多个进程产生死锁,就会造成系统死锁。
(2)系统不可能发生死锁的最小资源数:(w - 1) * m + 1 <= n
注:m为进程的个数,w为每个进程所需的资源数,n为可用资源数
(3)上述公式的运算举例,如下:
系统有5个进程,这5个进程都需要4个系统资源。此时,当可用资源<4时,没有一个进程能执行,必然死锁;当15>=可用资源>=4时,可能死锁,也可能避免死锁,最好情况下4个资源都分配给一个进程,不会产生死锁,最坏的情况下15个资源平均分配给5个进程,都无法执行,产生死锁;当n>=16时,不可能产生死锁,一定能执行下去,(4 - 1) * 5 + 1 = 16
(1)资源图如下:
(2)重要概念:
①非阻塞节点和阻塞节点:这里的节点即某个进程,系统的资源能够支持其执行下去即非阻塞节点,反之为阻塞节点
举个例子,资源分配完成后R1还剩1个,此时,P1和P2都需要1个资源才能执行下去,此时P1和P2都为非阻塞节点;而R2还剩0个,P3却还需要1个,因此P3为阻塞节点
②可化简和非死锁:当部分非阻塞节点执行,释放资源后能使得所有节点都能执行完成,就说该图是可化简的、非死锁的,反之,为不可化简的、死锁的
(1)页式存储:将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。
(2)示意图如下:
一般都是已知逻辑地址,根据页号查表的页帧号,最后推出物理地址
(3)逻辑地址推出物理地址的举例
例如,在页式存储系统中,每个页的大小为4 KB,逻辑地址为10 1100 1101 1110, 以上述示意图的页表为标准,推出物理地址:
①已知总容量为4 KB,而总容量 = 存储单元个数 * 编址内容(默认1 B),因此存储单元个数为4 K = 4096,即页内地址0~4095,为了表示这么多数量的页内地址,就需要12位二进制位来表示页内地址(2^12 = 4096),所以可得二进制10表示页号为2
②查表可得,页帧号为6,用二进制表示为110,所以物理地址为110 1100 1101 1110
(4)优点:利用率高,碎片小,分配及管理简单
缺点:增加了系统开销;可能产生抖动现象(就是系统开销增加的一种表现,了解一下)
完整页表如下(图片来自希赛软考):
什么时候要进行页面淘汰?当要使用未分配页帧号的页号时(如页号3),会产生页面中断,此时需要淘汰已在内存中的页帧号,让新的页帧号进来。此时要遵守以下原则进行页面淘汰:
①如果只有一个访问位为0的页面,那么就淘汰该页面(因为根据局部性原理,最近被访问的页面可能马上又被访问)
②如果存在多个访问位为0的页面,那么就淘汰修改位为0的页面(因为淘汰被修改过的页面花销成本更大)
①最优(Optimal, OPT)算法,理想型,一般用于程序执行后,才知道怎样最优,用于与当前选择的算法进行对比,进行判定性的操作
②随机(RAND)算法,随缘进行页面淘汰
③先进先出(FIFO)算法,有可能产生"抖动",就是进行页面淘汰时,删除最先进去的页面
④最近最少使用(LRU)算法,不会"抖动",与3.1.2所述的页面淘汰原则基本相同,依据是局部性原理
对于局部性原理的回顾:
时间局部性:刚被访问的内容,立即又被访问。
空间局部性:刚被访问的内容,临近的空间很快被访问。
段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。
示意图如下(该图片来自希赛软考):
逻辑地址:(段号,段内偏移)
此处考点为判断合法的段地址,合法有两个原则:①段号要存在在段表中②段内偏移要小于等于对应段长(不然就偏到其它地方去了)
以上图为例:
合法地址为:(0, 25 K)
非法地址为:(0, 35 K)
声明:内容参考自希赛软考