![](https://lstatic.shangxueba.com/jiandati/pc/images/pc_jdt_tittleico.png)
如果规定系统所有进程在整个运行过程中一次性申请所需的全部资源,若其中任何一个资源不能得到满足,则其他资源也不分配给该进程,这种死锁预防方式破坏了产生死锁的哪一个必要条件? ()
A.进程互斥使用资源
B.占有等待资源
C.不可抢占
D.循环等待资源
![](https://lstatic.shangxueba.com/jiandati/pc/images/jdt_q_ckda.png)
![](https://lstatic.shangxueba.com/jiandati/pc/images/jdt_panel_vip.png)
![](https://lstatic.shangxueba.com/jiandati/pc/images/jdt_q_wyda.png)
- · 有3位网友选择 D,占比33.33%
- · 有2位网友选择 C,占比22.22%
- · 有2位网友选择 B,占比22.22%
- · 有2位网友选择 A,占比22.22%
A.进程互斥使用资源
B.占有等待资源
C.不可抢占
D.循环等待资源
A.互斥使用
B.部分分配
C.不可剥夺
D.环路等待
阅读下列说明和图,回答问题1到问题3,将解答填入对应栏内。
[说明]
操作系统中,死锁(Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
面对死锁问题有两个解决方案:预防死锁和避免死锁。
预防死锁是一种较简单和直观的事先预防方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或多个,以此来预防死锁的发生。预防死锁由于较易实现,已被广泛应用,但由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量的降低。
避免死锁同样是属于事先预防的策略,但它无须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
银行家算法(Banker's algorithm)是Dijkstra于1965年提出的一个经典的避免死锁的算法。形象地描述银行发放贷款不能使有限可用资金匮乏而导致整个银行无法运转的思路,也就是说每次请求贷款,银行要考虑他能否凭着贷款完成项目,并还清贷款使银行运转正常。令Request(i)是进程P(i)请求向量,如果Request(i)[j]=k则进程P(i)希望请韵类资源k个。具体算法步骤如下:
(1)如果Request(i)>Need(i)则出错(请求量超过申报的最大量),否则转到(2);
(2)如果Request(i)>Available则P(i)等待,否则转(3);
(3)系统对P(i)所请求的资源实施试探分配,并更改数据结构中的数值;
(4)Available=Available-Request(i);
A1location(i) =Allocation(i) +Request(i);
Need(i)=Need(i)-Request(i);
(5)执行安全性算法,如果是安全的,则承认试分配,否则废除试分配,让进程P(i)继续等待。
所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次运行完成,这种进程序列{P1,P2,…,Pn)就是安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。
简述产生死锁的四个必要条件。
A.M+N<T
B.M+N≤T
C.(x<(T-N))∩(y<N)∪((T-M)≤x<M)∩(y<(T-M))∪(x=(T-N)∩(y=(T-M))
D.(0≤x<(T-N))∪(x<(T-M))
A.
B.
C.
D.
E.
有n个进程. 对于i = 1 , 2 ,···, n. 进程XX的开始时间为s[i],截止时间为d[i].可以通过监测程序Test来测试正在运行的进程. Test每次测试的时间很短.可以忽略不计.换句话说,如果Test在时刻t进行测试,那么它将对满足
的所有进程
同时取得测试数据.假设最早运行的进程的开始时刻是.0,问:如何安排测试时刻,使得对每个进程至少测试一次,且Test测试的次数达到最少?说明你的算法的主要设计思想,给出伪码,证明算法的正确性,并分析算法最坏情况下的时间复杂度.
A.进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索
B.线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行
C.Java多线程的运行与平台相关
D.对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!