为了能使程序并发执行,并且可以对并发执行的程序加以控制和描述,人们引入了“进程”的概念。
进程实际上就是程序的一次执行
当进程阻塞的时候,它已经执行了P操作,并阻塞在该位置,如上图的消费者一开始被阻塞,先发制者应该是生产者,生产者生产完毕执行V操作唤醒消费者
例题:
流程为购书者先购书,收银员后收银
综上所述,第一空选A,第二空选C!!!
进程D首先被进程ABC的信号量P阻塞,进程E被进程D的信号量阻塞
直接上题目
1、什么是死锁
死锁是指多个进程在运行过程中,因争夺资源而造成的一种僵局,若无外力作用,这些进程都将无法向前推进。
2、产生死锁的原因
①竞争资源。②进程间推进顺序非法。
3、产生死锁的4个条件
①互斥条件。②请求和保持条件。③不剥夺条件。④循环等待条件。
4、处理死锁的4种方法
①预防死锁。②避免死锁。③检测死锁。④解除死锁。
我们来看上面这道例题,一共3个进程,每个进程都需要5个系统资源。
①如果系统中有5个资源,A分配2个,B分配2个,C分配2个,此时所有进程不能得到满足,都在等待资源,无法正常运行,即发生死锁;如果将A分配5个,运行完再分配给B,B运行完再分配给C,这样并不会发生死锁。但是,这类题我们考虑的是无论怎样都不会发生死锁的情况,所以要考虑它的一般性!!!
②如果系统中有10个资源,A分配4个,B分配4个,C分配2个,显然每个进程都无法获得5个资源去运行,即发生死锁;11、12个资源也是同样的道理;而当系统中有13个资源的时候,我们可以看到A分配4个,B分配4个,C分配4个,此时还剩下1个空闲资源,无论我们将这1个空闲资源分配给哪个进程,系统都是可以正常运行的,因为一个进程再获得1个资源即得到满足,运行完释放资源,另外两个进程也可以正常运行,即不会发生死锁!!!所以系统至少需要13个资源。
公式:假设有k个进程,每个进程都需要n个资源才可以正常运行,则系统不发生死锁的资源数至少为:k ×(n-1)+1
分配资源的原则
例题:
1、先求剩下的资源数
2、若某一进程的未分配进程数小于剩余资源数,则应先执行该进程,才不会造成死锁问题
首次适应算法:空闲分区以地址递增的次序链接。对于上面这个题,作业4申请内存9k,按照地址递增的情况,此时作业4会被分配到25k的空闲分区,占用9k,剩余25-9=16k。
循环首次适应算法:与首次适应算法的区别是:不是每次都从链首开始查找,而是从上一次找到的空闲分区的下一个空闲分区开始查找。所以作业4申请9k,而作业2和作业3所在的空闲分区的下一个空闲分区为28k,即作业4被分配到了28k这个空闲分区,占用9k,剩余28-9=19k。
最佳适应算法:空闲分区按其容量从小到大的顺序链接。作业4申请9k,而当前空闲分区的容量从小到大依次为:10k、25k、28k,所以作业4被分配到10k这个空闲分区,占用9k,剩余10-9=1k。(缺点是会产生多个较小的内存碎片)
最差适应算法:空闲分区按其容量从大到小的顺序链接。作业4被分配到容量最大的空闲分区28k中,占用9k,剩余28-9=19k。
逻辑地址 = 页号 + 页内地址
块号(页帧号) = 页号(通过查询页表得到)
物理地址 = 块号 + 页内地址
例题:
第一空:先求出页面地址,再通过(逻辑地址-页面地址)得到页号查找块号(页帧号),拼接得到物理地址
页面大小为4K=2^12,表示页内地址为12位,所以在对逻辑地址变换的时候,就要保留它的低12位作为物理地址,因为逻辑地址是16进制数5A29H,它的低12位为是 A29(2转16每一个代表4个2进制位),那么只需要对前面的页号进行变换就可以了,由页表可知,页号5对应的物理块号(页帧号)为6,所以经变换后的物理地址为:6A29H
第二空:需要淘汰在内存中的页面(状态位=1)且未访问过的页面(访问位=0),由图可知1号页应该淘汰,因为未访问代表其可能就是垃圾内存
由以下可知当页面增多时容易发生抖动现象
假设每个物理盘块大小为4K,未引入索引时,该文件只能存放 4K x 13 = 52K
内容
当引入索引节点
0-9号位直接存放物理盘块内容
10号位存放每个物理盘块的地址,假设每个地址占4个字节,那么可以存放 4K / 4 = 1024
个地址,也就是可以存放1024个物理盘块,此为一级间接索引,即10号位可以存放1024个物理盘块,依次类推二级三级间接索引
例题
物理块号50对应逻辑块号0,物理块号67对应逻辑块号1,物理块号68对应逻辑块号2,物理块号78对应逻辑块号3,物理块号89对应逻辑块号4,这五个采取的是直接地址索引;而物理块号90和91采取的是一级间接地址索引,90→58对应的是逻辑块号5,所以逻辑块号5对应的物理块号为58。
因为题目中说每个地址项的大小为4字节,每个索引块为1KB,所以一级间接索引可以存放256个物理块,因为逻辑块号90(5-260),所以逻辑块号91(261-516),所以第261个逻辑块号存放在91->187处
观察上图可知,101号物理块显然采取的是二级间接地址索引的方式,所以其中存放的是二级地址索引表
例题
一个字占32位,4195/32=131.12
,131号字已经溢出,所以存放在第132个字中 (选D)
因为 131 x 32 = 4192
,且索引是从0开始,所以第131号字的最后一个物理块地址为4191,所以4192对应132号字的第0个位置,依次类推,4193(1)、4194(2)、4195对应第3位置,置为1代表占用 (选B)
1、直接程序控制
直接程序控制是指外设数据的输入/输出过程是在CPU执行程序的控制下完成的。这种方法分为:无条件传送和程序查询方式两种情况。
无条件传送:在此情况下,外设总是准备好的,它可以无条件的随时接收CPU发来的输出数据,也能够无条件的随时向CPU提供需要输入的数据。
程序查询方式:在这种方式下,利用查询方式进行输入/输出,就是通过CPU执行程序来查询外设的状态,判断外设是否准备好接收数据或准备好了向CPU输入的数据。
2、中断方式
对于程序控制I/O的方法,其主要的缺点在于CPU必须等待I/O系统完成数据的传输任务,整个系统的性能严重下降。
利用中断方式完成数据的输入/输出过程为:当I/O系统与外设交换数据时,CPU无需等待也不必去查询I/O的状态,而可以抽身出来处理其他任务。当I/O系统准备好了以后,则发出中断请求信号通知CPU,CPU接到中断请求信号后,保存正在执行程序的现场,转入I/O中断服务程序的执行,完成与I/O系统的数据交换,然后再返回被中断的程序继续执行。
与程序控制方式相比,中断方式因为CPU无需等待而提高了效率。
3、直接存储器存取方式(DMA)
在计算机与外设交换数据的过程中,无论是程序控制方式,还是中断方式,都需要CPU通过执行程序来实现,这就限制了数据的传送速度。为进一步提高相应的速度,我们引入了DMA。
DMA是指数据在内存与I/O设备间(通俗的说,就是主存与外设)的直接成块传送,即在内存与I/O设备间传送一个数据块的过程,不需要CPU的任何干涉,只需要CPU在过程开始时启动、在过程结束时处理,实际操作全部由DMA硬件自动执行完成,CPU在此传送过程中可以去做别的事情。
4、输入/输出处理机(IOP)
DMA方式的出现减轻了CPU对I/O操作的控制,使得CPU的效率显著提高。而通道方式的出现则进一步提高了CPU的效率。通道是一个具有特殊功能的处理器,又称为输入输出处理器(IOP),它分担了CPU的一部分功能,可以实现对外围设备的统一管理,完成外围设备与主存之间的数据传送。
通道方式大大提高了CPU的工作效率,然而这种效率的提高是以增加更多的硬件为代价的。
开辟缓冲区将需要输出的数据存放并按进入的顺序输出,这样可以防止打印机一直被占用的情况