进程管理-死锁
系统有3个进程A,B,C这3个进程都需要5个系统资源。如果系统至少有多少个资源,则不可能发生死锁
- 分析:假设有13个资源,那么A,B,C分配4个资源,还剩下1个资源,那么任何一个进程获得了这个资源,就会执行完成并释放资源。
- 公式:K*(n-1)+1个资源即可。K是进程数,n是进程需要的资源
死锁产生的条件
- 互斥
- 保持和等待
- 不剥夺
- 环路等待
解决死锁的方式
- 死锁预防:打破产生死锁的条件即可
- 死锁的避免
死锁避免
- 有序资源分配:资源利用率比较低
- 银行家算法:(主要使用这种方式)
银行家算法
一般都是给出n个进程,列出每个进程需要的资源数,然后系统能够提供的志愿书。问你如何执行者n个进程不会导致死锁。
- 求出剩余资源数
- 判断n个进程中需要的资源数
- 然后尝试将剩余的资源数给进程
- 进程执行完毕会释放资源,求得释放的资源数。判断余下进程满足释放的进程
存储管理
内存分配算法
- 首次适应算法:从上往下有空间就用
- 最佳适应法:将空余空间作为一个链表从小到大排序,找到最合适的一块(会产生很多小块的内存空间)
- 最差适应法:将空余空间作为一个链表从小到大排序,找到最大的一块分配
页式存储
高级程序语音使用逻辑地址,运行状态,内存中使用物理地址
逻辑地址:页号+页内地址
物理地址:页号对应的块好+页内地址
逻辑地址和物理地址的页内地址是相同的

例题:image.png
- 将9612转为二进制10010110001100
- 因为页面位8KB所以需要2^13即13位进行编址。上面10010110001100有14位,根据逻辑地址表示方式可知页号为第一位1
- 那么察看图表知道页号1对应的物理块号为3,那么把3转为二进制补到页内地址的前面得到:110010110001100
- 然后再把110010110001100转为10进制25996。所以选择B
页面置换算法
淘汰不用的内存块算法。常用的是先进先出,最近最少使用


网友评论