两个月学完《现代操作系统》(十一)——第六章习题

两个月学完《现代操作系统》(十一)——第六章习题

摘要:个人操作系统学习笔记

0x01 题目



0x02 答案

1、比方说处理文件,采用总是先处理小的文件的策略,若一直有小的文件进入任务队列中,那那些大文件就一直无法被处理,从而产生死锁。
2、当假脱机目录的空间被填满而任务并未传输完全时会产生死锁。这种死锁的避免可以在假脱机目录的空间被塞满前使打印机开始工作从而得到避免。
3、打印机是不可被抢占的,因为打印机不能在打印完一个任务前就开启另一个任务;假脱机硬盘是可被抢占的。
4、是的,因为没啥区别。
5、假设有ABC三个进程,有RS两个资源,其中R有一个实例、S有两个实例。现在:A请求R,B请求S,C请求S,此时B又请求R,A又请求S。AB都阻塞了,但这种情况不是死锁,整个系统此时处于安全状态。因为在C处理完事务后,会释放资源S,这样整个系统的阻塞状态就解决了。
6、这是一种预分配策略。
7、不是通信死锁,因为这些汽车彼此是独立的;也不是资源死锁,因为没有请求已被其他进程占用的资源的情况的存在。这是一种同步竞争的情况
8、可能,比方说内存中存在两个进程。A进程请求了一个内存单元并且上锁,B进程请求了这个进程阻塞,如果A进程在内存中没有足够的空间来执行代码,A进程占用的资源就不能够被释放,那么这个系统中就存在了死锁。
9、有的。比方说一个资源指向多个进程;资源指向资源(讲道理,这个我不是太理解,资源指向资源?资源间相互依赖么?)
10、不会产生死锁,因为A使用完后就释放了,这样C正好可以执行完;同时请求R和S也不会导致死锁,因为A同样再执行完后就释放了。
11、这有很多例子,只要随便找一个不在环中的进程请求被对于环内的进程占用的资源即可。因为环内的死锁,无法执行,所以对于的环外进程也是被死锁了。
12、这是一种通信死锁。
13、A portion of all such resources could be reserved for use only by processes owned by the administrator, so he or she could always run a shell and programs needed to evaluate a deadlock and make decisions about which processes to kill to make the system usable again.讲道理,鸵鸟算法那节我没有看到啥填充表项啥的…
14、第三个资源对进程P1和进程P2总是缺少,因此进程P1和进程P4存在死锁。
15、(a)通过抢占进程一的RS3,使得进程P4得以正常执行。死锁解除;(b)将进程P1回滚到其获取资源RS3前的时刻(c)通过终止进程一释放其资源,死锁解除(c)通过终止进程一释放其资源,死锁解除。
16、意味着系统发生了错误…请求了比资源本身都多的资源,造成永久的死锁。
17、计算机拥有多个CPU,两个进程并行执行的时候就是斜线。
18、可以吧,使用笛卡尔坐标系就行。
19、这个方法只有在进程具体声称了所使用的资源时才可用。但这种情况很少见。
20、进程A、B、C,资源D、E、F、G。A拥有(2000),需要(1020);B拥有(1000),需要(0131);C拥有(0121),需要(1010)。剩余可得资源为(0121)。这种状态并不是死锁,因为许多操作仍然可以完成,比方说,A仍然可以得到两个打印机。然而,如果每个进程都以它们所需作出请求,我们便得到一个死锁。
21、D多一个请求单位时,整个系统处于安全状态;C多一个请求单位时,整个系统处于不安全状态。
22、完全不可能发生死锁。
23、 If a process has m resources it can finish and cannot be involved in a deadlock.
Therefore, the worst case is where every process has m − 1 resources and needs another one. If there is one resource left over, one process can finish and release all its resources, letting the rest finish too. Therefore the condition
for avoiding deadlock is r ≥ p(m − 1) + 1.
24、不会发生死锁。
25、a=1,b=2
26、最小是二就行了
27、在需要两个资源相互配合时这种限制就不可接受了。比方说A资源的输出需要传给B资源处理后再返回到A资源中
28、假设A以abc顺序请求,当B以abc、acb请求时,不会发生死锁。剩下的四种情况会发生死锁,因此,死锁的概率是2/3
29、可能产生,假设A发送给B消息并等待回应;B发送给C消息并等待回应;C发送给A消息并等待回应。这三者同时发生,这就产生了一个死锁。
30、To avoid circular wait, number the resources (the accounts) with their account
numbers. After reading an input line, a process locks the lower-numbered account first,then when it gets the lock (which may entail waiting), it locks the other one. Since no process ever waits for an account lower than what it already has, there is never a circular wait, hence never a deadlock.
31、更换策略为:当申请的资源不可得时,释放自己现在所有的资源。
32、这个方案不太好。重复的请求和阻塞还不如一直阻塞。
33、Both virtual memory and time-sharing systems were developed mainly to assist system users. Virtualizing hardware shields users from the details of prestating needs, resource allocation, and overlays, in addition to preventing deadlock. The cost of context switching and interrupt handling, however, is considerable. Specialized registers, caches, and circuitry are required. Probably this cost would not have been incurred for the purpose of deadlock prevention alone.
34、在死锁中,各个进程拾贝阻塞了的;而在活锁中,进程未被阻塞。饥饿导致的原因是一直存在比饥饿的进程优先级高的进程进入任务队列的情况,饥饿是可以由进程自己解决的。
35、这是个活锁,不要同时来发出查找命令,而是各自等待随机的时间后再发出查找命令。
36、(a)这是一个活锁;(b)冲突的帧不要撤回后立即发送,而是各自等待一段随机的时间后再发包;(c)可能会,但概率很小
37、这是一个通信死锁,延迟可以处理。
38、If both programs ask for Woofer first, the computers will starve with the endless sequence: request Woofer, cancel request, request Woofer, cancel request, and so on. If one of them asks for the doghouse and the other asks for the dog, we have a deadlock, which is detected by both parties and then broken, but it is just repeated on the next cycle. Either way, if both computers have been programmed to go after the dog or the doghouse first, either starvation or deadlock ensues. There is not really much difference between the two here. In most deadlock problems, starvation does not seem serious because introducing random delays will usually make it very unlikely. That approach does not work here.

0x03

写在后面,题目看完了,感觉理解了七七八八吧。后面做lab的时候相信会有更深的理解。


评论