华东师范大学月考试卷-华东师范大学数据学院.DOC

华东师范大学月考试卷-华东师范大学数据学院.DOC

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华东师范大学月考试卷-华东师范大学数据学院.DOC

华东师范大学考试卷 2014—2015学年第学期 得分 课程名称 课程性质(专业必修)学生姓名 学号 学生系别 专业 年级 班级 错。银行家算法只能检测是否处于安全状态,并不能保证系统处于安全状态;此外,安全状态一定无死锁。 2. 要实现临界区,必须采用基于硬件的解决办法。 错。可以用基于软件/算法的方法,例如Peterson算法安全一定无死锁CPU环境下由于任何时刻只有一个进程(线程)能够运行,因此操作系统不需要实现同步与互斥支持。CPU环境下preemptive)操作系统中,进程不会因为申请、使用资源发生死锁的初值为1P、V原语操作可解决互斥问题P原语相当于获得排他性的资源访问锁,而V原语一个用户进程在执行过程中,遇到硬件中断,中断处理程序运行在核心态、用户上下文中。中断处理程序运行在系统上下文中 错。根据银行家算法,在当前时刻,无论有多少进程处于阻塞状态,只要找到一个安全序列说明整个系统处于安全状态,系统就不会出现死锁。 进程所请求的一次打印输出结束后,将使进程状态从运行态变为就绪态等待态变为就绪态题每小题分) 1. 以下哪种情况仍然可能会发生死锁? ( B ) A. 资源都是可共享的; B. 每一种资源的数量都超过单个进程所需这类资源的最大值; C. 空闲资源能够满足任意一个进程还需要的资源需求; D. 每个进程必须一次申请、获得所需的所有资源 2. 对于死锁,以下哪些(个)描述是正确的:( B, D ) A. 死锁避免(deadlock avoidance)中,不安全的状态必然发生死锁 B. 死锁避免(deadlock avoidance)中,发生死锁必然处于不安全状态 C. 资源分配图中有环(以资源类型和进程为节点),必然发生死锁 D. 如果要求每个进程必须一次申请所有需要的资源,如果不能满足其要求,则不分配任何资源,那么死锁不可能发生 B, C ) A. 中断处理程序(interrupt handler)是进程的一部分,在进程的地址空间运行 B. 中断处理程序(interrupt handler)必须运行在内核态 C. 微内核体系结构下,进程间通讯(inter-processing communication)必须在微内核内 D. 分时(time sharing)的目的是提高CPU和I/O的并行度 )。 A.等待队列 B.运行队列 C.就绪队列 D.任意一个队列 5. 以下那个操作不会使得一个进程从运行(running)状态转换为就绪(ready)状态:C ) A. 在可占先(preemptive)系统中,高优先级进程被创建 B. 分时系统中,时间片到 C. 当前运行进程发生缺页中断 D. 当前运行进程调用yield(),主动放弃使用CPU死锁(deadlock)与饥饿(starvation) 死锁:多个进程循环等待对方,都无法继续执行 饥饿:某个或某些进程由于无法得到资源长时间无法执行 死锁必然发生饥饿,但是饥饿不一定发生死锁微内核和模块化内核 Monitor)采用资源集中管理的方法,将系统中的资源用某种数据结构抽象地表示出来。由于临界区是访问共享资源的代码段,因而建立一个管程来管理进程提出的访问请求。采用这种方式对共享资源的管理就可以借助数据结构及其上实施操作的若干过程来进行;对共享资源的申请和释放可以通过管程在数据结构上的操作来实现。 进程:略 区别:管程是进程间通信的一种实现方式,与进程有质的不同。 综合题(25分) 1. (5分) 已知生产者、消费者问题的代码: 生产者: Producer () { while (true) { /* produce an item and put in nextProduced */ while (count == BUF_SIZE) ; // do nothing buffer [in] = nextProduced; in = (in + 1) % BUF_SIZE; count++; } } 消费者: Consumer () { while (true) { while (count == 0) ; // do nothing nextConsumed = buffer[out]; out = (out + 1) % BUF

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档