一、选择题
当( )时,进程从执行状态转变为就绪状态。
参考答案:
B
💡 解析:进程有三种基本状态:运行、就绪、阻塞。时间片到属于系统正常调度,进程失去CPU但具备运行条件,被剥夺执行权并转为就绪态;若是等待某事件发生(如I/O),则是失去运行条件,转为阻塞态。
点击评论后加载...
登录 后可参与评论
从下面关于并发性的论述中,选出一条正确的论述( )。
参考答案:
C
💡 解析:概念辨析:并发性(Concurrency)强调的是在“同一时间间隔内”多个事件交替发生,宏观上同时运行,微观上交替执行;而在“同一时刻”绝对方位上同时发生,称为并行性(Parallelism)。
点击评论后加载...
登录 后可参与评论
操作系统有多种类型:允许多个用户以交互方式使用计算机的操作系统,称为( )。
参考答案:
B
💡 解析:分时操作系统将CPU时间划分成极短的时间片,轮流分配给多个联机终端用户,使得每个用户都感觉自己在独占计算机,具有非常良好的即时“交互性”。
点击评论后加载...
登录 后可参与评论
进程调度的对象和任务分别是( )。
参考答案:
C
💡 解析:进程调度(又称微观调度或低级调度)的对象是处于“就绪队列”中的进程,其核心任务是根据特定的调度算法,从就绪队列中选出一个进程并为其分配CPU处理器资源。
点击评论后加载...
登录 后可参与评论
若Wait、Signal操作的信号量S初值为2,当前值为-1,则表示有( )等待进程。
参考答案:
B
💡 解析:PV操作中,信号量S的当前值如果大于0,表示系统中当前可用的该类资源数;如果小于0,其绝对值表示因等待该资源而被阻塞在等待队列中的进程总数。|-1| = 1,故有1个被挂起的等待进程。
点击评论后加载...
登录 后可参与评论
在动态分区式内存管理中,倾向于优先使用低址部分空闲区的算法是( )。
参考答案:
C
💡 解析:首次适应算法(First Fit)要求空闲分区链以地址递增的次序排列。每次分配时都从链表头部开始查找,因此倾向于优先榨干低地址部分的空闲区,从而保留了高地址部分的大块空闲区。
点击评论后加载...
登录 后可参与评论
若把操作系统看作是计算机资源的管理者,下列( )不属于操作系统所管理的资源。
参考答案:
D
💡 解析:操作系统的四大基本物理与逻辑资源管理功能是:管理处理机(CPU)、存储器(内存)、外围设备(磁盘)和文件(数据)。中断属于计算机系统底层的硬件控制通讯机制,并非供进程分配享用的资源。
点击评论后加载...
登录 后可参与评论
单道批处理系统的主要缺点是( )。
参考答案:
A
💡 解析:单道批处理系统内存中只保持一道作业,一旦该作业因等待I/O操作而阻塞,极其昂贵的CPU只能无奈地处于空闲干等状态,导致CPU和系统外设的利用率极低。
点击评论后加载...
登录 后可参与评论
以下哪种I/O控制方式最适合处理高速数据传输?( )
参考答案:
C
💡 解析:直接内存访问(DMA)方式允许外设和内存之间直接进行批量数据交换。整个传输过程完全由DMA控制器硬件接管,无需CPU频繁中断干预,是处理高速块设备(如磁盘读写)的绝佳选择。
点击评论后加载...
登录 后可参与评论
( )操作系统允许一台主机上同时连接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。
参考答案:
C
💡 解析:这正是分时操作系统的经典定义。主机通过分时技术快速轮询切换,使得每一个终端前的用户都察觉不到延迟,产生了一种多用户同时交互使用的感觉。
点击评论后加载...
登录 后可参与评论
关于虚拟内存的描述,以下哪项是错误的?( )
参考答案:
D
💡 解析:大错特错。虚拟内存的实现既需要硬件(如提供地址转换和缺页异常机制的MMU硬件)的支持,更需要操作系统内核软件(如极其复杂的页面置换算法、页表管理逻辑)的深度参与,两者缺一不可。
点击评论后加载...
登录 后可参与评论
操作系统处理缺页中断时,选择一种好的调度算法对主存和辅存中信息进行高效调度,尽可能地避免( )。
参考答案:
D
💡 解析:抖动(Thrashing)是指由于页面淘汰算法不当或分配的物理块不足,导致系统花费在页面换入换出上的时间多于实际执行程序的时间。优秀的置换算法(如LRU)正是为了避免这种系统颠簸崩溃现象。
点击评论后加载...
登录 后可参与评论
用信箱实现进程间互通信息的通信机制要有两个通信原语,它们是( )。
参考答案:
C
💡 解析:在进程间的高级通信方式中,信箱通信属于间接通信。进程通过系统提供的 Send(发送到目标信箱)和 Receive(从目标信箱接收提取)这两个通信原语来完成消息中转和安全传递。
点击评论后加载...
登录 后可参与评论
死锁的4个必要条件中,无法破坏的是( )。
参考答案:
B
💡 解析:产生死锁的四个必要条件中,互斥条件是由资源本身的物理特性(例如打印机、磁带机等临界资源在同一时刻绝对只能被一个进程使用)决定的。为了保证业务逻辑结果的正确性和安全性,通常无法也绝不能去破坏它。
点击评论后加载...
登录 后可参与评论
时间片轮转调度算法是为了( )。
参考答案:
A
💡 解析:时间片轮转(RR)调度主要服务于分时交互系统,其设计的核心初衷不是为了追求系统算力的高效,而是为了保证在规定的响应时间内,公平地轮流响应多个终端用户的按键和操作请求。
点击评论后加载...
登录 后可参与评论
在内存管理中,哪种抖动现象通常指的是由于频繁的页面置换导致的性能下降? ( )
参考答案:
A
💡 解析:频繁进行换入换出、导致系统颠簸停滞的现象,在虚拟存储管理领域的专业术语被称为页面抖动(Thrashing)。
点击评论后加载...
登录 后可参与评论
虚拟存储器最基本的特征是( )
参考答案:
A
💡 解析:虚拟存储器利用局部性原理,借助内外存间的无缝数据交换,能够使用户感觉到的可用内存容量远大于实际机器上插的物理内存条,即从逻辑上极大地扩充了内存空间。
点击评论后加载...
登录 后可参与评论
在操作系统中,死锁出现指的是( )。
参考答案:
C
💡 解析:死锁(Deadlock)的经典定义:两个或多个并发进程在执行过程中,因争夺资源而造成的一种互相等待对方手中资源的死结僵局。若无外力强行干涉打破环路,它们都将永远挂起无法继续执行。
点击评论后加载...
登录 后可参与评论
下列方式中,( )不适用于实现虚拟存储器。
参考答案:
A
💡 解析:实现虚拟存储器的核心前提是程序可以被“离散打碎”存放到内存中(如分页、分段)。可变分区管理属于古老的连续分配方式,要求整个作业必须整体、连续地装入一段内存,因此根本无法支撑虚拟存储机制。
点击评论后加载...
登录 后可参与评论
如果允许不同用户的文件可具有相同的文件名,通常采用( )来保证按名存取的安全。
参考答案:
D
💡 解析:多级目录结构(即如今Windows/Linux广泛使用的树形目录)通过不同的文件夹路径名(绝对路径或相对路径)来唯一标识一个文件,因此完美解决了不同用户甚至同一用户下的文件重名冲突问题。
点击评论后加载...
登录 后可参与评论
操作系统中利用信号量和P、V操作,( )。
参考答案:
C
💡 解析:信号量机制及P、V操作是非常强大的低级进程通信引擎。将信号量初值设为1,将其置于临界区前后可以实现进程互斥;将其设为0或特定值,并在不同进程间交叉拦截发送,则可以控制执行先后顺序,实现进程同步。
点击评论后加载...
登录 后可参与评论
下列的进程状态变化中,( )的变化是不可能发生的。
参考答案:
C
💡 解析:进程状态机铁律:处于等待/阻塞态的进程,当其等待的外设事件发生(如I/O读写完成)后,它只能先被唤醒进入“就绪队列”排队,等待调度程序下一次为其分配CPU,绝不能直接越过就绪态强行投入运行。
点击评论后加载...
登录 后可参与评论
进程和程序的一个本质区别是( )。
参考答案:
D
💡 解析:进程是动态的、活的,是程序在某个数据集合上的一次生老病死执行过程;而程序只是一堆指令的有序集合,是死地躺在磁盘上的静态文件。
点击评论后加载...
登录 后可参与评论
下列选择中,( )不是操作系统关心的主要问题。
参考答案:
D
💡 解析:操作系统的本职工作是向下管理硬件资源,向上提供软件服务接口。而高级语言的编译器(如将C语言编译成机器码)属于操作系统的上层应用——系统支撑软件,不属于OS内核资源调度的核心范畴。
点击评论后加载...
登录 后可参与评论
处于静止阻塞状态的进程,在进程等待的事件出现后,应变为( )状态。
参考答案:
C
💡 解析:在引入挂起状态的系统中:“静止”代表进程被踢到了外存,“阻塞”代表在等事件。当事件出现后,阻塞原因解除,它具备了运行资格,但因为此时它仍待在外存没有被拉回内存,所以状态转变为“静止就绪”。
点击评论后加载...
登录 后可参与评论
操作系统通过( )对进程进行管理。
参考答案:
B
💡 解析:PCB(Process Control Block,进程控制块)是操作系统用来记录进程动态状态、调度优先级和控制进程运行的唯一核心数据结构。所谓创建或撤销进程,实质上就是对PCB的创建与销毁。
点击评论后加载...
登录 后可参与评论
为照顾紧急作业的用户,应采用( )。
参考答案:
D
💡 解析:如果面临航天发射或火灾报警等极端“紧急作业”,绝不能容忍排队等待。必须允许这种高优先级进程立刻抢占当前正在执行进程的CPU。因此必须采用基于优先权的剥夺式(抢占式)调度算法。
点击评论后加载...
登录 后可参与评论
在页面置换算法中,以下哪种算法可能导致Belady异常? ( )
参考答案:
C
💡 解析:这属于操作系统的著名“坑”:先进先出(FIFO)置换算法由于无脑根据页面进入内存的时间先后进行淘汰,完全无视了程序执行的局部性原理。这导致有时给程序分配更多的内存物理块,缺页中断次数反而激增,这种诡异的反常现象即为Belady异常。
点击评论后加载...
登录 后可参与评论
在操作系统中,P、V操作是一种( )。
参考答案:
D
💡 解析:P操作(Wait等待)和V操作(Signal发送)是由操作系统底层提供的、用于解决并发进程间同步与互斥的一套低级通信“原语”。它们是由若干指令组成、执行期间绝对不可被中断的原子操作。
点击评论后加载...
登录 后可参与评论
若进程P一旦被唤醒就能够投入运行,系统可能为( )。
参考答案:
D
💡 解析:在“抢占式(剥夺式)”调度系统中,调度器极其敏感:只要有一个被唤醒入队的进程其优先级比“此时此刻正坐在CPU上运行的进程”还要高,调度器就会立刻剥夺当前进程的CPU,让刚醒来的大佬直接投入运行。
点击评论后加载...
登录 后可参与评论
在没有快表的情况下,分页系统每访问一次数据,要访问( )次内存 。
参考答案:
B
💡 解析:基本分页系统的典型两步走:CPU若要读取一个数据,第一次必须访问驻留在内存中的“页表”来进行逻辑页号到物理块号的映射;算出物理地址后,第二次才能根据物理地址再次访问内存去真正读取业务数据。
点击评论后加载...
登录 后可参与评论
用户在程序设计过程中,可通过( )获得操作系统的服务。
参考答案:
C
💡 解析:系统调用(System Call)是操作系统这层坚硬外壳上留给上方应用程序的“特权大门”接口。用户程序通过执行特殊的陷入指令(Trap),从低权限的用户态跃迁到内核态,以此获取操作系统的底层服务。
点击评论后加载...
登录 后可参与评论
银行家算法是一种( )算法。
参考答案:
B
💡 解析:由艾兹格·迪杰斯特拉发明的银行家算法是操作系统中最经典的“死锁避免”算法。它在每次答应分配资源前,都会像严谨的银行家一样进行沙盘推演(安全性检查),只有确保系统能找到安全序列时才会真正拨款。
点击评论后加载...
登录 后可参与评论
文件系统中用( )组织文件。
参考答案:
C
💡 解析:海量杂乱的文件必须要有清晰的分类脉络。文件系统通过目录(比如多级树形目录结构,即我们俗称的“文件夹”)来对文件进行分组、检索和管理,实现清爽的按名存取。
点击评论后加载...
登录 后可参与评论
静态重定位是在作业的( )进行的。
参考答案:
B
💡 解析:地址转换时机考点:静态重定位是指在程序被“装入”内存的那一刻,由装入程序一次性、硬编码式地将程序中所有的逻辑地址强行转换为物理地址,且在其后漫长的运行期间该地址彻底写死,再也不能移动改变。
点击评论后加载...
登录 后可参与评论
在一个内存为1MB的系统中,某程序需要2MB的代码和数据。以下哪种技术可以解决内存不足的问题? ( )
参考答案:
A
💡 解析:在物理内存捉襟见肘的早期系统中,程序员只能被逼使用“静态覆盖(Overlay)”技术:手工将庞大的程序切分成几个逻辑上绝不会同时运行的模块,让这些模块在不同的时间段分时轮流占用同一块宝贵的物理内存空间。
点击评论后加载...
登录 后可参与评论
操作系统中的SPOOLing技术,实质是将( )转化为共享设备的技术。
参考答案:
B
💡 解析:SPOOLing(假脱机)技术的魔力在于:它在磁盘上开辟了输入输出井作为中间缓冲地带。它能将原本必须排队等待串行使用的物理“独占设备”(如打印机)虚拟化,使其逻辑上变成了允许多个进程同时丢入数据的“共享设备”。
点击评论后加载...
登录 后可参与评论
在多进程环境中,以下哪种情况可能导致临界区问题?( )
参考答案:
B
💡 解析:如果多个并发进程同时读写同一个核心共享变量,却在代码外层没有任何如锁或信号量这样的互斥同步保护机制,必然会导致竞态条件(Race Condition),从而把数据改得面目全非。
点击评论后加载...
登录 后可参与评论
对磁盘进行移臂调度其目的是缩短( )时间。
参考答案:
C
💡 解析:一次极其漫长的磁盘I/O耗时主要由:寻道时间、旋转延迟和传输时间这三座大山组成。由于移动机械臂对准柱面的“寻道时间”是其中最为沉重缓慢的物理动作,所以移臂调度的全部心思都花在缩短这一步上。
点击评论后加载...
登录 后可参与评论
关于进程同步与互斥的描述,以下哪项是正确的?( )
参考答案:
A
💡 解析:深度概念:其实可以把“互斥”视作一种极度特殊、排他性极强的“同步”制约——即各个进程在访问该特定临界资源时,必须按照严格的先后排队顺序串行前进,绝不容许两人并肩并行。
点击评论后加载...
登录 后可参与评论
下列关于银行家算法的叙述中,正确的是( )。
参考答案:
A
💡 解析:极其重要的因果关系:在银行家算法中,所谓“安全状态”就是指系统用余粮至少能找出一条路线让所有人陆续吃饱干完活(安全序列)。所以只要处于安全状态,就绝对不会发生死锁;但不安全状态仅仅是大概率有风险,并不意味着死锁已经发生。
点击评论后加载...
登录 后可参与评论
以下哪种情况最可能导致内存抖动?( )
参考答案:
C
💡 解析:当系统中挂载了过多的活跃程序,导致它们目前极其频繁使用的数据总量(工作集之和)严重透支了服务器真实可用的物理内存总数,系统只能发了疯一样在磁盘和内存间来回捣腾数据,引发系统崩溃级的严重“抖动”。
点击评论后加载...
登录 后可参与评论
从用户的角度看,文件系统主要是实现( )。
参考答案:
D
💡 解析:普通用户根本不懂也不想懂数据到底存在磁盘哪个扇区、磁道、柱面上。文件系统对用户最大的恩赐就在于:用户只要甩出一个优雅的“文件名”,文件系统就会在底层黑盒里完成所有脏活累活并把数据奉上,这叫“按名存取”。
点击评论后加载...
登录 后可参与评论
操作系统中的系统调用(System Call)本质上是?( )
参考答案:
B
💡 解析:为了系统安危,现代CPU严格区分用户态和内核态。当普通应用程序想要执行涉密、越权操作(如读写系统文件、分配内存)时,不能直接动手,必须通过一条受限的专用通道——即“系统调用”,谦卑地请求OS内核代为执行。
点击评论后加载...
登录 后可参与评论
二、填空题
若一个进程已进入临界区,其他欲进入临界区的进程必须 。
参考答案:
等待 (或阻塞)
💡 解析:临界区是指程序中访问“临界资源(如打印机)”的那段核心代码。因为临界资源具有不可调和的排他性,当这间屋子已经有人时,后来者必须在外面的等待队列中乖乖阻塞等待。
点击评论后加载...
登录 后可参与评论
分时系统常采用 调度算法。
参考答案:
时间片轮转
💡 解析:分时系统的使命是让成百上千个连着服务器的终端用户都感觉极其丝滑。时间片轮转(Round Robin)算法通过给每个就绪进程发个小秒表轮流执行,保证了所有用户都能获得快如闪电的交互响应。
点击评论后加载...
登录 后可参与评论
死锁产生的必要条件是互斥条件、 请求保持、 和环路等待条件。
参考答案:
不剥夺条件 (或不可抢占)
💡 解析:死锁四大元凶:资源必须互斥(互斥)、贪心吃着碗里看着锅里(请求和保持)、拿到的东西不能被别人强行夺走(不剥夺)、以及几个人形成了一个互相卡脖子的死循环链条(环路等待)。
点击评论后加载...
登录 后可参与评论
操作系统的四大资源管理功能是处理机管理、 、设备管理和文件管理。
参考答案:
存储器管理 (或内存管理)
💡 解析:操作系统其实就是计算机硬件的首席大管家。这四大基本管理功能完美对应了计算机内部的四大物理命脉:管理CPU(处理机)、管理内存(存储器)、管理外设(设备)、管理磁盘数据(文件)。
点击评论后加载...
登录 后可参与评论
死锁的产生有4个必要条件,在死锁的预防策略中,资源的有序分配策略可以破坏 条件。
参考答案:
环路等待
💡 解析:资源的有序分配策略是一招狠棋:系统强行给天下所有资源打上编号,规定进程申请资源只能“从小到大”顺着拿。这就从根本上杜绝了进程之间出现交叉逆行的死结,彻底碾碎了环路等待的可能。
点击评论后加载...
登录 后可参与评论
当线程获得CPU资源开始执行时,它处于 状态。
参考答案:
运行 (或执行)
💡 解析:进程状态跃迁基本功:当线程排到了就绪队列的队伍最前面,并且被调度程序亲手把CPU大权交接到它手上的一瞬间,它的状态就昂首挺胸地从就绪态(Ready)切入了运行态(Running)。
点击评论后加载...
登录 后可参与评论
在采用多道程序设计技术的系统中,用户编写程序时使用的地址是 ,装入内存后的地址为 ,这种地址转换的过程叫做 。
参考答案:
逻辑地址, 物理地址, 重定位
💡 解析:程序员在IDE里看到的起始为0的地址叫相对“逻辑地址”;程序被真正扔进内存条芯片里安家落户的位置叫绝对“物理地址”;而让这两者挂钩对应起来的翻译过程,就是大名鼎鼎的“地址映射/重定位”。
点击评论后加载...
登录 后可参与评论
段页式管理中,每取一数据,要访问 次内存。
参考答案:
3
💡 解析:段页式管理是最极客的套娃技术。取一次数据需进行艰苦的三次寻宝访存:第一次去内存查“段表”定位到这块区域的页表基址;第二次去内存查“页表”翻出最终的物理块号;第三次拿着完整地址去内存真正读走数据。
点击评论后加载...
登录 后可参与评论
请求分页管理系统中,采用 页面淘汰算法时,当分配的物理块增多,缺页中断次数反而会 ,这就是“Belady”现象。
参考答案:
FIFO (或先进先出), 增加
💡 解析:Belady异常是系统学界著名的耻辱柱。先进先出(FIFO)算法因为太无脑,只看进入内存的排队时间,完全不懂得珍惜那些虽然来得早但刚刚还在高频使用的核心页面,从而导致了“地盘越大、出错(缺页)越频繁”的诡异反常。
点击评论后加载...
登录 后可参与评论
设备管理的 功能来实现使用用户所编制的程序与实际使用的物理设备无关。
参考答案:
设备独立性
💡 解析:设备独立性(也称设备无关性)是OS极度伟大的抽象封装:程序员写代码只需要说“打印机(逻辑设备名)我要输出”,不用管当前插的是惠普还是爱普生,系统底层软件会自动偷天换日,把它映射到真实的物理引脚上。
点击评论后加载...
登录 后可参与评论
I/O软件通常被组织成用户层软件、 、设备驱动程序和中断程序四个层次。
参考答案:
设备独立性软件
💡 解析:现代操作系统I/O架构是一座森严的金字塔堡垒。自上而下:最高层面对开发者的【用户层I/O】 -> 负责逻辑映射的【设备独立性软件】 -> 专为某款硬件量身定制的【设备驱动程序】 -> 直击底层的【中断处理程序】。
点击评论后加载...
登录 后可参与评论
系统中各进程之间逻辑上的相互制约关系称为 。
参考答案:
同步
💡 解析:由于并发进程之间往往是在同一条流水线上打螺丝的工友,一个人不把零件递过来,另一个人就绝对不能瞎推进操作。这种为了合作完成任务而在执行次序上产生的苛刻协调制约机制,就叫进程“同步”。
点击评论后加载...
登录 后可参与评论
有m个进程共享同一临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是 。
参考答案:
1 到 -(m-1)
💡 解析:极为高频的考点:由于是单一互斥资源,初始信号量定为1。当第一个幸运儿拿走并变为0入内后;此时如果外面全员恶人(剩下的 m-1 个进程全来敲门),它们统统都会执行P操作并被无情挂起。信号量每挂起一人就记一次仇(减1),最终暴跌至 -(m-1)。
点击评论后加载...
登录 后可参与评论
常用的I/O控制方式有程序直接控制方式、中断控制方式、 和通道控制方式。
参考答案:
DMA (或直接内存访问)
💡 解析:这是计算机从原始石器时代到高度自动化的I/O进化史:从最早的CPU苦哈哈轮询死等,进化到单字节中断驱动,再飞跃到专门搬运成块数据的DMA(直接内存访问),最后进化出相当于一台独立小电脑的超级“通道控制”。
点击评论后加载...
登录 后可参与评论
将上层软件发来的要转换为具体指令发给设备控制器的程序称为 。
参考答案:
设备驱动程序
💡 解析:设备驱动程序(Device Driver)是这层金字塔中直接同枯燥冰冷的硬件打交道的翻译官。它负责把OS抛来的抽象I/O命令,翻译转化成显卡、网卡特定寄存器能看懂的二进制底层信号跳变。
点击评论后加载...
登录 后可参与评论
设有8页的逻辑空间,每页有1024字节,它们被映射到32块的物理内存储区中。那么,物理地址至少是 位。
参考答案:
15
💡 解析:二进制推导大满贯:物理内存被划为32块,即 32 = 2^5,所以物理块号的地址编码需要占用 5 位;每块(页)的肚子大小为1024字节,即 1024 = 2^10,所以页内偏移定位需要 10 位。两者拼接,物理地址总长度 = 5 + 10 = 15 位。
点击评论后加载...
登录 后可参与评论
根据文件的逻辑结构,文件分为 和记录式文件。
参考答案:
流式文件
💡 解析:文件从用户的逻辑观察视角被狠狠分为了两大阵营:一种是没有任何框架可言,里面文字代码直接当成连绵不断的字节流堆进去的“无结构流式文件(如.txt源程序)”;另一种则是被规规矩矩划分成了一行行表格字段的“有结构记录式文件(如数据库表)”。
点击评论后加载...
登录 后可参与评论
三、判断题
有m个进程的操作系统出现死锁时, 死锁进程的个数为1。 ( )
参考答案:
错
💡 解析:死锁的本质是一场无法解开的“三角恋僵局”。它必然是因为系统中有两个或两个以上的并发进程都在互相死死卡住并等待对方手中紧握的资源。所以一旦爆出死锁灾难,涉及进去的进程数量至少也是2个起步。
点击评论后加载...
登录 后可参与评论
原语是一种不可分割的操作。 ( )
参考答案:
对
💡 解析:原语(Primitive)是驻扎在操作系统内核最深处、专门用来完成核心特定控制的一段机器指令代码。为了保证系统核心数据的绝对一致性,它在启动执行时会直接通过“关中断”等极端手段屏蔽宇宙一切干扰,具备雷打不动、不可分割的绝对“原子性”。
点击评论后加载...
登录 后可参与评论
操作系统用PCB管理进程,用户进程可以从PCB中读出与本身运行状况有关的信息。 ( )
参考答案:
错
💡 解析:PCB(进程控制块)里装着如CPU寄存器现场、进程高危特权级等极端机密的档案,它是受OS内核铁壁重重保护的核心资产。普通用户进程只配在低权限的用户态摸爬滚打,如果让它能直接触碰甚至读取PCB数据,整个操作系统的安全性将瞬间千疮百孔。
点击评论后加载...
登录 后可参与评论
简单地说,进程是程序的执行过程。因而,进程和程序是一一对应的。 ( )
参考答案:
错
💡 解析:进程是动态运行的生命体,程序是静态死板的代码文本,它俩绝对没有一一对应的绑定关系。一个程序文件被用户疯狂双击启动多次,就能在内存里分裂出十几个不同的独立进程;而一个宏大的进程在漫长的一生中,也能不断去调用和执行不同的代码程序段。
点击评论后加载...
登录 后可参与评论
段式管理易于实现进程间的信息共享。 ( )
参考答案:
对
💡 解析:分段系统是极其符合人类大脑逻辑的,它将程序按自然意义切片(比如这段专门管主程序、那段专门放全量数据)。若想在不同进程间分享一段核心代码,只要让各进程的段表指针指向内存里的同一个物理段基址即可,比被打得粉碎毫无逻辑的纯分页机制容易百倍。
点击评论后加载...
登录 后可参与评论
在过去很长一段时间内,鉴于计算机系统非常昂贵,所以有效性曾一度是操作系统最为重要的设计目标。 ( )
参考答案:
对
💡 解析:在六七十年代的计算机史前时代,大型机机房占满一层楼且价格连城。为了不让哪怕一秒钟的昂贵算力和磁带被浪费掉,当时的系统架构师如魔怔般将“有效性”设为了至高无上的操作系统设计圣杯,力求压榨尽每一滴资源利用率。
点击评论后加载...
登录 后可参与评论
若系统通过资源分配图检测到死锁,则必须通过终止所有涉及死锁的进程来解除死锁( )
参考答案:
错
💡 解析:在解除死锁的急救手术中,虽然一刀切“终止所有死锁进程”可以破局,但这属于极端惨烈的毁灭性打击代价过大。通常更精妙的做法是:一边进行图推演,一边“逐个定点撤销”进程直到死锁环路断裂;或者采用“资源剥夺法”强行缴械某个特定进程的资源来喂饱其他人。
点击评论后加载...
登录 后可参与评论
操作系统的所有程序都必须常驻内存。 ( )
参考答案:
错
💡 解析:现代操作系统动辄几十GB的体积,如果全塞进内存,留给用户玩游戏的物理空间就不复存在了。因此,OS只会保留其“微内核核心”(如进程调度、中断分配器)常驻内存保命。而其余如各种UI程序、非常用工具或低频驱动,完全可以扔在硬盘外存上吃灰,需要用时再调入。
点击评论后加载...
登录 后可参与评论
操作系统中的共享资源(如内存、文件)必须互斥访问,否则会导致数据不一致。( )
参考答案:
错
💡 解析:并非所有资源都需要这么霸道地强加互斥枷锁。如果是纯粹的“只读共享文件”或“纯代码公共执行段”,因为没有人能够去篡改涂抹它,它完全允许并支持几十个并发进程高强度地“同时一拥而上并肩读取”,根本不需要互斥排队。
点击评论后加载...
登录 后可参与评论
不同的进程必然对应不同的程序。 ( )
参考答案:
错
💡 解析:逻辑完全反了!不同的进程完全可以同时跑同一个程序。比如服务器上部署了一套Nginx网页服务端程序(一份二进制代码),但系统可以为每一个同时连进来的网友瞬间创建一百个独立的新进程,它们执行的全部都是同一套代码流程。
点击评论后加载...
登录 后可参与评论
操作系统通过多道程序设计实现CPU与I/O设备的并行工作,体现了并发性。 ( )
参考答案:
对
💡 解析:多道程序设计的灵魂就在于此:当正坐在CPU上运算的进程突然要等非常漫长的键盘输入(I/O操作)时,OS会冷酷地把它踢开,让CPU立马去运算第二个排队就绪的进程。这种由于高速交替掩盖了等待时间、让CPU和外设时刻满载推进的魔法,完美体现了宏观上的并发性。
点击评论后加载...
登录 后可参与评论
在进程-线程机制中引入了线程,进程与它的线程们在同一逻辑地址空间,但却不适合多核CPU系统。 ( )
参考答案:
错
💡 解析:这种说法简直是在贬低线程的价值!相反,轻量级的线程机制简直是为多核CPU环境“量身定做”的绝杀武器。在现代OS中,处于同一进程屋檐下、共享内存空间的各个线程兄弟,可以被系统精准地扔到主板上不同的几个物理核心上,实现火力全开的真正硬“并行”运算。
点击评论后加载...
登录 后可参与评论
在实时调度中,任务的截止时间(Deadline)越早,其优先级应越高。 ( )
参考答案:
对
💡 解析:在如飞控系统、自动驾驶这种硬实时(RTOS)系统中,任务如果超时可能直接导致机毁人亡。因此著名的最早截止时间优先(EDF,Earliest Deadline First)调度算法是一种最经典的救命策略,死神镰刀离谁最近,谁的优先级就绝对最高。
点击评论后加载...
登录 后可参与评论
优先权调度算法中,在考虑静态优先权时,一般计算进程的优先权高于磁盘I/O进程的优先权。 ( )
参考答案:
错
💡 解析:在设计静态优先权时,操作系统的哲学是“反着来”的。因为I/O操作极为迟缓,系统反而会赋予I/O繁忙型进程极高的优先权。只要让这类进程先插队拿到一点点CPU时间发出I/O指令,它们就会马上让出CPU跑去等设备;这样CPU立刻就能回头算账去处理计算型进程,极大拉高了硬件并行率。
点击评论后加载...
登录 后可参与评论
虚拟存储器中,页表的每一项必须同时包含物理页框号和访问控制信息。 ( )
参考答案:
对
💡 解析:在极为复杂的请求分页虚拟内存管理机制中,薄薄的页表不仅要扮演导航员记录物理页框映射,还必须在表项里塞入各类关键探针:比如状态位(标记页是不是在磁盘上没调入)、修改位(判断被改过没有是否需要回写)、以及权限位(记录是只读还是可执行防止非法篡改)。
点击评论后加载...
登录 后可参与评论
树形结构目录可以解决文件重名问题。 ( )
参考答案:
对
💡 解析:树形目录(多级目录)的伟大在于它引入了空间隔离法则。从此以后,系统不再单靠一个干瘪的文件名认人,而是靠带上前缀的完整“绝对路径名”作为身份证。只要两个同名文件藏在树干不同的枝丫(不同文件夹)里,它们的路径就不会冲突,重名危机迎刃而解。
点击评论后加载...
登录 后可参与评论
SPOOLing技术的核心是将独占设备改造为共享设备,以缓解 CPU 与低速 I/O 设备的速
度矛盾。 ( )
参考答案:
对
💡 解析:SPOOLing(假脱机操作)就是计算机世界里的“快递代收点”。它通过在高速磁盘上开辟缓冲井截留输入输出数据,将原本极慢且绝不能被人中途插队的独占物理设备(如打印机),欺骗性地虚拟成能同时接收所有人投递数据的“超级共享逻辑设备”。
点击评论后加载...
登录 后可参与评论
虚拟存储器是以时间为代价换取空间的。 ( )
参考答案:
对
💡 解析:天下没有免费的午餐!虚拟内存通过缺页异常把磁盘空间幻化成了内存,让你的进程能享受几十个G的海量“虚拟空间”;但一旦用到没载入的数据,就会陷入慢如蜗牛的硬盘I/O等待泥潭,严重拖累程序的实际执行速度,这属于最经典的用“时间换空间”架构妥协。
点击评论后加载...
登录 后可参与评论
在一个只有单个CPU的计算机中,进程不能并行操作。 ( )
参考答案:
对
💡 解析:必须死死钉住一个底层定律:对于单核CPU的机器来说,在某一个切分到极致的微观量子时刻,处理器的物理晶体管绝对只够去运算和推进唯一的一个进程!大家看起来像是一同推进,只不过是因为CPU切换太快引发的宏观并发(Concurrency)错觉,绝对达不到物理级并行(Parallelism)。
点击评论后加载...
登录 后可参与评论
四、综合大题
有一页式系统,其页表承存放在主存中。假定快表检索时间为20ns,内存访问时间为120ns,快表查找命中率为90%。
(1)若可以在快表中找到CPU 给出的页号,则实现一次页面访问时间为多少?
(2)若在快表中找不到CPU 给出的页号,则实现一次页面访问时间为多少?
(3)引入快表后,内存有效访问时间为多少?(假定查快表的时间忽略不计)
参考答案:
解:
(1)若快表命中,需访问一次快表和一次内存:
访问时间 = 20ns(查快表) + 120ns(访内存获取数据) = 140ns。
(2)若快表未命中,需访问一次快表,随后访问内存中的页表,再访问内存获取数据:
访问时间 = 20ns(查快表) + 120ns(查内存页表) + 120ns(访内存获取数据) = 260ns。
(3)题目要求假定查快表的时间忽略不计(即快表检索时间按0计算):
有效访问时间(EAT)计算公式为:
EAT = 命中率 × 内存访问时间 + (1 - 命中率) × (查内存页表时间 + 访内存数据时间)
EAT = 90% × 120ns + (1 - 90%) × (120ns + 120ns)
EAT = 108ns + 24ns = 132ns。
💡 解析:考点:快表有效访问时间(EAT)的计算。解答需严格遵循题干附加条件,若第三问未注明“忽略查快表时间”,标准的EAT应为 `90% × 140ns + 10% × 260ns = 152ns`。
点击评论后加载...
登录 后可参与评论
假定某采用分页式存储管理的系统中,主存容量为2MB,被分成128块,块号为0,1,2,……,127。某作业的地址空间占4页,其页号为0,1,2,3,被分配到主存的第2,4,1,5块中。回答:
(1)主存地址应该用多少位来表示?
(2)作业每一页的长度是多少?
(3)逻辑地址中的页内偏移应用多少位来表示?
(4)写出作业中的每一页在主存块中的起始地址。
参考答案:
解:
(1)主存容量为 2MB = 2^21 Bytes,系统按字节编址,因此主存物理地址需要 21 位。
(2)主存被分为 128 块(128 = 2^7),页长等于主存块长:
页长 = 2MB ÷ 128 = 2^21 ÷ 2^7 = 2^14 Bytes = 16KB。
(3)因为页长为 16KB(2^14 Bytes),所以逻辑地址中的页内偏移量需要 14 位来表示。
(4)物理块的起始地址 = 物理块号 × 块长(即 16KB 或 4000H 字节):
- 逻辑页号 0(第 2 块):起始物理地址 = 2 × 16KB = 32KB (十六进制:08000H)
- 逻辑页号 1(第 4 块):起始物理地址 = 4 × 16KB = 64KB (十六进制:10000H)
- 逻辑页号 2(第 1 块):起始物理地址 = 1 × 16KB = 16KB (十六进制:04000H)
- 逻辑页号 3(第 5 块):起始物理地址 = 5 × 16KB = 80KB (十六进制:14000H)
💡 解析:考点:分页存储管理中存储容量计算与地址结构。解题核心在于根据总容量与块数准确算出页长(块长),进而推导出偏移量位数及各块的起始地址。
点击评论后加载...
登录 后可参与评论
在页式存储管理中,假设作业的地址为16位,页长为2KB,作业的第0,1,2,3逻辑页分别放在内存的第5,12,11,7物理块中,试计算作业中逻辑地址1E7AH,0E4CH,326CH相对应的内存物理地址,说明转换过程、写出转换结果。
参考答案:
解:
逻辑地址总长 16 位,页长 2KB = 2^11 Bytes(十六进制为 0800H)。因此逻辑地址的低 11 位为页内偏移量(W),高 5 位为逻辑页号(P)。
1. 转换逻辑地址 1E7AH:
- 提取页号 P = 1E7AH ÷ 0800H = 3(取商)。
- 提取偏移 W = 1E7AH % 0800H = 067AH(取余)。
- 查页表:页号 3 对应物理块号 7。
- 物理地址 = 物理块号 × 块长 + 偏移量 = 7 × 0800H + 067AH = 3800H + 067AH = 3E7AH。
2. 转换逻辑地址 0E4CH:
- 提取页号 P = 0E4CH ÷ 0800H = 1。
- 提取偏移 W = 0E4CH % 0800H = 064CH。
- 查页表:页号 1 对应物理块号 12(十六进制 0CH)。
- 物理地址 = 12 × 0800H + 064CH = 0C00H × 2 + 064CH = 6000H + 064CH = 664CH。
3. 转换逻辑地址 326CH:
- 提取页号 P = 326CH ÷ 0800H = 6。
- 提取偏移 W = 326CH % 0800H = 026CH。
- 查页表:该作业长度仅包含页号 0~3,所求页号 6 超出页表长度范围。
- 转换结果:产生地址越界中断,无法进行地址转换。
💡 解析:考点:分页机制下十六进制逻辑地址到物理地址的转换。关键方法是分离页号和页内偏移,转换过程中页内偏移量保持不变。同时需留意越界检查条件。
点击评论后加载...
登录 后可参与评论
在银行家算法中,若出现下述资源分配情况,试问:
(1)该状态下是否安全(写出过程)?
(2)若进程P4提出请求Request(1,1,1,0)时,系统能否将资源分配给它(写出过程)?
参考答案:
解:
(1)当前系统状态安全性检查:
初始 Available = (4, 4, 2, 1)。寻找安全序列的推演过程如下:
存在安全序列(如 {P1, P2, P3, P0, P4} 或 {P2, P1, P3, P0, P4} 等),故该状态安全。
(2)若 P4 提出请求 Request(1, 1, 1, 0):
① 检查 Request ≤ Need:(1,1,1,0) ≤ (3,1,3,2),合法。
② 检查 Request ≤ Available:(1,1,1,0) ≤ (4,4,2,1),可用资源充足。
③ 试探性分配并更新矩阵:
- Available = (4,4,2,1) - (1,1,1,0) = (3, 3, 1, 1)
- Allocation[P4] = (1,1,0,1) + (1,1,1,0) = (2, 2, 1, 1)
- Need[P4] = (3,1,3,2) - (1,1,1,0) = (2, 0, 2, 2)
④ 以新分配后的状态进行安全性检查(初始 Work = 3 3 1 1):
在推进完 P1、P2、P3 后,Work 积累为 (9, 8, 1, 4)。此时 P0 需要 (3,2,2,0),P4 需要 (2,0,2,2),两者对第三类资源的需求均超过当前剩余量 1,系统无法继续分配,陷入不安全状态。
结论:不能将资源分配给 P4。
| Process | Work | Need | Allocation | Work+Allocation | Finish |
|---|---|---|---|---|---|
| P1 | 4 4 2 1 | 1 1 0 1 | 2 1 0 1 | 6 5 2 2 | True |
| P2 | 6 5 2 2 | 1 1 0 1 | 1 1 0 1 | 7 6 2 3 | True |
| P3 | 7 6 2 3 | 0 0 1 1 | 3 3 0 1 | 10 9 2 4 | True |
| P0 | 10 9 2 4 | 3 2 2 0 | 1 1 1 2 | 11 10 3 6 | True |
| P4 | 11 10 3 6 | 3 1 3 2 | 1 1 0 1 | 12 11 3 7 | True |
| Process | Work | Need | Allocation | Work+Allocation | Finish |
|---|---|---|---|---|---|
| P1 | 3 3 1 1 | 1 1 0 1 | 2 1 0 1 | 5 4 1 2 | True |
| P2 | 5 4 1 2 | 1 1 0 1 | 1 1 0 1 | 6 5 1 3 | True |
| P3 | 6 5 1 3 | 0 0 1 1 | 3 3 0 1 | 9 8 1 4 | True |
| P0 | 9 8 1 4 | 3 2 2 0 | 1 1 1 2 | - | False |
| P4 | 9 8 1 4 | 2 0 2 2 | 2 2 1 1 | - | False |
💡 解析:考点:银行家算法原理。处理新的分配请求时,核心步骤是先根据试探分配更新 Available、Allocation 和 Need 矩阵,再以此新状态为起点执行安全性检测。如无法找到包含所有进程的安全序列,则必须拒绝该请求。
点击评论后加载...
登录 后可参与评论
题中给出了某系统中的空闲分区表,系统采用可变式分区存储管理策略。现有以下作业序列:79KB、40KB、120KB。若用(1)循环首次适应算法和(2)最坏适应算法来处理这些作业序列,填写分配后的分区情况,(3)试问哪一种算法可以满足该作业序列的请求,为什么?
参考答案:
解:
(1)循环首次适应算法 (Next Fit) 分配情况:
- 装入 79KB:从1号区始查,4号区(225KB)满足。切分后,4号区剩余 146KB。检索指针指向5号区。
- 装入 40KB:从5号区始查,5号区(70KB)满足。切分后,5号区剩余 30KB。检索指针循环回到1号区。
- 装入 120KB:从1号区始查,1、2、3号区均不足,4号区的剩余部分(146KB)满足。切分后,4号区最终剩余 26KB。
结果:所有作业均分配成功。
(2)最坏适应算法 (Worst Fit) 分配情况:
- 装入 79KB:全表最大的空闲区是4号区(225KB)。切分后,4号区剩余 146KB。
- 装入 40KB:全表最大的空闲区依然是4号区(146KB > 70KB)。切分后,4号区剩余 106KB。
- 装入 120KB:全表最大的空闲区当前仅为106KB,不满足120KB的需求。
结果:分配失败。
(3)结论与原因:
循环首次适应算法可以满足该作业序列的请求。
原因:最坏适应算法优先分配最大的空闲分区,导致本可容纳120KB作业的4号分区被过早连续分割;而循环首次适应算法通过检索指针的轮转,将40KB的作业分配到了5号分区,从而完整保留了4号分区的剩余空间以供120KB作业装入。
💡 解析:考点:动态分区分配算法特性推演。循环首次适应算法的查找指针会接续上次分配位置继续向后推进;最坏适应算法则每次均扫描全表选取最大空闲块。
点击评论后加载...
登录 后可参与评论
设有4道作业,它们的提交时间及执行时间如下:
试计算在单道程序环境下,采用先来先服务调度算法和时间片轮转调度算法(时间片为1)时的平均周转时间和平均带权周转时间,并指出它们的调度顺序。(时间单位:小时,以十进制进行计算,除不尽用分数表示。)
参考答案:
解:
(1)先来先服务调度算法 (FCFS):
调度顺序:1 -> 2 -> 3 -> 4
- 平均周转时间 = (1.6 + 4.4 + 5.7 + 7.9) / 4 = 4.9 小时
- 平均带权周转时间 = (1 + 22/15 + 57/25 + 79/33) / 4 = 5891 / 3300
(2)时间片轮转调度算法 (RR,时间片q=1):
就绪队列演变过程与执行:
- 0.0~1.0:作业1执行。1.0时作业2到达(排入队列),随后作业1时间片耗尽(排入队尾)。队列:[2, 1]
- 1.0~2.0:作业2执行。2.0时作业3(1.4到达)已在队列内,作业2排入队尾。队列:[1, 3, 2]
- 2.0~2.6:作业1执行结束。2.6时队列为:[3, 2]。(注:2.5时作业4到达,故2.6时队列实际为:[3, 2, 4])
- 2.6~3.6:作业3执行。队列:[2, 4, 3]
- 3.6~4.6:作业2执行。队列:[4, 3, 2]
- 4.6~5.6:作业4执行。队列:[3, 2, 4]
- 5.6~6.6:作业3执行。队列:[2, 4, 3]
- 6.6~7.6:作业2执行结束。队列:[4, 3]
- 7.6~8.6:作业4执行。队列:[3, 4]
- 8.6~9.1:作业3执行结束。队列:[4]
- 9.1~10.4:作业4独立执行直至结束。
- 平均周转时间 = (2.6 + 7.4 + 7.7 + 7.9) / 4 = 6.4 小时
- 平均带权周转时间 = (13/8 + 37/15 + 77/25 + 79/33) / 4 = 63133 / 26400
| 作业号 | 提交时间 | 执行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|---|---|
| 1 | 0.0 | 1.6 | 0.0 | 1.6 | 1.6 | 1 |
| 2 | 0.2 | 3.0 | 1.6 | 4.6 | 4.4 | 22/15 |
| 3 | 1.4 | 2.5 | 4.6 | 7.1 | 5.7 | 57/25 |
| 4 | 2.5 | 3.3 | 7.1 | 10.4 | 7.9 | 79/33 |
| 作业号 | 提交时间 | 执行时间 | 开始开始执行时间 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|---|---|
| 1 | 0.0 | 1.6 | 0.0 | 2.6 | 2.6 | 13/8 |
| 2 | 0.2 | 3.0 | 1.0 | 7.6 | 7.4 | 37/15 |
| 3 | 1.4 | 2.5 | 2.6 | 9.1 | 7.7 | 77/25 |
| 4 | 2.5 | 3.3 | 4.6 | 10.4 | 7.9 | 79/33 |
💡 解析:考点:作业调度算法模拟及周转指标计算。在RR算法模拟中需着重关注进程排队顺序:若当前进程时间片耗尽与新进程到达恰好同时发生,通常新到达进程先进入就绪队列,当前进程再排入队尾。
点击评论后加载...
登录 后可参与评论
10.在一个单CPU的多道程序设计系统中,若在某一时刻有N个进程同时存在,那么处于运行态、阻塞态和就绪态进程个数的最小值和最大值分别可能是多少?
参考答案:
解:
在单CPU系统中,某一时刻N个进程处于各状态的数量极值如下:
1. 运行态:
- 最小值:0。当系统所有进程都因等待I/O等事件而被阻塞,或者系统正在进行进程切换时。
- 最大值:1。单核CPU在同一时刻最多只能物理执行一个进程。
2. 就绪态:
- 最小值:0。当所有进程都处于阻塞态,或系统中唯一未阻塞的进程正在运行态时。
- 最大值:N - 1。当1个进程正在运行,其余N-1个进程均满足运行条件并在就绪队列中排队等待分配CPU时。
3. 阻塞态:
- 最小值:0。当所有进程都不需等待外部事件(如纯计算密集型作业),全部处于运行态或就绪态时。
- 最大值:N。当所有N个进程都在等待外部事件(如输入/输出操作完成)而无法推进时。
💡 解析:考点:进程基本状态及并发运行的物理约束。解题时需结合单核CPU的绝对物理限制(并发度为1)以及全体进程发生I/O等特殊极限场景来得出边界值。
点击评论后加载...
登录 后可参与评论
某系统有A、B、C、D四类资源可供五个进程P1,P2,P3,P4,P5共享。系统对这四类资源的拥有量为:A类3个、B类14个、C类12个、D类12个。进程对资源的需求和分配情况如下...
按银行家算法回答下列问题:
(1)现在系统中的各类资源还剩余多少?
(2)现在系统是否处于安全状态?为什么?
(3)如果现在进程P2提出需要A类资源0个、B类资源4个、C类资源2个和D类资源0个,系统能否去满足它的请求?请写出过程并说明原因。
参考答案:
解:
(1)系统资源剩余量 (Available) 计算:
总资源 Total = (3, 14, 12, 12)
已分配资源 Allocation 之和 = (0,0,1,2) + (1,0,0,0) + (1,3,5,4) + (0,6,3,2) + (0,0,1,4) = (2, 9, 10, 12)
剩余可用资源 Available = Total - Allocation = (1, 5, 2, 0)。
各进程的 Need 矩阵 (Max - Allocation) 分别为:
P1: (0,0,0,0); P2: (0,7,5,0); P3: (1,0,0,2); P4: (0,0,2,0); P5: (0,6,4,2)。
(2)当前状态安全性检查:
以当前 Available = (1, 5, 2, 0) 作为 Work 起始节点进行试探推演。
存在安全序列 {P1, P4, P5, P2, P3},系统当前处于安全状态。
(3)P2 提出 Request(0, 4, 2, 0) 的判定:
① 检查 Request ≤ Need: (0,4,2,0) ≤ (0,7,5,0),需求合理。
② 检查 Request ≤ Available: (0,4,2,0) ≤ (1,5,2,0),可用资源充足。
③ 试探性分配并更新矩阵:
- Available = (1,5,2,0) - (0,4,2,0) = (1, 1, 0, 0)
- Allocation[P2] = (1,0,0,0) + (0,4,2,0) = (1, 4, 2, 0)
- Need[P2] = (0,7,5,0) - (0,4,2,0) = (0, 3, 3, 0)
④ 以新的状态执行安全性检查(起始 Work = 1 1 0 0):
- 满足 P1:Need(0,0,0,0) ≤ Work(1,1,0,0),执行后 Work = (1,1,0,0) + (0,0,1,2) = (1, 1, 1, 2)。
- 满足 P3:此时仅有 P3 的 Need(1,0,0,2) ≤ Work(1,1,1,2),执行后 Work = (1,1,1,2) + (1,3,5,4) = (2, 4, 6, 6)。
- 随后 Work 已足够依次满足 P4、P2、P5。
存在安全序列 {P1, P3, P4, P2, P5},系统维持在安全状态。
结论:可以满足 P2 的请求。
| 进程 | Work | Need | Allocation | Work+Allocation | Finish |
|---|---|---|---|---|---|
| P1 | 1 5 2 0 | 0 0 0 0 | 0 0 1 2 | 1 5 3 2 | True |
| P4 | 1 5 3 2 | 0 0 2 0 | 0 6 3 2 | 1 11 6 4 | True |
| P5 | 1 11 6 4 | 0 6 4 2 | 0 0 1 4 | 1 11 7 8 | True |
| P2 | 1 11 7 8 | 0 7 5 0 | 1 0 0 0 | 2 11 7 8 | True |
| P3 | 2 11 7 8 | 1 0 0 2 | 1 3 5 4 | 3 14 12 12 | True |
💡 解析:考点:银行家算法安全性检查全流程。在分配推演的中间状态中,当遇到表面看来资源极度紧张的局面(如Work=(1,1,1,2))时,应逐一比对所有进程的Need矩阵,只要能推进任何一个进程获取其归还的资源,即可打破僵局继续推演。
点击评论后加载...
登录 后可参与评论
已知一个求值公式(A^2+3B) / (B+5A),若A、B已赋值,试画出该公式求值过程的前趋图。
参考答案:
解:
根据表达式运算优先次序和数据依赖关系,将公式的求值过程分解为如下操作节点:
S1: 计算 A^2
S2: 计算 3B
S3: 计算 5A
S4: 计算 A^2 + 3B
S5: 计算 B + 5A
S6: 计算 S4 / S5
数据关联及其约束关系为:
- S4 的计算依赖于 S1 和 S2 的执行结果。
- S5 的计算依赖于 S3 的执行结果。
- S6 的计算依赖于 S4 和 S5 的执行结果。
由此得出对应的前趋图(DAG)如下:
S1 S2 S3
\ / |
\ / |
S4 S5
\ /
\ /
S6
💡 解析:考点:并发操作执行顺序前趋图 (DAG) 的绘制。解题原则是将互不依赖、可并行的运算提取到同一层级,并通过有向边严格指向依赖其结果的后续运算步骤。
点击评论后加载...
登录 后可参与评论
一组相互合作的进程P1、P2、P3、P4、P5、P6,其执行过程须满足如图所示的同步关系,请使用信号量机制对该组进程进行同步。
(注:前趋图关系为:P1 -> P2, P3;P2 -> P4;P3 -> P5;P4 -> P5;P5 -> P6)
参考答案:
解:
根据前趋图关系,图中共存在 6 条有向制约边。因此需要定义 6 个信号量来进行同步控制,其初始值均设为 0:
semaphore S12=0, S13=0, S24=0, S35=0, S45=0, S56=0;
各进程的同步控制伪代码如下:
Process P1() {
执行 P1 的操作;
V(S12); // 唤醒 P2
V(S13); // 唤醒 P3
}
Process P2() {
P(S12); // 等待 P1 完成
执行 P2 的操作;
V(S24); // 唤醒 P4
}
Process P3() {
P(S13); // 等待 P1 完成
执行 P3 的操作;
V(S35); // 唤醒 P5
}
Process P4() {
P(S24); // 等待 P2 完成
执行 P4 的操作;
V(S45); // 唤醒 P5
}
Process P5() {
P(S35); // 等待 P3 完成
P(S45); // 等待 P4 完成
执行 P5 的操作;
V(S56); // 唤醒 P6
}
Process P6() {
P(S56); // 等待 P5 完成
执行 P6 的操作;
}
💡 解析:考点:利用 PV 操作及信号量机制实现进程间同步。解题规则:前趋图中每一条有向边对应一个同步信号量。边起点对应进程在其业务操作后使用 V 操作发送信号;终点对应进程在其业务操作前使用 P 操作等待信号。汇聚进程(如P5)需等待所有相关前驱进程信号。
点击评论后加载...
登录 后可参与评论