admin管理员组文章数量:1570220
文章目录
- 简答题
- 📚 操作系统的功能
- 📚 os与硬件和其他系统软件之间的关系
- 📚 设置内存I/O缓冲区的原因
- 📚 死锁
- 📙 产生死锁的原因
- 📙 产生死锁的必要条件
- 📙 检测死锁(资源分配图)
- 📙 预防死锁(最易实现)
- 📙 避免死锁(资源利用率最高)
- 📙 解除死锁
- 📚 虚拟存储器的概念
- 📚 磁盘调度算法
- 📚 作业调度算法
- 📚 动态重定位的目的和实现
- 📚 各种分区分配的优缺点
- 📙 单一连续
- 📙 固定分区
- 📙 动态分区
- ✨ 空闲分区
- ✨ 分区分配算法
- ✨ 分区分配
- ✨ 分区回收
- 📚 几种分区分配算法的优缺点
- 📚 文件管理
- 📙 文件的物理结构及其组织方式
- 📙 几种文件物理组织方式的优缺点
- 📚 IO 管理
- 📙 逻辑设备
- 📙 物理设备
- 📙 逻辑设备到物理设备的变换
- 📙 SPOOLING系统的实现过程
- 综合题
- 📚 举例:并发进程的问题并改正
- 📚 pv操作
- 📚 读者写者
- 📕 火车订票系统
- 📚 信箱通信
- 📚 银行家算法
- 📕 银行家算法避免死锁
- 📚 进程调度算法
- 📙 先来先服务算法
- 📙 短作业优先算法
- 📙 高响应比优先算法
- 🏆 小结
- 📙 时间片轮转算法
- 📙 优先级调度算法
- 📙 多级反馈队列调度算法
- 🏆 小结
- 📕 多级反馈队列怎么用户友好了?
- 📚 单道批处理作业调度
- 📙 平均进程周转时间
- 📙 响应比的计算
- 📕 计算平均周转时间
- 📚 页面置换算法
- 📙 缺页率
- 📙 最佳置换算法(OPT)
- 📙 先进先出置换算法(FIFO)
- 📙 最近最久未使用算法(LRU)
- 📙 时钟置换算法(CLOCK)
- 📙 改进型的时钟置换算法
- 一、操作系统概述
- 💖 1000题集
- 🍁 单选题
- 🍁 综合应用题
- 1. 单道与多道批处理系统的特点及优缺点。
- 3. 试在交互性、及时性和可靠性方面,将分时系统与实时系统进行比较。
- 4. 说明实时任务的类型和实时系统的类型。
- 5. 处理机管理有哪些功能?它们的主要任务是什么?
- 7. 操作系统必须具备的功能有哪些?
- 💖 天勤高分笔记
- 🍁 选择题
- 🍁 综合题
- 33. 计算程序运行时间
- 35. 虚拟
- 37. 操作系统与硬件、其他系统软件的关系
- 38. 指令保护
- 40. 设计队列调度策略
- 二、进程管理
- 💖 1000题集
- 🍁 单选题
- 🍁 综合应用题
- 1. 判断死锁的必要条件
- 3. 举例说明,P、V操作为什么要设计成原语
- 4. 进程并发时间计算
- 5. 记录型信号量进程同步
- 7. AND信号量(可选)
- 8. 信号量同步算法 ⭐
- 9. 记录型信号量 哲学家进餐问题
- 10. 临界区前后的P V操作 ⭐
- 12. 修改 生产者-消费者问题的错误。
- 17. 死锁问题种种
- 18. 简述预防死锁的办法。
- 19. 中断与临界区
- 23. 资源分配 安全序列 银行家算法
- 25. 阅览室 信号量进程同步
- 26. 进程互斥 信号量 ⭐⭐
- 💖 天勤高分笔记
- 🍁 选择题
- 🍁 综合题
- 81. 进程的同步与互斥 ⭐⭐
- 83. 进程竞争资源呢
- 85. 转账 避免死锁
- 87. 进程之间的制约关系
- 96. 火车订票
- 97. 哲学家吃饭问题
- 98. 并发进程写结果
- 99. 并发进程的正确性
- 110. 处理器调度
- 三、存储管理
- 💖 1000题集
- 🍁 单选题
- 🍁 综合应用题
- 1. 何谓静态链接、装入时动态链接和运行时动态链接?
- 2. 引入动态重定位的目的是什么?
- 3. 为什么要引入段页式存储管理?说明在段页式存储管理系统中的地址变换过程。
- 11. 为什么说分段系统较之分页系统更易于实现信息共享和保护?
- 12. 分页和分段有何区别?
- 13. 试全面比较连续分配和离散分配方式。
- 22. 为什么要引入虚拟存储器的概念?
- 💖 天勤高分笔记
- 🍁 选择题
- 四、文件管理
- 💖 1000题集
- 🍁 单选题
- 🍁 综合应用题
- 1. 什么是文件的物理结构?它有哪几种组织方式?
- 2. 叙述各种文件物理组织方式的主要优缺点。
- 3. 一个UNIX文件F的存取权限为rwxr-x---,该文件的文件主uid=12,gid=1,另一个用户的uid=6,gid=1,是否允许该用户执行文件F?
- 💖 天勤高分笔记
- 🍁 选择题
- 五、输入输出管理
- 💖 1000题集
- 🍁 单选题
- 🍁 综合应用题
- 2. 什么是逻辑设备?什么是物理设备?如何实现从逻辑设备到物理设备的变换?这样做有什么好处?
- 💖 天勤高分笔记
- 🍁 选择题
- 🍁 综合题
简答题
🔔 简答题:一切从简
📚 操作系统的功能
- 用户接口:操作系统与用户的接口。
- 处理机管理:对处理机的分配和运行实施有效管理。
- 存储管理:为多道程序的并发运行提供良好环境,为用户使用存储器提供方便,提高存储器的利用率,为尽可能多的用户提供足够大的存储空间。
- 设备管理:为用户分配I/O设备,完成用户请求的I/O操作,提高CPU和输入/输出设备的利用率,改善人机界面。
- 文件管理:现代计算机系统的外部存储器中,都以文件形式存放大量的信息,操作系统配置相应的文件管理机构来管理这些信息。
📚 os与硬件和其他系统软件之间的关系
- 操作系统与硬件的关系:操作系统是硬件之上的第一层软件,管理计算机的硬件资源。操作系统为用户完成所有与硬件相关的操作,从而极大方便了用户对硬件资源的使用,提高了硬件资源的利用率。
- 操作系统与其他系统软件的关系:操作系统是一种特殊的系统软件,其他系统软件运行在操作系统之上,可获得操作系统提供的大量服务,操作系统是其他系统软件与硬件之间的接口。
📚 设置内存I/O缓冲区的原因
- 缓和CPU与I/O设备间速度不匹配的矛盾。(
牛马速度不一致矛盾
)
一般情况下,出现的运行过程时,时而进行计算,时而进行I/O。以输出为例,若没有缓冲区,在程序在输出时,必然由于打印机速度跟不上而使CPU等待;然而在计算阶段,打印机又因无输入数据而无事可做。如果设置一个缓冲区,程序可以将待输出的数据先输出到缓冲区,然后继续执行;而打印机可以从缓冲区取出数据慢慢打印。 - 减少中断CPU的次数。(
减少牛马的放假次数
)
例如,假定设备只用一位二进制位接收系统外传来的数据,则设备每收到一位二进制位就要中断CPU一次,若数据通信速率位9.6kbit/s,则中断CPU的频率也为9.6kHz,若设置一个具有8位的缓冲寄存器,则可使CPU被中断的次数将为前者的1/8。 - 提高CPU和I/O设备之间的并行性。(
牛马互不干扰同时干活
)
由于在CPU和设备之间引入缓冲区,CPU可以从缓冲区中读取或向缓冲区写入信息;相应地,设备也可以向缓冲区写入或从缓冲区读取信息。在CPU工作的同时,设备也能进行输入/输出操作,这样CPU和I/O设备可以并行工作。
📚 死锁
- 死锁是指多个进程因竞争资源而造成的一种僵局,如无外力作用,这些进程都将永远不能再向前推进。
📙 产生死锁的原因
- 竞争资源
- 进程推进次序非法
📙 产生死锁的必要条件
- 互斥条件。进程竞争的资源必须互斥使用。(
一夫一妻制,一个对象只能属于一个人
) - 请求和保持。当前已拥有资源的进程,仍能申请新的资源,而当该进程因为新的资源被其他进程占有而被阻塞时,它仍保持自己的资源不释放。(
追不到男/女神,又不拒绝迷弟/妹
) - 不可剥夺条件。进程申请的资源只能在使用完毕时自行释放。(
不可强扭的瓜
) - 循环等待条件。存在一个至少包含两个进程的循环等待链,链中的每个进程都在等待下一个进程的持有的资源。(
A喜欢B,B喜欢C,C喜欢A,无解,剧终!
)
📙 检测死锁(资源分配图)
👨🏫 王道考研 死锁的检测
- 有关资源的请求和分配信息
- 死锁检测算法
- 资源分配图
- 资源分配图
📖 补充(重复,可跳过)
📙 预防死锁(最易实现)
预防死锁的角度主要是从破坏死锁产生的必要条件入手。
- 破坏请求与保持
- 破坏请求:每个进程执行之前,必须一次性地申请其在整个运行期间所需的
全部资源
,全部申请到了才能运行。这样它在整个运行过程中便不会再提出资源请求,从而破坏了“请求”条件。 - 破坏保持:每个进程提出申请资源前必须释放已占有的
一切
资源。
- 破坏请求:每个进程执行之前,必须一次性地申请其在整个运行期间所需的
- 破坏不可剥夺
- 超时自动释放已申请的的资源(
谦让
) - 抢占其他处于死锁状态的进程持有的资源(
霸道
)
- 超时自动释放已申请的的资源(
- 破坏循环等待
- 对系统中的所有资源排序编号,每个进程只能按固定的顺序申请资源。
📙 避免死锁(资源利用率最高)
👨🏫 王道考研 避免死锁 建议看视频
- 系统状态
- 不安全状态:可能发生死锁
- 安全状态:不会发生死锁
避免死锁的方法是通过算法动态地检测资源分配状态,确保系统不会进入不安全状态。
- 银行家算法:这是一种资源分配策略,它模拟资源分配过程,预测系统是否能进入安全状态。如果系统处于安全状态,则允许资源分配;否则拒绝分配。安全状态是指系统能够按照某种顺序分配资源,使得每个进程都能顺利完成。
📙 解除死锁
👨🏫 王道考研 死锁的解除
- 抢占资源:从一个或多个死锁进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。
- 终止进程:终止一个或多个死锁进程,直至打破循环等待,从而解除死锁状态。
- 终止所有死锁进程
- 逐个终止进程
- 进程回退:让一个或多个死锁进程回退到足以避免死锁的地步。
📚 虚拟存储器的概念
👨🏫 王道考研 虚拟存储器
- 虚拟存储器是一种计算机内存管理技术
- 它将计算机系统中的物理内存和磁盘空间结合起来,形成一个虚拟的
内存
空间,使得应用程序可以访问比物理内存更大的内存空间。 - 虚拟存储器的实现需要操作系统的支持,它通过将内存中的数据分成若干个页面(或称为页),并将这些页面映射到磁盘上的页面文件中,从而实现了内存和磁盘之间的数据交换。
📚 磁盘调度算法
- 先来先服务算法(FCFS,First Come First Serve)
- 最短寻道时间优先算法(SSTF)
- 选择最接近磁头位置的待处理请求
- 扫描算法(SCAN)(
电梯算法
:从上到下,从下到上)- 磁臂从磁盘的一端开始,向另一端移动;在移过每个柱面时,处理请求。当到达磁盘的另一端时,磁头移动方向反转,并继续处理。磁头连续来回扫描磁盘。
- 循环扫描算法(C-SCAN)
📚 作业调度算法
- 先来先服务调度算法(FCFS,First Come First Serve)
- 短作业优先调度算法(SJF,Short Job First)
- 优先级调度算法(PSA,Priority Scheduling Algorithm)
- 高响应比调度算法(HRRN,Highest Response Ratio Next)
📚 动态重定位的目的和实现
- 目的:程序在运行过程中经常要在内存中移动位置,为了保证这些被移动了的程序还能正常执行,必须对程序和数据的地址加以修改,即重定位。
- 实现:要在不影响指令执行速度的同时实现地址变换,必须有硬件地址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。
📚 各种分区分配的优缺点
👨🏫 王道考研 内存空间的分配 ⭐⭐⭐
-
单一连续分配:
将内存空间分为系统区和用户区。内存中永远只有一道程序。无需内存保护。适用于单用户、单任务的操作系统。- 优点:实现简单、无外部碎片,可以采用覆盖基础进行扩充内存。
- 缺点:不适用于内存中同时有多道程序的现代操作系统,有内部碎片且存储器的利用率较低。
-
固定分区的分配方式
为了能在内存中装入多道程序,且这些程序之间又不会相互干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业,这样就形成了最早的、最简单的一种可运行多道程序的内存管理方式。- 优点:便于内存分配和管理,无外部碎片。
- 缺点:程序较大时,无法放入任何一个分区时,该程序不能运行;主存利用率低,会出现内部碎片。
-
动态分区分配方式 ⭐
又称 可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地创建分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和个数使可变的。- 优点:用户程序装入内存时,根据进程所需要的大小动态建立分区,使得分区大小刚好符合进行需要。
- 缺点:在一开始,动态分区的分配效果是好的,但是随着内存进程的需要和时间的推移,内存中会产生许多外部碎片。
📙 单一连续
📙 固定分区
📙 动态分区
✨ 空闲分区
✨ 分区分配算法
✨ 分区分配
✨ 分区回收
-
回收区后有空闲分区
- 空闲分区数不变
- 起始地址变成回收区域的首地址
-
回收区前有空闲分区
- 空闲分区数不变
- 起始地址不变
-
回收区前后都有空闲分区
- 空闲分区数减一
- 首地址不变
- 回收区前后都没有空闲分区
- 新增空闲分区项
- 新增空闲分区项
📚 几种分区分配算法的优缺点
👨🏫 王道考研 动态分区分配算法
📚 文件管理
📙 文件的物理结构及其组织方式
- 顺序结构(
数组
)- 这是一种最简单的物理结构,它把逻辑上连续的文件信息依次存放在连续编号的物理块中。
- 只要知道文件在存储设备上的起始地址(首块号)和文件长度(总块数),就能很快地进行存取。
- 链接结构(
链表
)- 这种结构将逻辑上连续的文件分散存放在若干不连续的物理块中,每个物理块设有一个指针,指向其后续的物理块。
- 只要指明文件第一个块号,就可以按链指针检索整个文件。
- 索引结构(
带了目录的链表
)- 采用这种结构逻辑上连续的文件存放在若干不连续的物理块中,系统为每个文件建立一张索引表,索引表记录了文件信息所在的逻辑块号和与之对应的物理块号。
- 索引表也以文件的形式存放在磁盘上。给出索引表的地址,就可以查找与文件逻辑块号对应的物理块号。
- 如果索引表过大,可以采用多级索引结构。这种结构的优点是访问速度快,文件长度可以动态变化。
- Hash 结构
- 这种结构只适用于定长记录文件和按记录随机查找的访问方式。
- Hash结构的思想是通过计算来确定一个记录在存储设备上的存储位置,依次先后存入的两个记录在物理设备上不一定相邻。
📙 几种文件物理组织方式的优缺点
-
顺序结构
- 优点:
结构简单,实现容易,顺序存取速度快。 - 缺点:
1、用户创建文件时要给出文件的大小;
2、不利于文件的动态增加和修改;
3、对每个文件要求存放在存储介质上的
- 优点:
-
链接结构
- 优点:
1、提高了磁盘空间利用率,不存在外部碎片问题
2、不必事先知道文件长度
3、文件动态扩充和修改容易
4、顺序存取效率高 - 缺点:
1、不适于随机存取,随机存取效率太低,
2、链接指针占用一定的空间
3、可靠性问题,如指针出错
- 优点:
-
索引结构
- 优点:
1、保持了链接结构的优点,又解决了其缺点
2、即能顺序存取,又能随机存取
3、满足了文件动态增长、插入删除的要求
4、能充分利用外存空间 - 缺点:
索引表本身带来了系统开销,如:内外存空间,存取时间
- 优点:
-
Hash 结构
- 优点:
把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。 - 缺点:
不能够保证每个元素的关键字与函数值是一一对应的,因此极有可能出现对于不同的元素,却计算出了相同的函数值,这样就产生了“冲突”,要处理“冲突”问题。
- 优点:
📚 IO 管理
📙 逻辑设备
逻辑设备是用户程序中所涉及的该类物理设备的抽象。
📙 物理设备
实际使用的设备。
📙 逻辑设备到物理设备的变换
- 使用作业控制语言中的一个语句(DD语句),建立逻辑设备和物理设备之间的对应关系。
- 使用系统设置的逻辑设备和物理设备映像表,实现从逻辑设备到物理设备名的转换。
好处:
在进程执行时利用该类设备中的任一物理设备,而不必仅限于使用某一个。这不仅有利于改善资源利用率,而且对可适应性和可扩展性都有很大好处。
📙 SPOOLING系统的实现过程
假脱机技术,又称SPOOLing(Simultaneous Peripheral Operation On-Line)技术,是用软件的方式模拟脱机技术。
- 组成:
- 输入井和输出井:输入井和输出井的存储区域是在磁盘上开辟出来的。输入输出井中的数据一般以文件的形式组织管理,这些文件称之为井文件。一个文件仅存放某一个进程的输入或输出数据,所有进程的数据输入或输出文件链接成一个输入输出队列。
- 输入缓存区和输出缓存区:输入缓冲区和输出缓冲区的存储区域是在内存中开辟出来的。主要用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存有输入设备传送的数据,之后再传送到输入井;输出缓冲区同理。
- 输入进程和输出进程:输入进程也称为预输入进程,用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再放到输入井。当CPU需要的时候,直接从输入井将数据读入内存。反之,输出的同理。
- 井管理程序:用于控制作业与磁盘井之间信息的交换。
- 实现流程
- “预输入程序”把作业信息传送到“输入井”保存。
- 作业被选择执行时不必再启动输入机,而是从磁盘上输入井区域中读取信息。
- 作业执行中产生的结果也可暂时先存放在“输出井”中,待作业执行结束后由“缓输出程序”把作业执行结果打印输出。
- “预输入程序”和“缓输出程序”的执行都是在计算机控制下进行的。
综合题
📚 举例:并发进程的问题并改正
兄弟俩共同使用同一账号,每次限存或取10元,存钱与取钱的进程分别如下所示:
int amount=0;
SAVE(){
int m1;
m1 = amount;
m1 = m1 + 10;
amount = m1;
}
TAKE(){
int m2;
m2 = amount;
m2 = m2 - 10;
amount = m2;
}
由于兄弟俩可能同时存钱和取钱,因此两个进程是并发的。若哥哥先存了两次钱。但在第三次存钱时弟弟在取钱。请问:
(1) 最后账号amount上面可能出现的值是多少?
- 哥哥存两次钱后,共享变量 amount=
20
- 哥哥的第3次存钱与弟弟的取钱同时进行
- 如果两者顺序执行,则最后amount=20;(
先 +10 再 -10
)或 (先 -10 再 +10
) - 如果第一个进程的执行过程中进行CPU调度,转去执行另一进程,则最后amount的值取决于amount=m1及amount=m2的执行的先后顺序
- 若前者先执行,则值为10(
-10 后的值把 +10的值覆盖掉了
) - 若后者先执行,则值为30(
+10 后的值把 -10的值覆盖掉了
)
- 若前者先执行,则值为10(
- 如果两者顺序执行,则最后amount=20;(
因此,最后amount上可能出现的值有10、20、30。结果受到了程序执行顺序的随机性影响而并不一致。
(2) 如何用P、V操作实现两并发进程的互斥执行?
在上述问题中,共享变量amount是一个临界资源,为了实现两个并发进程对它的互斥访问,可为它设置一初值为1的互斥信号量mutex
,并将上述算法修改为:
int amount=0;
semaphore mutex=1;// 互斥访问amount变量的信号量
SAVE(){
int m1;
P(mutex);// 加锁
m1=amount;
m1=m1+10;
amount=m1;
V(mutex);// 解锁
}
TAKE(){
int m2;
P(mutex);// 加锁
m2=amount;
m2=m2-10;
amount=m2;
V(mutex);// 解锁
}
📚 pv操作
👨🏫 王道考研 信号量机制(PV操作)视频
- P(x):获取一个资源 x
- V(x):释放一个资源 x
📚 读者写者
👨🏫 王道考研 读者写者 视频
📕 火车订票系统
某火车订票系统可供多个用户同时共享一个订票数据库。规定允许多个用户同时查询该数据库,有查询时,用户不能订票;有用户订票而需更新数据库时,不可以有其他用户使用数据库。请用P、V操作写出查询者与订票者的同步执行程序。
👨🏫 参考题解 读者写者问题 订票系统
本题是一个典型的读者-写者问题,查询者是读者,订票者是写者。
读者-写者问题的主要要求是:
- 允许多个读者共享对象。
- 不允许写者和其他读者或写者同时访问共享对象。
为达到上述控制,引入一个变量readcount
,记录当前正在运行的读者进程数以及读互斥信号量rmutex
和写互斥信号量wmutex
。
- 每个读者进程进入系统后需对
readcount
加1- 当
readcount
的值由0变为1时,说明是第一个读者进程进入,因此需要改读者进程对控制写者进程的信号量wmutex
进行P操作。以便与写者进程互斥; - 当
readcount
的值由非0值增加时,说明不是第一个读者进程,此时的控制写者进程的信号量已进行过P操作,已经禁止写者进程进入,因此不需要再次对该信号进行P操作。
- 当
- 当读者进程退出时,需对
readcount
减1。如发现减1后readcount
的值变为0,说明最后一个读者进程退出,因此需要该读者进程对控制写者进程的信号量wmutex
进行V操作,以便写者进程能够进入。
同步程序描述如下:
Semaphore rmutex=1;// 读互斥信号量
Semaphore wmutex=1;// 写互斥信号量
Int readcount=0;
Inquire(){ //查询者
While(TRUE){
P(rmutex);
If(readcount==0)// 第一个读者
P(wmutex); // 如果有查询者,是不允许订票的
readcount++;
V(rmutex);
查询数据库(查余票);
P(rmutex);
readcount--;
If(readcount==0)
V(wmutex); // 最后一个查询者退出后,允许订票的
V(rmutex);
}
}
Booker(){
While(TRUE){
P(wmurex);
修改数据库(订票);
V(wmutex);
}
}
下面改进要求,规定允许多个用户同时查询数据库,当有订票者到达时,不允许后继查询者查询数据库,且多个订票者可以互斥使用数据库(写者优先算法)。
- 这里
r
信号量用来控制读者进程的进入,若有写者存在,则占用该信号量,阻止后继读者进入临界区; - 而
w
信号量则表示对临界区进行写操作的权利,当读者在临界区,占用w
信号量以阻止写者进行写操作,这里w
的作用类似于刚才未添加新条件的解法中的wmutex
信号量。 - 本解法中,
rmutex
和wmutex
信号量是对读者、写者计数器进行互斥操作控制的信号量。
描述如下:
Semaphore rmutex=1,wmutex=1,r=w=1;
Int readcount=0,writecount=0;
Inquire(){ //查询者
While(TRUE){
P(r); //需先检查有无订票者存在
P(rmurex);
If(readcount==0) // 第一个读者
P(w);// 如果有查询者,是不允许订票的
readcount++;
V(rmutex);
V(r);
查询数据库;
P(rmutex);
readcount--;
If(readcount==0)
V(w); // 最后一个查询者退出后,就允许订票了
V(rmutex);
}
}
Booker(){
While(TRUE){
P(wmurex);
If(writecount==0) P(r); // 第一个订票者进程进入,不允许后继查询者进入
writecount++;
V(wmurex);
P(w);
使用数据库,订票;
V(w);
P(wmutex);
writecount--;
If(writecount==0)V(r); // 无订票者时允许查询者进入
V(wmutex);
}
}
📚 信箱通信
有A、B两人通过信箱进行辩论,每个人都从自己的信箱中取得对方的问题,将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中。假设A的信箱最多放M个邮件,B的信箱最多放N个邮件。初始时A的信箱中有x(0<x<M)个邮件,B的信箱中有y(y0<y<N)个。辩论者每取出一个邮件,邮件数减1。A和B两人的操作过程描述如下:
CoBegin
A{
while(TRUE){
从A的信箱中取出一个邮件;
回答问题并提出一个新问题;
将新邮件放入B的信箱;
}
}
B{
while(TRUE){
从B的信箱中取出一个邮件;
回答问题并提出一个新问题;
将新邮件放入A的信箱;
}
}
CoEnd
当信箱不为空时,辩论者才能从信箱中取邮件,否则等待。请添加必要的信号量和P、V(wait()、signal())操作实现上述进程间的互斥与同步,要求写出完整的过程,并说明所用信号量的含义和初值。
参考答案
semaphore Full_A=x; // Full_A表示A的信箱中邮件数量
semaphore Empty_A=M-x; // Empty_A表示A的信息中还可存放的邮件数量
semaphore Full_B=y; // Full_B表示B的信箱中邮件数量
semaphore Empty_B=N-y; // Empty_B表示BA的信息中还可存放的邮件数量
Semaphore mutex_A=1; // 用于A的信息互斥
Semaphore mutex_B=1; // 用于B的信息互斥
Cobegin
A{
while(true){
P(Full_A);// 邮件 -1
P(mutex_A);// 保证一次只有一个线程在取邮件(从自己的 A邮箱取,所以锁 A)
从A的信箱中取出一个邮件;
V(mutex_A);
V(Empty_A);// 邮箱空位 +1
回答问题并提出一个新问题;
P(Empty_B);//对方空位 -1
P(mutex_B);//保证一次只有一个线程在发邮件(往对方的 B邮箱发,所以锁 B)
将新邮件放入B的信箱;
V(mutex_B);
V(Full_B);// 对方邮件 +1
}
}
B{ // 逻辑同上
while(true){
P(Full_B);
P(mutex_B);
从B的信箱中取出一个邮件;
V(mutex_B);
V(Empty_B);
回答问题并提出一个新问题;
P(Empty_A);
P(mutex_A);
将新邮件放入A的信箱;
V(mutex_A);
V(Full_A);
}
}
【评分说明】
(1) 每对信号量的定义及初值正确,给1分。
(2) 每个互斥信号量的P、V操作使用正确,各给2分。
(3) 每个同步信号量的P、V操作使用正确,各给2分。
(4) 其他答案酌情给分。
📚 银行家算法
👨🏫 王道考研 避免死锁 银行家算法
📕 银行家算法避免死锁
在银行家算法中,出现以下资源分配情况。
系统剩余资源数量=(3,2,2),试问:
(1) 该状态是否安全?请给出详细过程。
系统安全,因为存在安全序列{P1,P3,P0,P2,P4}
。
过程如下:
- 先求出各进程
剩余的需求量
(资源最大需要 - 已分配资源
)- P0 = (7,4,3)
- P1 = (1,1,2)
- P2 = (6,0,0)
- P3 = (0,1,1)
- P4 = (4,3,1)
- 系统剩余资源数(3,2,2)
- 立即满足进程P1(或P3),P1满足后可释放占有的资源,系统剩余资源数为(5,3,2)
- 立即满足的进程P3(或P4),P3满足后释放占有的资源,系统次数剩余资源数为(7,4,3)
- 立即满足的进程P0(或P2、P4),所以进程可以依次执行完毕
📚 进程调度算法
👨🏫 王道考研 进程调度算法
📙 先来先服务算法
📙 短作业优先算法
📙 高响应比优先算法
🏆 小结
📙 时间片轮转算法
📙 优先级调度算法
非抢占式
抢占式
📙 多级反馈队列调度算法
🏆 小结
📕 多级反馈队列怎么用户友好了?
- 对终端型作业用户而言,由于他们所提交的大多属于交互型作业,作业通常比较短小,系统只要能使这些作业在第1级队列所规定的时间片内完成,便可使终端型作业用户感到满意
- 对于短批处理作业用户而言,他们的作业开始时像终端型作业一样,如果仅在第1级队列中执行一个时间片即可完成,便可以获得与终端型作业一样的响应时间,对于稍长的作业,通常也只需要在第2级队列和第3级队列中各执行一个时间片即可完成,其周转时间仍然较短
- 对于长批处理作业用户而言,它们的长作业将依次在第1,2,…,直到第n级队列中运行,然后再按时间片轮转方式运行,用户不必担心其作业长期得不到处理。
📚 单道批处理作业调度
📙 平均进程周转时间
- 周转时间 = 完成时刻 - 到达时刻 = 等待时间 + 运行时间
- 平均周转时间 = 周转总时间 / 个数
- 带权周转时间 = 周转时间 / 服务时间
📙 响应比的计算
- 响应比 = 作业周转时间 / 作业处理时间
- 作业周转时间 = 作业等待时间 + 作业处理时间
📕 计算平均周转时间
系统有5个进程,其就绪时刻(指在该时刻已进入就绪队列)、服务时间如下表所示。分别计算采用先来先服务、短作业优先、高响应比优先的平均周转时间和带权周转时间。
参考答案
- 先来先调度:执行作业的次序为 P1、P2、P3、P4、P5
- 短作业优先:作业的执行顺序为P1、P2、P5、P3、P4
- 高响应比优先:作业的次序为P1、P2、P3、P5、P4
- 在时刻0,只有进程P1就绪,执行P1,在时刻3结束。
- 此时刻只有P2就绪,执行P2,在时刻9结束。
- 此时刻P3、P4、P5均就绪,计算它们的响应比分别为
2.25
、1.6
、1.5
,则选择执行P3,在时刻13结束。- 响应比 = (任务等待时间 + 任务处理时间)/ 任务处理时间
- 任务等待时间 = 就绪时间 - 上一个任务的结束时间
- P3响应比: ( 5 + 4 ) / 4 = 2.25 (5 + 4) / 4 = 2.25 (5+4)/4=2.25
- P4响应比: ( 3 + 5 ) / 5 = 1.6 (3 + 5)/5=1.6 (3+5)/5=1.6
- P5响应比: ( 1 + 2 ) / 2 = 1.5 (1+2)/2=1.5 (1+2)/2=1.5
- 此时刻P4、P5均就绪,计算它们的响应比分别是2.4、3.5,则选择P5执行,在时刻15结束。
- 此时刻只有P4就绪,执行P4,在时刻20 结束。
📚 页面置换算法
👨🏫 王道考研 页面置换算法
📙 缺页率
缺页率 = 缺页次数 总的内存访问次数 = 页面置换次数 + 内存块数(空块直接填入) 总的内存访问次数 缺页率 = \frac{缺页次数}{总的内存访问次数}=\frac{页面置换次数 + 内存块数(空块直接填入)}{总的内存访问次数} 缺页率=总的内存访问次数缺页次数=总的内存访问次数页面置换次数+内存块数(空块直接填入)
📙 最佳置换算法(OPT)
📙 先进先出置换算法(FIFO)
📙 最近最久未使用算法(LRU)
📙 时钟置换算法(CLOCK)
📙 改进型的时钟置换算法
一、操作系统概述
💖 1000题集
🍁 单选题
-
多道程序设计是指【D】。
A. 在实时系统中并发运行多个程序
B. 在分布式系统中同一时刻运行多个程序
C. 在一台处理机上同一时刻运行多个程序
D. 在一台处理机
上并发
运行多个程序 -
操作系统为用户提供了多种接口,它们是【B】。
I. 计算机高级指令II. 终端命令 III. 图标菜单
IV. 汇编语言 V. C语言VI. 系统调用
A. I,II,V
B.II,III,VI
C. III,IV,V
D. II,IV,VI
📚 操作系统有两种接口
- 命令输入
- 命令行:
在终端或命令输入窗口输入操作和控制计算机的规定的命令,既可以一条一条输入,也可以组织成一批命令,逐条执行,称为批处理命令。 - 图形用户界面:
我们熟知的图标和菜单形式
- 命令行:
- 系统调用
我们编写程序过程中,需要计算机所做的操作,一般要按固定格式来调用
- 操作系统是扩充【B】功能的第一层系统软件。
A. 软件
B.裸机
C. 机器语言
D. 中断 - 从资源管理程序的观点来看,操作系统是【B】的管理者。
A. 程序和数据
B.系统硬软件资源
C. 进程
D. 中断 - 下列属于
实时
控制系统的是【A】。
A. 飞机自动驾驶
系统
B. 飞机订票系统
C. 电子商务系统
D. 管理信息系统 - 操作系统的职能有3个:管理系统硬软件资源、合理地组织计算机工作流程以及【B】。
A. 防止某些人以非法手段进入系统
B. 为用户提供良好的工作环境的接口
C. 对用户的命令快速产生响应
D. 作为服务机构向其他站点提供优质服务 - 多道程序的基本特征是【A】。
A.制约
性
B. 顺序性
C. 功能的封闭性
D. 运行过程的可再现性
📚 多道程序设计允许计算机内存中同时存放两个或以上相互独立的程序,它们轮流使用CPU和其他系统资源,程序间交替执行。因此在多道程序的运行环境下,程序之间存在因为争抢资源以及CPU的使用权而相互干扰(制约性)
,造成程序的执行不再具有单道程序执行时的顺序性和可再现性。
-
使用操作系统提供的【A】接口,能在用户程序中将一个字符送到显示器上显示。
A.系统调用
B. 函数
C. 原语
D. 子程序
📚 显示器属于系统资源,用户程序不可直接使用,仅能通过系统调用,由操作系统进行驱动,才能对其进行操作 -
现代计算机操作系统提供两种不同的状态,即管态(系统态)和目态(用户态),在此约定下,【D】必须在管态下执行。
A. 从内存中取数的指令
B. 算术运算指令
C. 把运算结果送内存的指令
D.输入/输出
指令 -
操作系统计算中的临界区是指【C】。
A. 一组临界资源的集合
B. 可共享的一块内存区
C.访问临界资源
的一段代码
D. 请求访问临界资源的代码 -
设计批处理操作系统的主要目的是【B】。
A. 提高系统与用户的交互性
B. 提高系统资源的利用率
C. 降低用户作业的周转时间
D. 减少用户作业的等待时间 -
下列
不属于
设计实时操作系统的主要追求目标是【B】。
A. 安全可靠
B.资源利用率
C. 及时响应
D. 快速处理 -
用户可以通过【B】来使用计算机。
A. 命令方式和函数方式
B.命令方式
和系统调用方式
C. 命令方式和文件管理方式
D. 设备管理方式和系统调用方式 -
设计多道批处理系统时,主要考虑的因素有
系统效率
和【C】。
A. 交互性
B. 及时性
C.吞吐量
D. 实时性
🍁 综合应用题
1. 单道与多道批处理系统的特点及优缺点。
- 单道批处理系统是最早出现的一种操作系统
- 特点:
自动性
、顺序性
和单道性
- 是在
解决人机矛盾
及CPU与I/O设备之间速度不匹配
的矛盾中形成的,旨在提高系统资源利用率和系统吞吐量 - 缺点:不能很好的利用系统资源。
- 特点:
- 多道批处理系统
- 特点:
调度性
、无序性
和多道性
- 是
对单道批处理系统的改进
,优点:资源利用率高
,系统吞吐量大
- 缺点:平均周转时间长,无交互能力。
- 特点:
3. 试在交互性、及时性和可靠性方面,将分时系统与实时系统进行比较。
分时系统
是一种通用系统,主要用于运行终端用户程序
因而具有较强的交互能力
;而实时系统虽然也有交互能力,但其交互能力不及前者。- 及时性
- 分时系统:以人能所接受的等待时间来确定
- 实时系统
- 实时信息系统:以人能所接受的等待时间来确定(类似分时系统)
- 实时控制系统:是以控制对象所要求的开始截止时间和完成截止时间来确定的。
- 实时系统对系统的可靠性要求比分时系统对系统的可靠性要求高。
性能 | 实时系统 | 分时系统 |
---|---|---|
交互性 | 一般 | 较强 |
及时性 | 较强 | 一般 |
可靠性 | 较强 | 一般 |
4. 说明实时任务的类型和实时系统的类型。
- 实时任务类型
- 按任务执行时是否呈现周期性来划分,
- 周期性实时任务
- 非周期性实时任务
- 根据对截止时间的要求来划分
- 硬实时任务
- 软实时任务。
- 按任务执行时是否呈现周期性来划分,
- 实时系统类型
- 实时控制系统
要求进行实时控制的系统 - 实时信息处理系统
要求对信息进行实时处理的系统
- 实时控制系统
5. 处理机管理有哪些功能?它们的主要任务是什么?
- 进程控制
- 为作业创建进程
- 撤销已结束的进程
- 控制进程在运行过程中的状态转换
- 进程同步
- 对多个进程的运行进行调节
- 进程通信
- 实现在相互合作进程之间的信息交换
- 进程调度
- 作业调度
从预备队列中按照一定的算法,选择若干个作业,为它们分配必要的资源 - 进程调度
从进程的就绪队列中按照一定的算法选出一个新进程,把处理机分配给它,并为它设置运行现场,使进程投入运行
- 作业调度
7. 操作系统必须具备的功能有哪些?
- 用户接口:操作系统与用户的接口。
- 处理机管理:对处理机的分配和运行实施有效管理。
- 存储管理:为多道程序的并发运行提供良好环境,为用户使用存储器提供方便,提高存储器的利用率,为尽可能多的用户提供足够大的存储空间。
- 设备管理:为用户分配I/O设备,完成用户请求的I/O操作,提高CPU和输入/输出设备的利用率,改善人机界面。
- 文件管理:现代计算机系统的外部存储器中,都以文件形式存放大量的信息,操作系统配置相应的文件管理机构来管理这些信息。
💖 天勤高分笔记
🍁 选择题
- 在下列选项中,【A】不属于操作系统提供给用户的可使用资源。
A.中断
机制(中断是一种行为,而不是资源
)
B. 处理机
C. 存储器
D. I/O设备 - 下面说法
错误
的有【D】。
I
. 分时系统中,时间片越短越好。(越短,进程切换越多,out
)
II
. 银行家算法是防止
死锁发生的方法之一。(是避免死锁
)
III
. 若无进程处于运行状态,则就绪和等待队列均为空。(死锁的情况下,等待队列非空
)
A. I和II
B. II和III
C. I和III
D.I、II和III
实时
操作系统必须在【B】内处理完来自外部的事件。
A. 一个机器周期
B. 被控对象规定的时间
C. 周转时间
D. 时间片
- 实时系统的时间要求:是依据被控对象来确定的
- 分时系统的时间要求:时间片
-
操作系统提供给
编程人员
的接口是【C】。
A. 库函数
B. 高级语言
C.系统调用
D. 子程序 -
下列观点中,
不是
描述操作系统的典型观点的是【A】。
A. 操作系统是众多软件的集合
B. 操作系统是用户和计算机之间的接口
C. 操作系统是资源的管理者
D. 操作系统是虚拟机 -
设计
实时
操作系统时,首先应该考虑系统的【B】。
A. 可靠性和灵活性
B.实时
性和可靠
性
C. 分配性和可靠性
D. 灵活性和实时性 -
下列选项中,【D】
不是
操作系统关心的主要问题。
A. 管理计算机裸机
B. 设计、提供用户程序与计算机及计算机硬件系统的接口
C. 管理计算机中的信息资源
D.高级程序设计语言
的编译 -
与早期的操作系统相比,采用
微内核的操作系统
具有很多优点,但是这些优点不包括
【B】。
A. 提高了系统的可扩展性
B. 提高了操作系统的运行效率
C. 增强了系统的可靠性
D. 使操作系统的可移植性更好 -
下列关于操作系统的论述中,正确的是【A】。
A. 对于批处理作业
,必须提供相应的作业控制信息
B. 对于分时系统,不一定全部提供人机交互功能
C. 从响应角度来看,分时系统与实时系统的要求相似
D. 在采用分时操作系统的计算机系统中,用户可以独占计算机操作系统中的文件系统 -
操作系统提供了多种界面供用户使用,其中【C】是专门供应用程序使用的一种界面。
A. 终端命令
B. 图像用户窗口
C.系统调用
D. 作业控制语言 -
所谓【B】,是指
将一个以上的作业放入内存,并且同时处于运行状态
。这些作业共享处理器时间和外设及其他资源。
A. 多重处理
B.多道程序设计
C. 实时处理
D. 并行执行 -
在中断发生后,
进入中断处理的程序
属于【C】。
A. 用户程序
B. 可能是应用程序,也可能是操作系统程序
C.操作系统程序
D. 既不是应用程序,也不是操作系统程序
📚 中断处理程序只能是操作系统程序,不可能是应用程序。中断处理属于系统中会对系统产生重大影响的动作,因此只允许核心态程序执行;而应用程序通常指用户程序,运行在用户态下,不能进行这些操作。 -
OS通常为用户提供4种使用接口,它们是
终端命令
、图标菜单
、系统调用
和【C】。
A. 计算机高级指令
B. 宏命令
C. 类似DOS的批命令处理文件
或UNIX的shell文件
(命令方式
)
D. 汇编语言 -
用户程序在目态下使用
特权指令
引起的中断属于【D】。
A. 硬件故障中断
B. 程序中断
C. 外部中断
D.访管中断
(管:管态,即内核态)
- 访管中断:目态(用户态)使用特权指令,会切换到管态(内核态)
- 硬件故障终端:硬件故障引起的中断
- 程序中断:程序在执行过程中产生的一般中断(一般指令非特权指令)
- 若程序正在试图读取某个
磁盘
的第100个逻辑块,使用操作系统提供的【A】接口。
A.系统调用
B. 图形用户接口
C. 原语
D. 键盘命令
📚 用户通过三个方式使用计算机
- 命令模式
- 系统调用模式
- 进程管理
- 文件管理
- 设备管理
- 主存管理
- 进程通信
- 信息维护
- 图形、窗口模式
-
(2009)在单处理器系统中,可并行的是【D】。
I. 进程与进程(单处理器系统中 进程只能并发
)
II.处理器和设备
III.处理器和通道
IV.设备与设备
A. I、II和III
B. I、II和 IV
C. I、III和IV
D.II、III
和IV
-
(2010)下列选项中,操作系统提供给应用程序的接口是【A】。
A.系统调用
B. 中断
C. 库函数
D. 原语 -
(2011)下列选项中,用户态执行的是【A】。
A. 命令解释程序
B. 缺页处理程序(中断一种
)
C. 进程调度程序
D. 时钟中断处理程序(中断一种
) -
(2012)一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚
5ms
到达。它们的计算和I/O操作顺序如下:
P1:计算60ms,I/O80ms,计算20ms
P2:计算120ms,I/O40ms,计算40ms
若不考虑调度和切换时间,则完成两个作业需要的时间最少是【B】。
A. 240ms
B. 260ms
C. 340ms
D. 360ms
📚 计算主要占用 CPU 资源,计算 和 IO 是可以一起进行的
60ms
p1计算- p1 先到执行计算(60ms)
- p2 过了 5ms 后到,阻塞等待 p1 计算完释放 CPU
120ms
p2计算- p2 执行 120ms 的计算
- p1 继续执行 80ms的 IO,完成后等待 p2 计算完释放 CPU
40ms
P2 IO- p1 执行 20ms 的 IO
- p2 执行 40ms 的计算
40ms
P2 计算- 总时长:
260 ms
= 60 + 120 + 40 + 40
- (2012)下列选项中,不可能在用户态发生的事件是【C】。
A. 系统调用
B. 外部中断
C.进程切换
D. 缺页
📚 判断能否在用户态执行的关键在于事件是否会执行特权指令。
-
(2012)中断处理和子程序调用都需要压栈以保护现场。中断处理一定会保存而子程序调用不需要保存其内容的是【B】。
A. 程序计数器
B.程序状态
字寄存器
C. 通用数据寄存器
D. 通用地址寄存器
📚 中断的发生通常是突然的,如地址越界等,系统无法预知(外部输入中断也是无法预知,计算机不知用户什么时候键盘输入)。当系统发送中断时要转入中断处理程序,处理完后要返回到发生中断时的指令处继续执行,由于处理中断时CPU可能会切换状态(如果在核心态发生中断,则不需切换),因此中断处理返回时就需要还原当时是程序状态,包括处理器信息等,这用到了程序状态字寄存器所存储的内容。程序状态字寄存器用于记录当前处理器的状态和控制指令的执行顺序,并保留和指示与运行程序有关的各种信息,主要作用是实现程序状态的保护和恢复,所以中断处理时一定要将PSW压栈保存。
子程序调用时系统可预知的,且通常在进程内部执行,不会更改程序状态,即便更改程序状态,只要更新寄存器就行,不需要保存,因为一切都是系统所预料到的,不需要保护和恢复,所以子程序调用主要保存局部参数信息等,不需要讲程序状态字PSW压栈。 -
(2013)计算机开机后,操作系统最终被加载到【D】。
A. BIOS
B. ROM
C. EPROM
D.RAM
- 用户平时开机时首先启动的是存于主板ROM中的BIOS程序(注意:不是操作系统)
- 其次再由它去调用硬盘中的操作系统(如windows系统)
- 将操作系统的程序自动加载到内存中的系统去,这段区域是RAM。
- (2013)下列选项中,会导致用户进程从用户态切换到内核态的操作是【B】。
I.整数除以零
(引发异常中断,除数不能为0
)
II. sin() 函数调用(普通的用户函数
)
III.read系统调用
(系统调用
)
A. 仅I、II
B. 仅I、III
C. 仅II、III
D. I、II和III - (2014)下列指令中,不能在用户态执行的是【D】。
A. trap指令(负责由用户态转换为内核态)
B. 跳转指令
C. 压栈指令
D.关中断指令
- (2015)处理外部中断时,应该由操作系统保存的是【B】。
A. 程序计数器(PC)的内容
B.通用寄存器
的内容
C. 快表(TLB)中的内容
D. Cache中的内容
📚 外部中断处理过程
程序计数器的内容:由中断隐指令自动保存
通用寄存器的内容:由操作系统保存。 - (2015)假定下列指令已装入指令寄存器,则执行时
不可能
导致CPU从用户态变为内核态 (系统态)的是【C】。
A. DIV R0,R1;(R0)/(R1)->(R0)
B. INT n;产生软中断
C.NOT R0;寄存器R0的内容取非
D. MOV R0,addr;把地址addr处的内存数据放入寄存器R0中
- A选项中若R1中内容为0(分母不能为 0),则可能会出现异常中断,从用户态变为内核态;
- B选项软中断在内核态执行;
- C选项寄存器取非不会产生中断,且不属于其他操作系统内核,故不会变为内核态了;
- D选项addr是主存地址,访存需要进入内核态。
- (2016)下列关于批处理系统的叙述中,正确的是【A】。
I. 批处理系统允许多个用户与计算机直接交互(用户无法干预
)
II.批处理系统分为单道批处理系统和多道批处理系统
III.中断技术使得多道批处理系统的I/O设备可与CPU并行工作
A. 仅II、III
B. 仅II
C. 仅I、II
D. 仅I、III - (2017)执行系统调用的过程包括如下主要操作:
(1) 返回用户态
(2) 执行陷入(trap)指令
(3) 传递系统调用参数
(4) 执行相应的服务程序
正确的执行顺序是【C】。
A. (2)->(3)->(1)-(4)
B. (2)->(4)->(3)-(1)
C.(3)->(2)->(4)-(1)
D. (3)->(4)->(2)-(1)
① 传参
② trap 进入内核态
③ 执行
④ 返回 - (2015中科院)【C】不是操作系统的功能。
A. CPU管理
B. 存储管理
C.网络
管理
D. 数据管理(属于文件管理的范畴
) - (2015中科院)下面叙述中,错误的是【B】。
A. 操作系统既能进行多任务处理,又能进行多重处理
B.多重处理是多任务处理的子集
(多重处理即并行执行,多任务处理即并发执行。)
C. 多任务是指同一时间内在同一系统中同时运行多个进程
D. 一个CPU的计算机也可以进行多重处理 - 关于现代操作系统的基本特征:【A】是指两个或两个以上的进程在执行时间上有重叠,即一个进程的第一个操作在另一个进程的最后一个操作完成之前开始。
A.并发性
B. 并行性
C. 虚拟性
D. 交互性
E. 共享性
F. 异步性
G. 透明性
H.鲁棒性
I. 可重构性
🍁 综合题
33. 计算程序运行时间
设内存中有3道程序A、B、C,它们按照A、B、C的优先次序执行。它们的计算和I/O操作的时间如下表。假设3道程序使用相同设备进行I/O操作,即程序以串行方式使用设备,试画出单道运行和多道运行的时间关系图(调度程序的执行时间忽略不计),并回答在这两种情况下,完成这3道程序分别需要多长时间(多道运行时采用抢占式调度策略)。
- 单道
次序为A、B、C,A先进行30ms的计算,再完成40ms的I/O,最后进行10ms计算;接下来B和C也是类似工作。
30+40+10+60+30+10+20+40+20=260ms
- 多道
系统按照A、B、C优先次序执行,则在运行过程中,无论使用CPU还是I/O设备,A 优先级最高,B 次之,C最低。A进行 30 的计算,再完成 40 I/O(此时B进行40计算),最后进行30计算(此时B等待,B第一次计算已经完成40,还剩20);接下来B进行剩余的20计算,再完成30的I/O操作(C 进行20计算,然后等待I/O设备),最后再进行10的计算(次数C执行10I/O,其I/O还需30);然后C进行30的I/O,20的计算。
30+40+10+20+30+10+30+20=190ms
📚 作图技巧
- 先画 A 的所有阶段的执行时间
- 在 A 的基础上画 B 的各阶段任务的执行时间,注意不能和前边 A 的时间冲突
35. 虚拟
“虚拟”体现在操作系统的各方面应用当中,请举出两个“虚拟”的例子。
- 一台计算机配置了操作系统和其他软件,比一台裸机的功能更强大,使用更方便,称为
虚拟机
。操作系统自身包含了若干层软件,因此该计算机系统又可称为多层虚拟机
。 - 在多道分时系统中,利用
多道程序设计技术
可以把一台物理上的CPU虚拟为多台逻辑上的CPU
,共多个终端用户使用。 虚拟存储器
,仅把作业的一部分装入内存便可运行作业,从逻辑上对内存容量进行了扩充。如在设备管理中虚拟设备技术的使用,可将一台物理设备变换为若干台逻辑上的对应物。
37. 操作系统与硬件、其他系统软件的关系
试分别说明操作系统与硬件、操作系统与其他系统软件之间的关系,并画出操作系统的层次关系。
- 操作系统与硬件的关系:操作系统是硬件之上的第一层软件,管理计算机的硬件资源。操作系统为用户完成所有与硬件相关的操作,从而极大方便了用户对硬件资源的使用,提高了硬件资源的利用率。
- 操作系统与其他系统软件的关系:操作系统是一种特殊的系统软件,其他系统软件运行在操作系统之上,可获得操作系统提供的大量服务,操作系统是其他系统软件与硬件之间的接口。
38. 指令保护
对于一个正确运转的计算机系统,保护操作系统是非常重要的。但为了向用户提供更大的灵活性,应尽可能地对用户加以限制。下面列出的各操作通常是加以保护的。试问只是有哪几条指令需要加以保护?
(1) 改变成用户方式
(2) 改变成系统方式
✅
(3) 从存放操作系统的存储区读取数据
(4) 将数据写
到存放操作系统的存储区上 ✅
(5) 从存储操作系统的存储区取指令
(6) 打开计时器
(7) 关闭计时器
操作(2)、(4)
应加以保护。这两条操作是对操作系统本身的内容加以修改。如果交由用户任意操作就会对操作系统造成破坏并最终导致系统运行出错或系统崩溃,所以应在任何情况下加以保护。其他几种操作在一般情况下也应加以保护,但即使这些操作交由用户操作,也不会出现上述两种操作的那种破坏性。
40. 设计队列调度策略
某操作系统具有分时兼批处理的功能,设计一个合理的队列调度策略,使得分时作业响应快,批处理作业也能及时得到响应。
可设计两个优先队列。分时系统进入高优先级队列,采用短时间片轮转法调度。当高优先级队列空时,调度低优先级的成批作业,并给予较长的时间片。
二、进程管理
💖 1000题集
🍁 单选题
-
若进程P一旦被唤醒就能够投入运行,系统可能为 D
A. 在分时系统中,进程P的优先级最高(非抢占式
)
B. 抢占式调度方式,就绪队列上的所有进程的优先级皆比P的低(运行中的进程优先级可能更高
)
C. 就绪队列为空(没用,要优先级没优先级,要抢占式调度没抢占式调度
)
D. 抢占式调度方式,P的优先级高于当前运行的进程。✅ -
进程处于【C】等待状态时,它是处于非阻塞状态的。
A. 等待从键盘输入数据(等待 IO
)
B. 等待协作进程的一个信号(等待 资源
)
C. 等待操作系统分配CPU时间(就绪状态
)
D. 等待网络数据进入内存(等待 IO
) -
下列叙述中,错误的是【C】。
A. 操作系统是用户和计算机之间的接口
B. 程序的并发执行,使程序失去了顺序执行时具有的封闭性和可再现性,程序与程序的执行不再一一对应
C. 进程从一个状态到另一个状态的转换,都是靠使用不同的原语来实现(还要借助硬件触发器
)
D. 在单CPU系统中,任何时刻处于就绪状态的进程有多个,而且只有处于就绪状态的进程经调度程序选中后才可进入运行状态 -
进程调度是从【A】选择一个进程投入运行。
A. 就绪队列
B. 等待队列
C. 作业后备队列
D. 提交队列 -
下列叙述中,正确的是【B】。
A. 分时系统中,时间片越小,响应时间越长
B. 多道程序的引入,主要是为了提高CPU及其他资源的利用率
C. 飞机订票系统是分时系统
D. PCB是进程存在的唯一标志,而程序是系统感知进程存在的唯一实体 -
一个进程被唤醒,意味着【B】。
A. 该进程重新占有了CPU
B. 进程状态变为就绪
C. 它的优先权变为最大
D. 其PCB移至就绪队列的队首 -
进程和程序的本质区别是【D】。
A. 存储在内存和外存
B. 顺序和非顺序执行机器指令
C. 分时使用和独占使用计算机资源
D. 动态和静态特征 -
系统感知进程的唯一实体是【C】。
A. JCB
B. FCB
C. PCB(Process
Control Block:进程控制块)
D. SJT -
一进程在某一时刻具有【A】。
A. 一种状态
B. 两者状态
C. 三种状态
D. 四种状态 -
在单处理机的多进程系统中,进程什么时候占用处理机以及决定占用时间的长短是【C】。
A. 进程相应的代码长度
B. 进程总共需要运行的时间
C. 进程特点和进程调度策略
D. 进程完成什么功能 -
进程从运行状态变为阻塞的原因可能是【A】。
A. 输入/输出事件发生(IO需要阻塞等待
)
B. 时间片到
C. 输入/输出事件完成
D. 为进程分配所需的各种资源 -
进程创建的原语任务是【B】。
A. 为进程编制程序
B. 为进程建立PCB表(Process
Control Block:进程控制块)
C. 为进程分配CPU
D. 为进程分配所需的各种资源 -
进程被创建后即进入【B】排队。
A. 阻塞队列
B. 就绪队列
C. 缓冲队列
D. 运行队列 -
多道程序系统中,【C】的作用是从就绪状态中挑选一个进程投入运行。
A. 作业调度
B. 交换调度
C. 进程调度
D. SPOOLing调度 -
多道系统环境下,操作系统分配资源以【D】为基本单位。
A. 作业
B. 指令
C. 程序
D. 进程 -
进程调度主要负责【B】。
A. 选作业进入内存
B. 选一进程占有CPU
C. 建立一进程
D. 撤销一进程 -
出现下列的情况可能导致死锁的是【C】。
A. 进程释放资源
B. 一个进程进入死循环
C. 多个进程竞争出现了循环等待
D. 多个进程竞争使用共享型的设备 -
“可抢占”和“不可抢占”的优先级调度算法相比,【B】。
A. 前者开销小
B. 前者开销大(竞争大开销也大
)
C. 两者开销大致相同
D. 两者开销不能比 -
一个进程获得除CPU以外的所有资源,则该进程可能处于【B】状态。
A. 运行
B. 就绪
C. 等待
D. 就绪和等待 -
银行家算法在解决死锁问题中用于【B】的。
A. 预防死锁
B. 避免死锁
C. 监测死锁
D. 解除死锁 -
保护现场是指将现场信息保存至【C】。
A. 磁盘
B. 各相应的寄存器
C. 进程的PCB中
D. 内存系统区 -
计算机系统中判别是否有中断事件发生应该是在【B】。
A. 进程切换时
B. 执行完一条指令后(就像停车不该停在上坡时,而是要停在上完坡之后
)
C. 执行P操作后
D. 由用户态转入核心态时 -
若当前的进程因时间片用完而让出处理机时,该进程应转变为【A】状态。
A. 就绪
B. 等待
C. 运行
D. 完成 -
一种既有利于短作业又兼顾长作业的作业调度算法是【C】。
A. 先来先服务
B. 轮转
C. 最高响应比优先
D. 均衡调度
-
作业调度程序从处于【B】状态的作业中选取一个作业并把它装入主存。
A. 输入
B. 收容
C. 执行
D. 完成
-
进程处于下列【C】等待状态时,它是处于非阻塞状态。
A. 等待从键盘输入数据
B. 等待协作进程的一个信号
C. 等待操作系统分配CPU时间
D. 等待网络数据进入内存 -
若系统中有5个并发进程涉及某个相同的变量A,则变量A的相关临界区是由【D】临界区构成。
A. 2个
B. 3个
C. 4个
D. 5个
-
在多个进程的并发系统中,肯定不会因竞争【D】而产生死锁。
A. 打印机
B. 磁带机
C. 磁盘
D. CPU -
通常不采用【D】方法来解除死锁。
A. 终止一个死锁进程
B. 终止所有死锁进程
C. 从死锁进程处抢夺资源
D. 从非死锁进程处抢夺资源(死锁 与 非死锁线程无关
) -
进程所请求的一次打印输出结束后,将使进程状态从【D】。
A. 运行态变为就绪态
B. 运行态变为等待态
C. 就绪态变为运行态
D. 等待态变为就绪态(等待打印完成,后就绪供CPU调用
) -
共享变量是指【D】访问的变量。
A. 只能被系统进程
B. 只能被多个进程互斥
C. 只能被用户进程
D. 可被多个进程 -
UNIX系统中,进程调度采用的技术是【D】。
A. 时间片轮转
B. 先来先服务
C. 静态优先数
D.动态优先数
-
死锁现象是由于【C】造成的。
A. CPU数量不足
B. 内存数量不足
C. 多个进程抢夺并独占资源
D. 作业批处理 -
临界区是指【C】。
A. 一组临界资源的集合
B. 可共享的一块内存区
C. 访问临界资源的一段代码
D. 请求访问临界资源的代码 -
在一段时间内,只允许一个进程访问的资源称为【C】。
A. 共享资源
B. 独占资源
C. 临界资源
D. 共享区 -
不需要信号量能实现的功能是【D】。
A. 进程同步
B. 进程互斥
C. 执行的前驱关系
D. 进程的并发执行 -
当中断发生后,进入中断处理的程序属于【B】。
A. 用户程序
B. OS程序
C. 可能是用户程序,也可能是OS程序
D. 单独的程序,既不是用户程序,也不是OS程序 -
某计算机系统中有8台打印机,有K个进程互斥竞争使用,每个进程最多需要3台打印机。该系统可能会发生死锁的K的最小值是【C】。
A. 2
B. 3
C. 4
D. 5
📚 死锁:每个进程占用(3 -1 =2
)台打印机,就没有打印机可分配了,然后互相持有并等待,产生死锁,也就是 k × 2 ≥ 8 k\times2 \ge 8 k×2≥8,得k == 4
-
进程P0和P1的共享变量定义及初值如下:
boolean flag[2];
int turn=0;
flag[0]=false;
flag[1]=false;
若进程P0和P1访问临界资源的伪代码按照下面设计:
void P0(){ //进程P0
while(true){
flag[0]=true;
turn=1;
while(flag[1] && turn==1)
临界区;
flag[0]=false;
}
}
void P1(){//进程P1
while(true){
flag[1]=true;
turn=0;
while(flag[0] && turn==0)
临界区;
flag[1]=false;
}
}
则并发执行进程P0和P1时产生的情况是【A】。
A. 不能保证进程互斥进入临界区,会出现“饥饿”现象
B. 不能保证进程互斥进入临界区,不会出现“饥饿”现象
C. 能保证进程互斥进入临界区,会出现“饥饿”现象
D. 能保证进程互斥进入临界区,不会出现“饥饿”现象
- 下列选项中,降低进程优先级的合理时机是【A】。
A. 进程的时间片用完
B. 进程刚完成I/O,进入就绪队列
C. 进程长期处于就绪队列
D. 进程从就绪状态转为运行状态 - 假设与某类资源相关联的信号量初值为3,当前值为1,若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别是【B】。
A. 0、1
B. 1、0(还有一个空闲可用资源,无需等待直接获取
)
C. 1、2
D. 2、0 - 下列选项中,导致创建新进程的操作是【C】。
I.用户登录成功
II. 设备分配
III.启动程序执行
A. 仅I和II
B. 仅II和III
C. 仅I和III
D. I、II、III - 下列选项中,操作系统提供给应用程序使用的接口是【A】。
A. 系统调用
B. 中断
C. 库函数
D. 原语 - 下列进程调度算法中,综合考虑了进程等待时间和执行时间的是【D】。
A. 时间片轮转调度算法
B. 短进程优先调度算法
C. 先来先服务调度算法
D. 高响应比优先调度算法 - 单处理机系统中,可并行的是【D】。
I. 进程与进程(互斥,只能并发)
II.处理机和设备
III.处理机和通道
IV.设备与设备
A. I、II和III
B. I、II和IV
C. I、III和IV
D. II、III和IV - 如果有一个进程从运行状态变成等待状态,或完成工作后就撤销,则必定会发生【A】。
A. 进程切换
B. 存储器再分配
C. 时间片轮转
D. 死锁 - 在时间片轮转算法中,【C】的大小对计算机的性能有很大影响。
A. 对换区
B. 分页
C. 时间片
D. 程序段 - 在操作系统中,资源分配、调度和管理的最小单位是【A】。
A. 进程
B. 线程
C. 作业
D. 程序段 - 正在运行的进程,因某种原因而暂停执行,等待某个时间的发生,此时处于【D】状态。
A. 运行
B. 完成
C. 就绪
D. 阻塞 - 进程从运行状态转换为就绪状态的可能原因是【D】。
A. 被调度程序选中占用处理机
B. 等待某一事件
C. 等待的事件已经发生
D. 时间片用完 - 设m为同类资源数,n为系统中并发进程数。当n个进程共享m个互斥资源时,每个进程的最大需求是w,则下列情况中出现系统死锁的是【D】。
A. m=2,n=1,w=2
B. m=2,n=2,w=1
C. m=4,n=3,w=2
D. m=4,n=2,w=3
🍁 综合应用题
1. 判断死锁的必要条件
- 互斥:进程竞争的资源必须是互斥使用。
- 请求和保持:在申请新的资源的同时,继续保持占用已分配到的资源。
- 不可剥夺:进程所获得的资源不被其他进程强行剥夺,而只能由获得该资源的进程自行释放资源。
- 循环等待:存在一个至少包含两个进程的循环等待链,链中的每个进程都在等待下一个进程所占有的资源。
3. 举例说明,P、V操作为什么要设计成原语
(即对同一信号量上的操作必须互斥)。
P(S)操作:
S.value--;
if(S.value<0){
Add this process to S.L;
Block();
}
V(S)操作:
S.value++;
if(S.value<=0){
Remove a process P from S.L;
Wakeup(P);
}
例如,用P、V操作来实现进程对临界资源的互斥使用,此时,只需定义一个信号量S,其初值{1,NULL},并在临界区前执行P(S)操作,在临界区后执行V(S)操作。
此时若P、V操作不设计成原语,那么执行P、V操作时进程可以被中断。由于在初始状态下临界资源空闲,故允许第一个申请临界资源的进程进入临界区使用临界资源,但如果该进程在执行P操作的语句S.value–后(此时S.value的值为0)便被另一个进程中断,而那个进程也企图通过执行P(S)操作进入临界区。则第二个进程也必须执行S.value–,从而将S.value的值置为-1,并由于S.value<0而被阻塞,而第一个进程再次获得CPU后也同样由于S.value<0而被阻塞,这就造成了临界资源虽然空闲但进程却申请不到临界资源的情况,也就是说,此时的P、V操作已经无法满足同步机制的要求。同样,一个执行P(S)操作的进程被中断后另一个进程去执行V(S)操作,一个执行V(S)操作的进程被中断后而另一个进程去执行P(S)或V(S)操作,都将发生混乱而难以实现进程同步。因此,P、V操作必须设计成原语的方式。
4. 进程并发时间计算
并发使得处理机的利用率得到提高,其主要原因是处理机与 I/O 可以同时为多个进程服务,也即处理机与 I/O 设备真正地并行。但是处理机的利用率提高不是简单地将两个进程的处理机利用率相加,而是遵循一定的规律。现在有一个计算机系统采用多道程序实现技术实现了并发。调度算法采用时间片轮转,时间片很小可以不急进程并发时的次序。忽略计算机系统的开销。
假设进程创建时间和完全占用CPU运行的确切时间如下表所示。已知I/O繁忙率为80%,处理机利用率为20%
。请计算并填写下列空格和图表空格处。
计算机引入多道程序设计技术主要是为提高处理机的利用率,在多道程序并发的情况下,处理机的利用率有如下规律:
U
=
1
−
P
n
U=1-P^n
U=1−Pn,其中
U
U
U 为处理机利用率,
P
P
P 为 I/O 繁忙率,
n
n
n 为并发进程数。
当1个进程运行时,处理机的利用率为 20% ,这个进程独享处理机,所以20%的利用率均被使用。在时刻10:00到10:10期间,进程0独享处理机。这期间,进程0实际的处理机时间为10分钟*20%=2分钟。
当2个进程运行时,根据公式计算得到处理机的利用率为36%
(
1
−
0.8
×
0.8
=
0.36
)
(1-0.8\times0.8=0.36)
(1−0.8×0.8=0.36),2个进程共享处理机,所以每个进程的处理机利用率为18%
。在10:10到10:15期间,进程0和进程1各自实际的处理机时间为
5
×
38
%
=
0.9
5 \times 38 \% = 0.9
5×38%=0.9 分钟。
同理,3个进程, 1 − 0. 8 3 = 49 % 1-0.8^3 =49\% 1−0.83=49%,各处理机时间为 5 × 49 % ÷ 3 = 0.8 5 \times 49\%\div3=0.8 5×49%÷3=0.8 分钟。
4个进程,
1
−
0.
8
4
=
59
%
1-0.8^4=59\%
1−0.84=59%,4个进程共享处理机,每个进程的处理机利用率约为15%
。
从时刻10:20开始,4个进程并发。那么,从图可以看到,进程0已经运行了3.7分钟,进程1有1.7分钟,进程2运行了0.8分钟,进程3刚运行。根据题目给出的每个进程实际占有处理机的时间,得到各进程(0-3) 分别还剩的分钟数位 3、1.3、1.2、2
。显然,在并发且平均使用处理机的情况下,进程结束的次序应该是 0、2、1、3。
首先考虑进程0的情况,还剩0.3
分钟,在4个进程并发且处理机利用率每进程15%的情况,需要0.3/15%=2分钟,得到10.22分钟时,进程0结束。
进程0 退出后再结算剩余进程的剩余时间,进程 1、2、3 分别为 1.0、0.9、1.7
分钟。下一个结束的进程号是2,
0.9
/
16
%
=
5.6
0.9/16\%=5.6
0.9/16%=5.6 分钟(此时3个进程并发,处理机的利用率为每进程16%)。到10:27.6,进程2结束。
同理,进程2结束后,进程1、3分别剩余0.1、0.8分钟,0.1/18%=0.6分钟(2个进程并发)。到10:28.2,进程1结束。
进程3剩余0.7分钟, 0.7 / 20 % = 3.5 0.7 /2 0\%=3.5 0.7/20%=3.5分钟。到10:31.7,进程3结束。
U
1
=
1
−
0.8
=
0.2
=
20
%
U1=1-0.8=0.2=20\%
U1=1−0.8=0.2=20%
U
2
=
1
−
0.
8
2
=
36
%
U2=1-0.8^2=36\%
U2=1−0.82=36%
U
3
=
1
−
0.
8
3
=
49
%
U3=1-0.8^3=49\%
U3=1−0.83=49%
U
4
=
1
−
0.
8
4
=
59
%
U4=1-0.8^4=59\%
U4=1−0.84=59%
甘特图中空白括号填写如下图所示:
5. 记录型信号量进程同步
设有一缓冲池P,P中含有10
个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出,如下所示。若进程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的设置。
参考答案
(1) 设置信号量
mutex
:用来互斥读写empty
:用来表示还有多少个可用(空)缓冲区full
:用来表示缓冲区中有多少数据
初值:mutex
=1,empty
=10,full
=0
(2) 设置wait,signal操作如下:
7. AND信号量(可选)
请利用 AND 信号量写出生产者-消费者问题的解法。
- 为解决并行所带来的死锁问题,在wait操作中引入AND条件,其基本思想是将进程在整个运行过程中所需要的所有临界资源一次性地全部分配给进程,用完后一次性释放。
8. 信号量同步算法 ⭐
测量控制系统中数据采集任务把所采集的数据送一个单缓冲区,计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。
int mutex=1, empty=n, full=0, in=0, out=0; // 初始化信号量和变量
main() {
cobegin
send(); // 生产者线程
obtain(); // 消费者线程
coend
}
send(){
while(1){
// 假设这里有一个步骤来获取或生成数据,并将其存储在nextp中
// 例如:nextp = generateData(); // 这里是生成数据的伪代码
wait(empty); // 等待缓冲区有空位
wait(mutex); // 进入临界区,确保互斥访问缓冲区
buffer[in] = nextp; // 将数据放入缓冲区
in = (in + 1) % n; // 更新生产者索引,循环使用缓冲区
signal(mutex); // 离开临界区
signal(full); // 增加已填充数据的数量
} // end while
} // end send
obtain() {
while(1) {
wait(full); // 等待缓冲区中有数据
wait(mutex); // 进入临界区,互斥访问缓冲区
nextc = buffer[out]; // 从缓冲区取出数据
out = (out + 1) % n; // 更新消费者索引,循环使用缓冲区
signal(mutex); // 离开临界区
signal(empty); // 增加空闲位置的数量
calculate the data in nextc; // 处理取出的数据
} // end while
} // end obtain
9. 记录型信号量 哲学家进餐问题
👨🏫 王道考研 哲学家进餐问题
试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的解
🔔 注意:资源的获取和释放的顺序是对称的,也就是先获取的后释放
🍻 奇偶哲学家竞争同一根筷子
设初始值为1的信号量c[I]:表示I号哲学家右手边的筷子是否被拿走, 1 表示还在, 0 表示已拿走
semaphore mutex = 1; // 保证互斥的拿筷子
send(I):
begin
// 假设哲学家编号从1到n,I是当前哲学家的编号
if I mod 2 == 1 then { // 奇数哲学家优先拿右手边的筷子
P(mutex);// 互斥进入临界区
P(c[I]); // 尝试拿右筷子
P(c[(I-1) mod n]); //尝试拿左筷子
eat; // 哲学家开始吃饭
V(c[(I-1) mod n]); //释放左筷子
V(c[I]); // 释放右筷子
V(mutex);
} else {// 偶数哲学家优先拿左手边的筷子
P(mutex);// 互斥进入临界区
P(c[(I-1) mod n]); // 尝试拿左筷子
P(c[I]); // 尝试拿右筷子
eat; // 哲学家开始吃饭
V(c[I]); // 先释放右筷子
V(c[(I-1) mod n]);// 再释放左筷子
V(mutex);
}
end
🍻 只允许 n-1 个哲学家同时吃饭
👨🏫 代码参考地址
semaphore mutex[n] = {1}; //初始化信号量为 1
semaphore count = n -1; //控制最多允许 n-1 位哲学家同时进餐
void philosopher(int i){
do {
//thinking //思考
p(count); //判断是否超过四人准备进餐
P(mutex[i]); //判断缓冲池中是否仍有空闲的缓冲区
P(mutex[(i+1)%5]);//判断是否可以进入临界区(操作缓冲池)
//...
//eat //进餐
//...
V(mutex[i]);//退出临界区,允许别的进程操作缓冲池
V(mutex[(i+1)%5]);//缓冲池中非空的缓冲区数量加1,可以唤醒等待的消费者进程
V(count);//用餐完毕,别的哲学家可以开始进餐
}while(true);
}
10. 临界区前后的P V操作 ⭐
为什么进程在进入临界区之前应该先执行“进入区”代码,在退出临界区后又执行“退出区”代码?
参考答案
为了实现多个进程对临界资源的互斥访问。
必须在临界区前面增加一段用于检查欲访问的临界资源是否正在被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志;如果正在被访问,则本进程不能进入临界区,实现这一功能的代码称为“进入区”代码;在退出临界区后必须执行“退出区”代码,用于恢复未被访问标志。
12. 修改 生产者-消费者问题的错误。
❌ 待修改代码
producer:
begin
repeat
......
producer an item in nextp;
wait(mutex);
wait(full);
buffer(in):=nextp;
signal(mutex);
until false;
end
consumer:
begin
repeat
wait(mutex);
wait(empty);
nextc:=buffer(out);
out:=out+1;
signal(mutex);
consumer item in nextc;
until false;
end
✅ 参考答案
producer:
begin
repeat
......
producer an item in nextp;
wait(empty); //新增
wait(mutex);
// wait(full);//删除
buffer(in):=nextp;
in:=(in+1)mod n; // 新增:缓冲池数组游标应前移
signal(mutex);
signal(full);// 新增
until false;
end
consumer:
begin
repeat
wait(full); // 新增
wait(mutex);
// wait(empty); // 删除
nextc:=buffer[out];
// out:=out+1; // 修改为下
out:=(out+1) mod n; //修改后版本
signal(mutex);
signal(empty); //新增
consumer item in nextc;
until false
end
17. 死锁问题种种
何谓死锁?产生死锁的原因和必要条件是什么?在解决死锁问题的几个方法中,哪种方法最容易实现?哪种方法使资源利用率最高?
参考答案
- 死锁:是指多个进程因竞争资源而造成的一种僵局,如无外力作用,这些进程都将永远不能再向前推进。
- 产生死锁是原因:
- 竞争资源
- 进程推进次序非法
- 产生死锁的必要条件:
- 互斥条件
- 请求和保持条件
- 不可剥夺条件
- 循环等待条件。
- 解决死锁的四种方法:
- 预防死锁(
最易实现
) - 避免死锁(
资源利用率最高
) - 检测死锁
- 解除死锁
- 预防死锁(
- 解决死锁的四种方法中,预防死锁最容易实现,而避免死锁的发生则可以使资源的利用率最高。
18. 简述预防死锁的办法。
预防死锁的角度主要是从破坏死锁产生的必要条件入手。
- 方法一:
- 如果系统当前存在的资源数量能够满足进程的资源要求,便一次性地为进程分配所需的全部资源;在该进程完成后再一次性地回收全部资源。这个方法称为摒弃请求和等待条件,可预防死锁。
- 方法二:
- 当系统中某些进程在已经占有一定数量资源的情况下,又提出新的资源请求,OS不能立即满足该进程的需要时,该进程必须立即释放已经占用和保持的所有资源,待以后需要时再重新申请,这种方法可以预防死锁,称为“摒弃不可剥夺条件”。
- 方法三:
采用一定的方法,将所有可提供的资源按类型排序编号,所有进程对资源的请求也必须严格按序号递增的次序提出,避免产生资源占有和资源需求的回路出现而造成死锁。此方法称为“摒弃环路等待条件”。
19. 中断与临界区
为使用户进程互斥地进入临界区,可以把整个临界区实现成不可中断的过程,即用户有屏蔽所有中断的能力。每当用户程序进入临界区的时候,屏蔽所有中断;当出了临界区的时候,再开放所有中断。你认为这种方法有什么缺点?
参考答案
用户进程进入临界区时屏蔽所有中断,包括系统程序的中断。
- 假如屏蔽的是用户进程,确实可以保护临界资源
- 但如果连系统所发出的中断也被屏蔽,会引起系统错误。
- 虽然系统外中断往往与当前运行的程序无关,但如果一些重要的硬件中断,如电源故障,可能会引起错误,故不可盲目屏蔽所有的中断。
23. 资源分配 安全序列 银行家算法
某系统有R1、R2和R3三种资源,在T0时刻P1、P2、P3、P4四个进程对资源的占用和需求情况如下表,此时系统的可用资源向量为(2,1,2)。(😴 不知所云
)
试问:
(1) 系统是否处于安全状态?如安全,请给出一个安全序列。
(2) 如果此时P1和P2均发出资源请求向量Request(1,0,1),为了保证系统的安全性,应该如何分配资源给这两个进程?说明你所采用的策略的原因。
(3) 如果(2)中两个请求立即得到满足,系统此刻是否处于死锁状态?
参考答案
(1) 利用安全性算法对T0时刻的资源分配情况进行分析,可得如下表所示的安全性检测情况。此时存在一个安全序列{P2,P3,P4,P1},系统是安全的。
(2) 若此时P1发出资源请求Request(1,0,1),按照银行家算法进行检查。
Request(1,0,1)<=Need(2,2,2)
Request(1,0,1)<=Need(2,1,2)
试分配并修改相应的数据结构,由此形成的资源分配情况如下表。
(3) 如果(2)中两个请求立即得到满足,此刻系统并没有立即进入死锁状态,因为此时所有进程没有提出新的资源申请,全部进程均没有因资源请求未得到满足而进入阻塞状态。只有当进程提出资源请求,且全部进程都进入阻塞状态时,系统才处于死锁状态。
25. 阅览室 信号量进程同步
有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名,读者离开时要注销登记信息;加入阅览室共有100个座位。使分别用信号量和P、V操作以及管程来实现用户进程的同步算法。(
😴 不知所云
)
信号量 + PV操作
var A:array[1..100] of Rec;
Rec=record
number:integer;
name:string;
end
i:integer;
for i:=1 to 100 do {A[i].number:=i;A[i].name=null;}
mutex,seatcount:semaphore;//信号量
mutex:=1;
seatcount:=100;
cobegin
process readeri(var readername:string)(i=1,2,..){
P(seatcount);
P(mutex);
for i:=1 to 100 do{
i++;
if A[i].name==null then A[i].name:=readername;//读者登记
}
// 必须采用这种方式,因为该空位是随机产生的。我们无法知道哪个读者何时离开
V(mutex);
进入阅览室,座号i,坐下读书;
P(mutex);
A[i].name=null;
V(mutex);
V(seatcount);
离开阅览室;
}coend
使用管程
TYPE readbook=monitor
VAR R:condition;
i,seatcount:integer;
name:array[1..100] of string;
DEFINE readercome,readerleave;
USE check,wait,signal,release;
procedure readercome(readername)
begin
cheak(IM);
if seatcount>=100 wait(R,IM)
seatcount=seatcount+1;
for i=1 to 100 do i++
if name[i]==null then name[i]=readername;
get the seat number=i;
releas(IM);
end
procedure readerleave(readername)
begin
cheak(IM);
seatcount--;
for i=1 to 100 do i++
if name[i]==readername then name[i]=null;
release(IM);
end
begin
seatcount:=100;
name:=null;
end
cobegin
process readi(i=1,2,...)
begin
readercome(readername);
read the book;
readerleave(readername);
leave the readroom;
end
coend
26. 进程互斥 信号量 ⭐⭐
设有n个进程共享一个互斥段,如果:
(1) 每次只允许一个进程进入互斥段;
(2) 每次最多允许m个进程同时进入互斥段(m<=n)。试问:所采用的信号量初值是否相同?信号量的变化范围如何?
参考答案
- 互斥信号量初值为1,变化范围为[-n+1,1]。
- 当没有进程进入互斥段时,信号量值为1
- 当有1个进程进入互斥段但没有进程等待进入互斥段时,信号量值为0
- 当有1个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为-1
- 最多可能有n-1个进程等待进入互斥段,故此时信号量的值应为-(n-1),也就是-n+1。
- 互斥信号量初值为m,变化范围为[-n+m,m]。
- 当没有进程进入互斥段时,信号量值为m
- 当有1个进程进入互斥段但没有进程等待进入互斥段时,信号量值为m-1
- 当有m个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为0;当有m个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为-1
- 最多可能有n-m个进程等待进入互斥段,故此时信号量的值应为-(n-m),也就是-n+m。
💖 天勤高分笔记
🍁 选择题
- 通常用户进程被建立后【B】。
A. 便一直存在于系统中,直到被操作人员撤销
B. 随着作业运行正常或不正常结束而撤销
C. 随着时间片的轮转而撤销与建立
D. 随着进程的阻塞或唤醒而撤销与建立 - 进程与程序的一个本质区别是【D】。
A. 前者分时使用CPU,后者独占CPU
B. 前者存储在内存,后者存储在外存
C. 前者在一个文件中,后者在多个文件中
D. 前者是动态的,后者是静态的 - 并发进程执行的相对速度是【C】。
A. 由进程的程序结构决定的
B. 由进程自己来控制的
C. 与进程调度策略有关的
D. 在进程被创建时确定的 - 中断扫描机构是【B】扫描一次中断寄存器。
A. 每隔一个时间片
B. 每条指令执行周期内最后时刻
C. 每当进程释放CPU
D. 每产生一个中断 - 进程从运行态到阻塞态可能是【A】。
A. 运行进程执行P操作
B. 进程调度程序的调度
C. 运行进程的时间片用完
D. 运行进程执行了V操作 - 下面所列进程的3中基本状态之间转换不正确的是【D】。
A. 就绪状态->执行状态
B. 执行状态->就绪状态
C. 执行状态->阻塞状态
D. 就绪状态->阻塞状态(只有可能是 阻塞 -> 就绪
) - 关于临界问题的一个算法(假设只有进程P0和P1可能会进入临界区)如下(i为0或1,代表进程P0或者P1):
repeat
retry:
if(turn!=-1)
turn=i;
if(turn!=i)
goto retry;
turn=-1;
临界区;
turn=0;
其他区域;
until false;
该算法【A】。
A. 不能保证进程互斥进入临界区,且会出现“饥饿”??
B. 不能保证进程互斥进入临界区,但不会出现“饥饿”
C. 保证进程互斥进入临界区,但会出现“饥饿”
D. 保证进程互斥进入临界区,不会出现“饥饿”
-
在OS中,一方面每个进程具有独立性,另一方面进程之间具有相互制约性。对于任何两个并发进程,它们【C】。
A. 必定无关
B. 必定相关
C. 可能相关
D. 可能相同 -
【B】有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业(进程)。
A. 时间片轮转调度算法
B. 先来先服务调度算法
C. 短作业(进程)优先调度算法
D. 优先权调度算法 -
对进程的管理和控制使用【B】。
A. 指令
B. 原语
C. 信号量
D. 信箱通信 -
下面哪个特征是并发程序执行的特点【A】。
A. 程序执行的间断性
B. 相互通信的可能性
C. 产生死锁的可能性
D. 资源分配的动态性 -
进程调度算法中,可以设计成可抢占式的算法有【D】。
A. 先来先服务
B. 最高响应比优先
C. 最短作业优先
D. 时间片轮转 -
在一个繁忙的十字路口,每个方向只有一个车道,如果车辆只能向前直行,而不允许转弯和后退,并未采用任何方式进行交通管理。下述正确的是【D】。
A. 该十字路口不会发生死锁
B. 该十字路口一定会发生死锁
C. 该十字路口可能会发生死锁,规定同时最多3个方向使用该十字路口是最有效的方法
D. 该十字路口可能会发生死锁,规定南北方向的两个车队和东西方向的两个车队互斥使用该十字路口是最有效的方法 -
若每个作业只能建立一个进程,为了照顾短作业用户,应采用(短作业优先算法);为了照顾紧急作业用户,应采用(
基于优先级的剥夺调度算法
);为了实现人机交互,应采用(时间片轮转调度算法
);为了使短作业、长作业和交换用户都满意,应采用(多级反馈队列调度算法
)。D
I. FCFS调度算法
II. 短作业优先调度算法
III. 时间片轮转调度算法
IV. 多级反馈队列调度算法
Ⅴ. 基于优先级的剥夺调度算法
A. II、V、I、IV
B. I、V、III、IV
C. I、II、IV、III
D.II、V、III、IV
-
下面关于进程的叙述中,正确的是【A】。
A. 进程获得CPU运行是通过调度得到的
B. 优先级是进程调度的重要依据,一旦确定就不能改变
C. 单CPU的系统中,任意时刻都有一个进程处于运行状态
D. 进程申请CPU得不到满足,其状态变为阻塞 -
现有3个同时到达的作业J1、J2、J3,它们的执行时间分别是T1、T2和T3,且T1<T2<T3。若系统按单道方式运行且采用短作业优先调度算法,则平均周转时间是【C】。
A. T1+T2+T3
B. (T1+T2+T3)/3
C. (3T1+2T2+T3)/3
D. (T1+2T2+3T3)/3 -
下面哪一个不会引起进程创建【C】。
A. 用户登录
B. 作业调度
C. 设备分配
D. 应用请求 -
采用时间片轮转调度算法分配CPU时,当处于执行状态的进程用完一个时间片后,它的状态是【C】。
A. 阻塞
B. 运行
C. 就绪
D. 消亡 -
在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区。所谓的临界区是指【D】。
A. 一个缓冲区
B. 一段数据区
C. 同步机制
D. 一段程序 -
要实现两个进程互斥,设一个互斥信号量mutex,当mutex为0 时,表示【B】。
A. 没有进程进入临界区
B. 有一个进程进入临界区
C. 有一个进程进入临界区,另一个进程在等候
D. 两个进程都进入临界区 -
既考虑作业等待时间,又考虑作业执行时间的调度算法是【A】。
A. 高响应比优先
B. 短作业优先
C. 优先级调度
D. 先来先服务 -
为多道程序提供共享资源不足时,可能会产生死锁。但是,不当的【D】也可能产生死锁。
A. 进程调度顺序
B. 进程的优先级
C. 时间片大小
D. 进程推进顺序 -
有若干并发进程均将一个共享变量count的值加1一次,那么有关count中的值的说法正确的是【C】。
I. 肯定有不正确的结果
II. 肯定有正确的结果
III. 若控制这些并发进程互斥执行count加1操作,count中的值正确。
A. I和III
B. II和III
C. III
D. I、II和III -
死锁与安全状态的关系是【D】。
A. 死锁状态有可能是安全状态
B. 安全状态有可能成为死锁状态
C. 不安全状态就是死锁状态
D. 死锁状态一定是不安全状态 -
在下述父进程和子进程的描述中,正确的是【BD】。(此题为多项选择题)
A. 父进程创建子进程,因而父进程执行完后,子进程才能运行
B. 父进程和子进程可以并发执行
C. 撤销子进程时,应该同时撤销父进程
D. 撤销父进程时,应该同时撤销子进程 -
下面有关进程调度算法的准则,错误的是【C】。
A. 尽量提高处理器利用率
B. 尽可能提高系统吞吐率
C. 适当增长进程在就绪队列中的等待时间
D. 尽快响应交互式用户的要求 -
在单处理机的多进程系统中,进程切换时,何时占用处理器和占用多长时间取决于【C】。
A. 进程响应程序段的长度
B. 进程总共需要运行时间的长短
C. 进程自身和进程调度策略
D. 进程完成什么功能 -
设有n个进程共用一个相同的程序段,若每次最多允许m个进程(m<=n)同时进入临界区,则信号量的初值为【B】。
A. n
B. m
C. m-n
D. -m -
某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台打印机。当N的取值不超过【B】时,系统不会发生死锁。
A. 4
B. 5
C. 6
D. 7 -
若系统中有5台绘图仪,有多个进程需要使用两台,规定每个进程一次仅允许申请一台,则最多允许【D】个进程参与竞争,而不会发生死锁。
A. 5
B. 2
C. 3
D. 4 -
银行家算法在解决死锁问题中用于【B】。
A. 预防死锁
B. 死锁避免
C. 检测死锁
D. 解除死锁 -
采用资源剥夺法可以解除死锁,还可以采用【B】方法解除死锁。
A. 执行并行操作
B. 撤销进程
C. 拒绝分配新资源
D. 修改信号量 -
若一个信号量的初值为3,进过多次P、V操作之后,当前值为-1,则表示等待进入临界区的进程数为【A】。
A. 1
B. 2
C. 3
D. 4 -
一个正在访问临界资源的进程由于申请等待I/O操作而被中断时,它【C】。
A. 允许其他进程进入与该进程相关的临界区
B. 不允许其他进程进入临界区
C. 允许其他进程抢占处理器,但不能进入该进程的临界区
D. 不允许任何进程抢占处理器
📚 进程进入临界区必须满足互斥条件,进程进入临界区但是尚未离开就被迫进入阻塞状态是可以的。在此情况下,只要其他进程在运行过程中不进入与该临界资源相关的临界区,就应该允许其运行。究其本质,该进程锁定临界区,是锁定了临界区所访问的临界资源,即不允许其他进程在该进程访问临界区的过程中访问该临界资源。
- 可以被多个进程在任意时刻共享的代码必须是【C】。
A. 顺序代码
B. 机器语言代码
C. 不能自身修改的代码
D. 无转移指令的代码
📚 若代码可以被多个进程在任意时刻共享,则要求每个进程在调用此段代码是都以同样的方式运行;而且进程在运行过程中被中断后继续执行,其结果也不受影响。这就要求代码不能自身修改,否则无法满足共享要求。这种代码就是可重入代码,也叫纯代码,即允许多个进程同时访问的代码。
- 进程A和进程B通过共享缓冲区协作完成数据处理,该缓冲区支持多个进程同时进行读写操作。进程A负责产生数据并放入缓冲区,进程B负责从缓冲区取出数据并处理。两个进程的制约关系为【B】。
A. 互斥关系
B. 同步关系
C. 互斥与同步
D. 无制约关系
📚 不同功能的并发进程因为通过操作共享资源协作完成任务而产生的制约关系是同步关系。进程A和进程B的功能分别是产生数据和处理数据,两者属于不同功能的进程,协作完成数据处理任务,因此是同步关系。
📚 多个进程产生的竞争制约关系为互斥关系。
- 一次性分配所有资源的方法可以预防死锁的发生,这种方法破坏的是产生死锁的4个必要条件中的【B】。
A. 互斥条件
B. 占有并请求(占有就是一次性全部占有,后续没有请求了
)
C. 不可剥夺条件
D. 循环等待 - 某个系统采用如下资源分配策略:若一个进程提出资源请求得不到满足,而此时没有由于等待资源而被阻塞的进程,则自己就被阻塞。若此时有因等待资源被阻塞的进程,则检查所有由于等待资源而被阻塞的进程,如果它们有申请进程所需要的资源,则将这些资源剥夺并分配给申请进程。这种策略会导致【D】。
A. 死锁
B. 抖动
C. 回退
D. 饥饿
- 本题策略不会导致死锁,因为破坏了不可剥夺这一条件。
- 但是这种策略会导致某些进程长时间等待所需资源而饥饿,因为被阻塞进程所持有的资源可以剥夺,所以被阻塞进程的资源数量在阻塞期间可能会变少,若系统不断出现其他进程申请资源,某些被阻塞进程会一直剥夺资源,同时系统无法保证在有限时间内将这些阻塞进程唤醒。
- 若系统中有n个进程,则在阻塞队列中进程的个数最多为【A】。
A. n(死锁的情况谁都别想跑
)
B. n-1
C. n-2
D. 1 - 在下列OS的各个功能组成部分中,一定需要专门硬件配合支持的是【B】。
I.地址映射
(例如:页表寄存器
)
II. 进程调度
III.中断系统
(例如:中断请求线
)
IV. 系统调用
A. I
B. I、III
C. I、III、IV
D. II、III - 在使用信号量机制实现互斥时,互斥信号量的初值一般为();而使用信号量机制实现
同步
时,同步信号量的初值一般为(D)。
A. 0;1
B. 1;0
C. 不确定;1
D. 1;不确定
- 下列有关线程的叙述中,正确的是【D】。
I. 在采用轮转调度算法时,一进程拥有10个用户级线程,则在系统调用执行时间上占用10个时间片(只有一个时间片
)
II. 属于同一个进程的各个线程共享栈空间(栈空间不共享,是进程私有的
)
III. 同一进程中的线程可以并发执行,但不同进程内的线程不可以并发执行(都可以并发执行
)
IV. 线程的切换,不会引起进程的切换(有可能会,因为两个互相切换的线程可能属于两个不同的进程
)
A. 仅I、II、III
B. 仅II、IV
C. 仅II、III
D. 全错 - 有若干并发进程均将一个共享变量count的值加1一次,那么有关count中的值说法正确的是【C】。
Ⅰ. 肯定有不正确的结果
Ⅱ. 肯定有正确的结果
Ⅲ
. 若控制这些并发进程互斥执行count加1操作,count中的值正确
A. I、III
B. II、III
C. III
D. I、II、III的说法均不正确 - 一作业8:00到达系统,估计运行时间为1h。若从10:00开始执行该作业,其响应比为【C】。
A. 2
B. 1
C.3
D. 0.5
(2 + 1) / 1 = 3
响应比 = 等待时间 + 处理时间 处理时间 = 响应时间 处理时间 响应比 = \frac{等待时间+处理时间}{处理时间}=\frac{响应时间}{处理时间} 响应比=处理时间等待时间+处理时间=处理时间响应时间
- 一个进程被唤醒意味着【A】。
A. 该进程可以重新占用CPU
B. 优先级变为最大
C. PCB移到就绪队列之首
D. 进程变为运行态 - 进程资源静态分配方式是指一个进程在建立时就分配了它需要的全部资源,只有该进程所要资源都得到满足的条件下,进程才开始运行。这样可以防止进程死锁。静态分配方法破坏死锁的【B】为必要条件。
A. 互斥条件
B. 请求和保持条件(占用并等待)
C. 非剥夺式等待条件
D. 循环等待条件 - (2009)下列进程调度算法中,综合考虑了进程等待时间和执行时间的是【D】。
A. 时间片轮转调度算法
B. 短进程优先调度算法
C. 先来先服务调度算法
D. 高响应比优先调度算法【响应比 = (等待时间 + 执行时间) / 执行时间
】 - (2009)某计算机系统中有8台打印机,有K个进程互斥竞争使用,每个进程最多需要3台打印机。该系统可能会发生死锁的K的最小值是【C】。
A. 2
B. 3
C. 4
D. 5 - (2010)列选项中,导致创建新进程的操作是【C】。
I.用户登录成功
II. 设备分配
III.启动程序执行
A. 仅I和II
B. 仅II和III
C. 仅I和III
D. I、II、III
- 用户登录成功就需要为这个用户创建进程来解释用户的各种命令操作
- 设备分配由内核自动完成,不需要创建新进程
- 启动程序执行的目的是创建一个新进程来执行程序
- (2010)假设与某类资源相关联的信号量初值为3,当前值为1,若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别是【B】。
A. 0、1
B. 1、0
C. 1、2
D. 2、0 - (2010)下列选项中,降低进程优先级的合理时机是【A】。
A. 进程时间片用完
B. 进程刚完成I/O,进行就绪队列
C. 进程长期处于就绪队列
D. 进程从就绪队列转为执行状态
- B选项,进程完成I/O后,进入就绪队列时,已经是优先级最低的进程,不能再降低其优先级,为了让其及时处理I/O结束,也应该提高优先级;
- C选项,进程长期处于就绪队列,也需要增加优先级,使其不至于产生饥饿(所谓饥饿是指进程长期得不到处理器,无法执行);
- D选项,当进程处于执行态,不可提高或降低其优先级。
- 而A选项,采用时间片轮转算法处理进程调度时,若进程时间片用完,则需要排到就绪队列的末尾,也就是优先级最低,所以降低优先级的合理时机是时间片用完。另外,如果采用多级反馈调度算法,若时间片用完,但进程还未结束,则放到下一级队列中。
-
(2010)进程P0和P1的共享变量定义及初值如下:
boolean flag[2];
int turn=0;
flag[0]=false;
flag[1]=false
;
则并发执行进程P0和P1时产生的情况是【A】。
A. 不能保证进程互斥进入临界区,会出现“饥饿”现象
B. 不能保证进程互斥进入临界区,不会出现“饥饿”现象
C. 能保证进程互斥进入临界区,会出现“饥饿”现象
D. 能保证进程互斥进入临界区,不会出现“饥饿”现象
-
(2011)下列选项中,满足短任务优先且不会发生“饥饿”现象的调度算法是【B】。
A. 先来先服务
B. 高响应比优先
C. 时间片轮转
D. 非抢占式短任务优先 -
在支持多线程的系统中,进程P创建的若干个线程不能共享的是【D】。
A. 进程P的代码段
B. 进程P中打开的文件
C. 进程P的全局变量
D. 进程P中某线程的栈指针(栈,都是私有的
) -
(2011)某时刻进程的资源使用情况如下表。
此时的安全序列是【D】。
A. P1、P2、P3、P4
B. P1、P3、P2、P4
C. P1、P4、P3、P2
D. 不存在
🍁 综合题
81. 进程的同步与互斥 ⭐⭐
- 同步:进程同步的主要任务是使并发执行的多个进程之间能有效地共享资源和相互合作,使执行的结果具有可再现性。
- 互斥:在OS中,当一个进程进入临界区使用临界资源时,另一个进程必须等待;当占用临界资源的进程退出临界区后,另一个进程才允许访问此临界资源,进程之间这种相互制约关系称为互斥。
- 两者之间的关系:互斥是进程同步的一种特殊情况,互斥也是为了达到进程之间协调推进的目的。
83. 进程竞争资源呢
有3个进程P1、P2和P3并发工作。
- 进程P1需用资源S3和S1
- 进程P2需用资源S1和S2
- 进程P3需用资源S3和S2。
回答:
- (1) 若对资源分配不加限制,会发生什么状况?为什么?
- (2) 为保证进程正确地工作,应采取哪些资源分配策略?为什么?
参考答案
(1) 若对资源分配不加限制,上述进程可能会进入死锁状态。因为P1、P2、P3是并发工作的,可能发生下述情况:当前P1获得S3,P2获得S1,P3获得S2,但3个进程都在循环等待其他进程所占有的资源,从而进入死锁状态。
(2) 为保证进程正确地工作,可采取下列资源分配策略。
- 要求给进程一次性地分配它所申请的全部资源,破坏“请求与保持”条件。
- 要求进程严格按照资源好递增顺序申请资源,破坏“环路等待”条件。
- 当一个进程申请资源时,如果系统已无该类资源可用,但某个用于该资源的其他进程处于阻塞状态,则允许前者抢占后者资源,破坏“不可剥夺”条件。
85. 转账 避免死锁
某银行计算机系统要实现一个电子转账系统,其基本的业务流程是:首先对转出方和转入方的账号进行加锁,其次进行转账业务,最后对转出方和转入方的账号进行解锁。如果不采取任何措施,系统会不会发生死锁?为什么?请设计一种能够避免死锁的方法。
参考答案
- 会发生死锁。
- 因为对两个账户进程加锁操作是可以分隔执行的,若两个用户同时进程转账,可能发生死锁。
- 解决方法:
- 采用资源顺序分配法,对A、B账号进行编号,用户转账时,只能按照编号由小到大的顺序进行加锁。
- 也可以采取资源预分配法,要求用户在使用资源之前将所需全部资源一次性申请到。
87. 进程之间的制约关系
进程之间存在哪几种制约关系?各是什么原因引起的?下面的活动属于哪种制约关系?
(1) 若干位同学去图书馆借书。(互斥
)
(2) 两队举行篮球赛。(互斥
)
(3) 流水线生产的各道工序。(同步
)
(4) 商品生产和社会消费。(同步
)
参考答案
- 进程之间存在的制约关系
- 直接制约关系(同步问题)
- 原因:同步问题是存在逻辑关系的进程间相互等待所产生的制约关系
- 间接制约关系(互斥问题)
- 原因:互斥问题是具有相互逻辑关系的进程竞争使用资源所发生的制约关系。
- 直接制约关系(同步问题)
(1) 属于互斥关系,因为书的个数是有限的,一本书只能借给一位同学。
(2) 属于互斥关系,篮球只有一个,两队都要竞争。
(3) 属于同步关系,各道工序的开始都依赖前道工序的完成。
(4) 属于同步关系,商品没有生产出来,消费无法进行;商品未消费完,生产也无须进行。
96. 火车订票
见上面,💖 简答题的 📚读者写者
97. 哲学家吃饭问题
4个哲学家甲、乙、丙、丁,坐在圆桌前思考问题。甲乙间有筷子0,乙丙间有筷子1,依次类推。每个哲学家饥饿时,就试图取用两边的筷子,只有两根筷子都被拿到才开始进餐。请用P、V操作写出哲学家活动的同步执行程序。
参考答案
至多只允许(n-1)个哲学家同时进餐,以保证至少有一个哲学家能拥有两根筷子而可以进餐;
Semaphore chopstick[4] = {1,1,1,1};
Semaphore S = 3;
P(i){
while(True){
P(S); //检查就餐人数是否到达3人
P(chopstick[i]);// 拿左筷子
P(chopstick[i+3] mod 4);// 拿右筷子
就餐;
V(chopstick[i]);
V(chopstick[i+3] mod 4);
V(S);
思考问题;
}
}
98. 并发进程写结果
设有两个优先级相同的进程P1和P2,如下。信号量S1和S2的初值均为
0
,试问P1、P2并发执行结束后,x、y、z的值各为多少?
可以将上述进程分解成以下6个程序段():
PS1:y=1;y=y+2;
PS2:z=y+1;
PS3:y=z+y;
PS4:x=1;x=x+2;
PS5:x=x+y;
PS6:z=x+z;
并将它们的并发执行关系用前驱图(或者前驱关系)描述出来。
根据Bernstein
条件
- 程序
PS1
和PS4
能并发执行 PS2
和PS5
也能并发执行- 而程序段
PS3
和PS6
则不能并发执行,或者说它们的并发执行具有不可再现性。
因为 ps3 的 y=z
+ y 和 ps6 的z
=x+z,z 作为输入影响到了 y,并发不安全。
xyz 各值
- 若先执行PS3,再执行PS6,则最后x、y、z的值分别为6、7、10
- 若先执行PS6,再执行PS3,则最后x、y、z的值分别为6、13、10
// TODO:先执行 PS6 再执行 PS2 会怎么样?
99. 并发进程的正确性
下面是两个并发执行的进程。它们能正确运行吗?若不能,请举例说明,并对其改正。
parbegin
var x:integer;
proxess P1:
var y,z:integer;
begin
x:=1;//并发安全问题,会出现被 P2进程的 x:=0 覆盖掉这里的 1 的情况,
//反之也有可能,这样子结果就有不确定性
y:=0;
if x>=1 then y:=y+1;
z:=y;
end
process P2
var t,u:integer;
begin
x:=0;
t:=0;
if x<=1 then t:=t+2;
u:=t;
end
parend
参考答案
上述两个并发执行的进程共享变量x,且共享时没能做到互斥,因此它们的执行结果具有不确定性。
- 若先执行P1,并在它执行完语句x:=1后进行进程调度,执行P2,并在P2结束后再调度执行P1,则最后的结果是x=y=z=0,t=u=2。
- 若先执行P1,并在它执行完if语句后再调度P2执行,最后结果是x=0,y=z=1,t=u=2。
Parbegin
var x:integer;
s:semaphore:=1; // 新增互斥信号量
process P1
var y,z:integer;
begin
P(s);// 加锁
x:=1;
y:=0;
if x>=1 then y:=y+1;
V(s);// 解锁
z:=y;
end
process P2
var t,u:integer;
begin
P(s);// 加锁
x:=0;
t:=0;
if x<=1 then t:=t+2;
V(s);// 解锁
u:=t
end
parend
110. 处理器调度
(1) 什么是处理器的三级调度?
处理器的三级调度是指一个作业在运行过程中遇到的高级调度(作业调度)、中级调度(进程对换)和低级调度(进程调度)。不是所有的OS都有三级调度,有的只实现了一级或二级,但是每个操作系统都有进程调度。
(2) 各级调度分别完成什么功能?
- 高级调度:
- 主要发生在有需要从外存调入一个作业到内存
- 高级调度的主要工作是决定外存的后备队列中哪个作业被调入内存,并给这个作业创建进程,分配必要的资源
- 中级调度:
- 主要在内存紧张需要调出一些进程,或者内存空闲需要把先前调出的进程调回内存时发生
- 中级调度的主要工作是在内存紧张时把就绪队列中暂时得不到执行的进程换到外存,也负责在内存较空闲时把换到外存的进程调回内存
- 低级调度:
- 主要在正在执行的进程放弃CPU或者被其他优先级高的进程抢占CPU时发生。
- 低级调度的主要工作是决定把CPU分配给就绪队列中的哪个进程
三、存储管理
💖 1000题集
🍁 单选题
- 下列页面置换算法中,可能会产生
Belay
异常现象的是【A】。
A. 先进先出算法FIFO
B. 最近最少使用算法LRU
C. 利用reference bit的近似的LRU
D. 最优算法optimal
Belay
现象指为进程分配的内存也增加,缺页率反而增加的异常现象。
- 下列页面置换算法中,可能会产生Belay异常现象的是【B】。
A. 最佳页面置换算法OPT
B. 先进先出算法FIFO
C. 最近最少使用算法LRU
D. 时钟页面置换算法Clock - 为进程分配连续内存的是【C】。
A. 分页存储管理
B. 分段存储管理
C. 可变分区管理
D. 段页式存储管理 - 在下面的页面调度置换算法中,【D】只是具有理论意义,但是实现起来很困难。
A. 先进先出置换算法
B. 最近最近为使用置换算法
C. clock置换算法
D. 最佳置换算法 - 属于内存连续分配方式的是【A】。
A. 固定分区分配方式
B. 分段存储管理方式
C. 分页存储管理方式
D. 段页式存储管理方式 - 下面关于联想存储器的说法中,不正确的是【D】。
A. 联想存储器是为了提高变换速度
B. 联想存储器是超高速缓存构成按内容可寻址的存储器
C. 联想存储器不增加太多的硬件投资
D. 联想存储器是高速缓存构造成按地址可寻址的存储器 - 可变分区管理中的【B】算法,空闲区按其大小递增次序组成链。
A. 首次适应
B. 最佳适应
C. 下次首次适应
D. 最坏适应 - 下列关于程序装入内存的说法中,正确的是【C】。
A. 由链接程序将用户源程序编译成若干目标模块
B. 由编译程序将编译后形成的目标代码和所需的库函数链接在一起
C. 由编译程序将用户源代码编译成若干目标模块
D. 由链接程序将装入模块装入内存 - 程序装入模块的主要方式包括【D】。
A. 绝对装入方式
B. 可重定位方式
C. 动态运行时装入方式
D. 以上三者 - 下列关于程序装入方式的叙述中,不正确的是【D】。
A. 绝对装入方式适用于单道程序环境下
B. 可重定位方式适用于多道程序环境下
C. 动态运行时装入方式也适用于多道程序环境下
D. 可重定位方式适用于单道程序环境下
- 单道程序环境:绝对装入方式
- 多道程序环境:可重定位方式、动态运行时装入方式
- 在进行程序链接时,应完成的工作是【B】。
I.对相对地址进行修改
II.变换外部调用符号
III. 首次适应算法
IV. 循环首次适应算法
A. I、II、III、IV
B. I、II
C. I、IV
D. I、II、III - 在动态分区分配方式中,看利用【D】分区分配算法。
A. 首次适应算法
B. 循环首次适应算法
C. 最佳适应算法
D. 以上三种 - 在动态分区分配方式中,将各空闲分区链接成空闲分区链的说法中,不正确的是【D】。
A. 在每个分区的起始地址部分设置一些用于控制分区分配的信息
B. 在每个分区的起始地址部分设置用于链接各分区的前向指针
C. 在每个分区的尾部设置一后向指针
D. 在每个分区的尾部设置一些用于控制分区分配的信息
- 分区起始地址:设置用于控制分区分配信息以及用于链接各分区的前向指针。
- 分区尾部:设置后向指针,通过前后指针将所有的分区链接成一个双向链表。
- 要保证一个程序在主存中改变存放位置后仍能正确执行,则对主存空间应采用【A】技术。
A. 动态重定位
B. 静态重定位
C. 动态分配
D. 静态分配 - 固定分片存储器管理把主存储器划分成若干个连续区,每个连续区称一个分区。经划分后分区的个数是固定的,各个分区的大小【D】。
A. 是一致的
B. 都不相同
C. 可以相同,也可以不相同,要根据作业长度固定
D. 在划分时确定且长度保持不变 - 采用固定分区方式管理主存储器的最大缺点是【B】。
A. 不利于存储保护
B. 主存空间利用率不高
C. 要有硬件的地址转换机构
D. 分配算法复杂 - 采用可变分区方式管理主存储器时,若采用最优适配算法,宜将空闲区按【C】次序登记在空闲区表中。
A. 地址递增
B. 地址递减
C. 长度递增
D. 长度递减 - 在可变分区存储管理中,某作业完成后要收回其主存空间,该空间可能要与相邻空闲区合并。在修改未分配区表时,使空闲区个数不变且空闲区始址不变的情况是【D】空闲区。
A. 无上邻也无下邻(个数+1,当前区就是一个空闲区
)
B. 无上邻但有下邻(个数不变,当前区合并下邻区,地址变为当前区的起始地址
)
C. 有上邻也有下邻(个数-1,当前区合并上下邻区,空闲区地址不变还是上邻区的地址
)
D. 有上邻但无下邻(个数不变,当前区合并上邻区,空闲区地址不变还是上邻区的地址
)
- 空闲区地址:取区域起始地址,也就是最上的地址
- 最佳适应算法的空闲区的排列方式是【B】。
A. 按大小递减顺序排序
B. 按大小递增顺序排序
C. 按地址由小到大排序
D. 按地址由大到小排序 - 分页系统中的页面是【B】。
A. 用户所能感知的
B. 操作系统所能感知的
C. 编译程序所能感知的
D. 链接装配程序所能感知的 - 在下列选项中对分段式存储管理描述正确的是【B ?】。
A. 每一段必须是连续的存储区
B.每一段
不必是连续的存储区
C. 每个段必须是大小相等的
D. 段与段之间的存储区必须是连续的
- 地址空间 ≠ 存储区 ???
不等式秒了- 地址空间:是程序可以访问的内存范围,抽象的概念,就好比书的目录。
- 而存储区:是实际存放数据的地方,物理的区域,例如内存和磁盘。
- 分页式存储管理中,地址转换工作是由【A】完成的。
A. 硬件
B. 地址转换程序
C. 用户重新
D. 装入程序 - 用户程序的逻辑地址可以不连续的存储管理方式是【D】。
A. 固定分区
B. 可变分区
C. 页式
D. 段式 - 【C】不是分段式虚拟存储管理优于分页式虚拟存储管理的方面。
A. 没有内零头
B. 便于处理在进程执行过程中堆栈尺寸的增长问题
C. 便于共享内存中的数据
D. 只需将进程的一部分调入内存,进程即可执行(两者都有
) - 若进行执行到某条指令时发生了缺页中断,经操作系统处理后,当该进程再次占用处理器时,应从【C】指令继续执行。
A. 被中断的前一条
B. 被中断的后一条
C. 被中断的
D. 开始时的第一条 - LRU页面调度算法是选择【B】的页面先调出。
A. 最近才使用
B. 最久未被使用
C. 驻留时间最长
D. 驻留时间最短 - 实现虚拟存储器的目的是【A】。
A. 扩充主存容量
B. 扩充辅存容量
C. 实现存储保护
D. 加快存储速度 - 采用段式存储管理时,一个程序可以被分成若干段,每一段的最大长度是由【C】限定的。
A. 主存空闲区长度
B. 硬件的地址结构
C. 用户编程时
D. 分配主存空间时 - 采用段式存储管理时,一个程序如何分段是在【B】决定的。
A. 分配主存时
B. 用户编程时
C. 装入作业时
D. 程序执行时 - 采用页式存储管理时,重定位的工作是由【C】完成的。
A. 操作系统
B. 用户
C. 地址转换机构
D. 主存空间分配程序 - 页式存储管理中的页表是由【D】建立的。
A. 操作员
B. 系统程序员
C. 用户
D. 操作系统 - 在可变分区存储管理中,采用移动技术可以【A】。
A. 汇集主存中的空闲区
B. 增加主存容量
C. 缩短访问周期
D. 加速地址转换
🍁 综合应用题
1. 何谓静态链接、装入时动态链接和运行时动态链接?
- 静态链接:是指事先进行链接形成一个完整的装入模块,以后不再拆开的链接方式。
- 装入时动态链接:是指目标模块在装入内存时,边装入边链接的方式。
- 运行时的动态链接:是指将某些目标模块的链接推迟到执行时才进行。
2. 引入动态重定位的目的是什么?
- 为了在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地址,引入了动态重定位。
- 可在系统中增加一个重定位寄存器,用它来装入(存放)程序在内存中的起始地址,程序在执行时真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的,从而实现动态重定位。
3. 为什么要引入段页式存储管理?说明在段页式存储管理系统中的地址变换过程。
- 为了获得分段在逻辑上的优点和分页在管理存储空间方面的优点,兼用分段和分页两者方法,设计出了段页式存储管理技术来实现对存储器的管理。
- 地址变换过程如下:
- 首先,由段表控制器确定段表在主存中的位置。
- 其次,将虚地址中的段号和控制寄存器中的段表大小比较,以确保其访问的有效性。
- 最后,硬件地址转换机构根据虚地址中的段号S,得到欲访问段在该作业的段表中的表目,并验证存取权限,以确保本次存储访问时允许的。
- 然后,检查分段存在标识(判状态位)
- 如果访问的段在主存,则通过段表找到该段的页表存放地址,再根据虚地址中的页号P查页表,找到该页对应的内存块号与虚地址中的页内地址相加形成物理地址
- 若访问的分段不在主存,则由硬件产生缺段中断。如果一完整的分段不在主存,则说明该段所有的页面均不在主存,因而也没有相应的页表。操作系统对缺页中断响应后,必须重新构造其页表,并装入一个或多个所需的页面。此时,开始继续执行本次的存储访问。当页表的位置和大小确定后,其存储访问过程如先前描述过的页面系统一样进行
11. 为什么说分段系统较之分页系统更易于实现信息共享和保护?
- 对于分页系统,每个页面是分散存储的,为了实现信息共享和保护,则页面之间需要一一对应起来,为此需要建立大量的页表项。
- 对于分段系统,每个段都从0开始编址,并采用一段连续的地址空间,这样在实现共享和保护时,只需为所要共享和保护的程序设置一个段表项,将其中的基址与段内地址一一对应起来即可。
12. 分页和分段有何区别?
- 共同点
- 分页和分段都采用离散分配的方式,且都要通过地址映射机构来实现地址变换。
- 不同点
- 从功能上,页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率,即满足系统的需要,而不是用户的需要;而段是信息的逻辑单位,它含有一组其意义相对完整的信息,目的是为了能更好的满足用户的需要。
- 页的大小固定且由系统确定,而段的长度却不固定,决定于用户所编写的程序。
- 分页的作业地址空间是一维的,而分段的作业地址空间是二维的。
13. 试全面比较连续分配和离散分配方式。
- 连续分配是指为一个用户程序分配一个连续的地址空间
- 单一连续分配方式
- 将内存分为系统区和用户区,系统区共操作系统使用,用户区供用户使用,是最简单的一种存储方式,但只能用于单用户单任务的操作系统中。
- 分区式分配方式。
- 固定分区:是最简单的多道程序的存储管理方式,由于每个分区的大小固定,必然会造成存储空间的浪费。
- 动态分区:根据进程的实际需要,动态地将之分配为连续的内存空间,常用的三种分配算法:首次适应算法FF,该算法容易留下很多难以利用的小空闲区,加大查找开销;循环首次适应算法,该算法能使内存中的空闲区分布均匀,但会导致缺少大的空闲分区;最佳适应算法,该算法也易留下了许多难以利用的小空闲区。
- 单一连续分配方式
- 离散分配方式基于将一个进程直接分散地分配到许多不相邻的分区中的思想
- 分页式存储管理旨在提高内存的利用率,满足系统管理需要
- 分段式存储管理旨在满足用户(程序员)的需要,在实现共享和保护方面优于分页式存储管理
- 段页式存储管理则是将两者结合,取长补短,既具有分段系统便于实现、可共享、易于保护、可动态链接等优点,又有能像分页系统那样能很好的解决外部碎片问题以及为各个分段可离散分配内存等问题,显然是一种比较有效的存储管理方式。
- 综上所述,连续分配方式和离散分配方式各有各的特点,应根据实际情况加以改进和利用。
22. 为什么要引入虚拟存储器的概念?
引入虚拟存储器是为了满足用户对存储器容量的巨大需求而虚构的一个非常大的地址空间,从而使用户在编程时无须担心存储器容量的不足。
💖 天勤高分笔记
🍁 选择题
-
下列说法正确的有【B】。
I.先进先出(FIFO )页面置换算法会产生Belay现象
II. 最近最少使用(LRU)页面置换算法会产生Belay现象
III. 在进程运行时,若它的工作集页面都在虚拟存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象
IV.在进程运行时,若它的工作集页面都在主存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象
A. I、III
B. I、IV
C. II、III
D. II、IV -
在一个请求分页系统中,采用LRU页面置换算法时,加入一个作业的页面走向 :1,3,2,1,1,3,5,1,3,2,1,5。当分配给该作业的物理块数分别为3和4时,在访问过程中所发生的缺页率为【C】。
A. 25%,33%
B. 25%,100%
C. 50%,33%
D. 50%,75%
-
假定有一个请求分页存储管理系统,测得系统各相关设备的利用率为:CPU为10%,磁盘交换区为99.7%,其他I/O设备为5%。试问,下面【B】措施可能改进CPU的利用率。
I.增大内存容量
II. 增多磁盘交换区的容量
III.减少多道程序的度数
IV. 增加多道程序的度数
V. 使用更快速的磁盘交换区
VI. 使用更快速的CPU
A. I、II、III、IV
B. I、III
C. II、III、V
D. II、VI
- 本题考查分页存储管理的内容。
- 首先分析题目给出的条件:CPU和I/O设备占用率较低,而磁盘交换器占有率非常高,说明当前系统频繁缺页,频繁进行页面置换,导致真正执行任务的时间变少,效率变低,系统发生抖动。
- 要缓解这种情况,需要降低系统缺页率,才能使系统有更多时间来处理任务而不是置换页面。
I
正确,增大内存可使得每个程序得到更多的页面,能减少缺页率,减少换入换出过程,可提高CPU利用率。- II错误,因为系统实际已处于频繁的换入换出过程中,增加磁盘交换区容量不能降低缺页率。
III
正确,减少多道程序的度数可以提高CPU的利用率,因为减少主存中的程序,每个进程分配到的内存空间相对增大。- IV错误,增加主存中的进程个数,只能导致系统换入换出更加频繁,性能更差。
- V错误,采用更快速的磁盘交换区,其换入换出的频率不会改变。
- VI错误,系统处于频繁的换入换出过程中,CPU处于空闲状态,利用率不高,提高CPU的速度无济于事。
- 因此,I、III可以改进CPU的利用率。
- 一个页式虚拟存储系统,其并发进程数固定为4个。最近测试它的CPU利用率和用于页面交换的利用率,假设得到的结果为下列选项,【C】说明系统需要增加进程并发数。
I. CPU利用率13%,磁盘利用率97%
II. CPU利用率97%,磁盘利用率3%
III.CPU利用率13%,磁盘利用率3%
A. I
B. II
C. III
D. I、III
- I,CPU低,磁盘高:缺页严重,抖动,此时若再增加并发进程反而会降低系统性能。页式虚拟存储系统因抖动而未能充分发挥功用。
- II,CPU高,磁盘低:说明缺页现象很少,大部分时间再处理业务,系统性能正常,此时不需要采取什么措施。
- III,CPU低,磁盘低:表明缺页现象不明显,而且CPU没有充分利用,此时应增加并发进程数,以提高系统的利用率。
-
适合多道程序运行的存储管理中,存储保护是为了【D】。
A. 防止一个作业占用同一个分区
B. 防止非法访问磁盘文件
C. 防止非法访问磁带文件
D. 防止各道作业相互干扰 -
操作系统中为实现多道程序并发,对内存管理可以有多种方式,其中代价最小的是【A】。
A. 分区管理
B. 分页管理
C. 分段管理
D. 段页式管理 -
目标程序对应的地址空间是【B】。
A. 名空间
B. 逻辑地址空间
C. 存储空间
D. 物理地址空间 -
在下述存储管理方案中,【A】管理方式要求作业占用连续的地址空间。
A. 分区
B. 分页
C. 分段
D. 段页式 -
不会产生内部碎片的存储管理是【B】。
A. 分页式存储管理
B. 分段式存储管理
C. 固定分区式存储管理
D. 段页式存储管理 -
在空白表中,空白区按长度由小到大进行查找的算法称为【A】算法。
A. 最佳适配
B. 最差适配
C. 最先适应
D. 先进先出 -
要保证一个程序在主存中被改变了存放位置后仍能正确地执行,则对主存空间应采用【B】技术。
A. 静态重定位
B. 动态重定位
C. 动态分配
D. 静态分配 -
下面关于虚拟存储器的论述中,正确的是【A】。
A. 在段页式系统中以段为单位管理用户的逻辑地址空间,以页为单位管理内存的物理地址空间,有了虚拟存储器才允许用户使用比内存更大的地址空间
B. 为了提高请求分页系统中内存的利用率,允许用户使用不同大小的页面
C. 为了能让更多的作业同时运行,通常只装入10%~30%的作用即启动运行
D. 最佳置换算法是虚拟存储器的常用算法 -
在可变分区分配管理中,某一作业完成后,系统回收其内存空间,并与相邻区合并,为此修改空闲区说明表,造成空闲区分区数减一的情况是【D】。
A. 无上邻空闲分区,也无下邻空闲分区
B. 有上邻空闲分区,但无下邻空闲分区
C. 无上邻空闲分区,但有下邻空闲分区
D. 有上邻空闲分区,也有下邻空闲分区 -
下面有关外层页表的叙述中错误的是【A】。
A. 反映在磁盘上页面存放的物理位置
B. 外层页表是指页表的页表
C. 为不连续(离散)分配的页表再建立一个页表
D. 若有了外层页表,则需要一个外存页表寄存器就能实现地址变换
- 外层页表不能表示页面的物理位置,而只是在页表较多时为页表建立一个页表。因为多了一层页表,也就额外需要一个寄存器来完成地址变换。
- 【C】存储管理方式能使存储碎片尽可能少,而且使内存利用率较高。
A. 固定分区
B. 可变分区
C. 分页管理
D. 段页式管理 - 解决主存碎片问题交换的存储器管理方式是【B】。
A. 可变分区
B. 分页管理
C. 分店管理
D. 单一连续分配 - 操作系统采用分页存储管理方式,要求【A】。
A. 每个进程拥有一张页表,且进程的页表驻留在内存
中
B. 每个进程拥有一张页表,但只有执行进程的页表驻留在内存中
C. 所有进程共享一张页表,以节约有效的内存空间,但页表必须驻留在内存中
D. 所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中 - 在一个操作系统中对内存采用页式存储管理方法,则所划分的页面大小【B】。
A. 要依据内存大小而定
B. 必须相同
C. 要依据CPU的地址结构而定
D. 要依据内存和外存而定 - 作业在执行中发生缺页中断,经操作系统处理后应让其执行【B】指令。
A. 被中断的前一条
B. 被中断的那一条
C. 被中断的后一条
D. 启动时的第一条 - 对重定位存储管理方式,应【A】。
A. 在整个系统中设置一个重定位寄存器
B. 为每个程序设置一个重定位寄存器
C. 为每个程序设置两个重定位寄存器
D. 为每个程序和数据都设置一个重定位寄存器 - 可重入程序是通过【D】方法来改善系统性能的。
A. 改变时间片长度
B. 改变用户数
C. 提高对换速度
D. 减少对换数量
- 可重入程序主要是通过共享来使用同一块存储空间的,或者通过动态链接的方式将所需的程序段映射到相关进程中,其最大的优点是减少了对程序段的调入调出,因此减少了对换数量。
- 【B】存储管理方式提供一维地址结构。
A. 分段
B. 分页
C. 分段和段页式
D. 以上都不对 - 下列存储管理方式中,会产生内部碎片的是【D】。
I. 请求分段存储管理
II.请求分页存储管理
III.段页式分区管理
IV.固定式分区管理
A. I、II、III
B. III、IV
C. 只有II
D. II、III、IV
- 内部碎片
- 分页:每页固定大小
- 固定分区:固定大小
- 外部碎片
- 分段:每段不固定大小
- 采用分页或分段管理后,提供给用户的物理地址空间【C】。
A. 分页支持更大的物理空间
B. 分段支持更大的物理空间
C. 不能确定
D. 一样大
-
用户的物理地址空间
=
总空间
−
页表或段表长度
用户的物理地址空间 = 总空间 - 页表或段表长度
用户的物理地址空间=总空间−页表或段表长度
页表和段表统一存储在内存中,系统提供给用户的物理地址空间为总的空间大小减去页表或段表长度。由于页表和段表的长度不能确定,因此提供给用户的物理地址空间大小也不能确定
- 使用修改位的目的是【D】。
A. 实现LRU页面置换算法
B. 实现NRU页面置换算法
C. 在快表中检查页面是否进入
D. 检查页面是否最近被写过 - 在分页虚拟存储管理中,“二次机会”调度策略和“时钟”调度策略在决定淘汰哪一页时,都用到了【C】。
A. 虚实地址变换机构
B. 快表
C. 引用位
D. 修改位
- “二次机会”和“时钟”调度策略有个共同之处,就是若当前页面刚被访问过(即引用位=1),则给予第二次驻留的机会。
- 二次机会算法: 对FIFO算法的改进,对FIFO算法做一个简单的修改:检查最老页面的R位(
引用位
)。如果R位是0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是1,就将R位置0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入时间使它就像刚装入的一样,然后继续搜索。
- 二次机会算法: 对FIFO算法的改进,对FIFO算法做一个简单的修改:检查最老页面的R位(
- 产生内存抖动的主要原因是【D】。
A. 内存空间太小
B. CPU运行速度太慢
C. CPU调度算法不合理
D. 页面置换算法不合理
- 抖动(颠簸):在虚存中,页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行的时间还多,此时系统效率急剧下降,甚至导致系统奔溃。
- 在虚拟页式存储管理方案中,【A】完成将页面调入内存的工作。
A. 缺页中断处理
B. 页面淘汰过程
C. 工作集模型应用
D. 紧缩技术利用 - (2011)当系统发生抖动(Trashing)时,可以采取的有效措施是【A】。
I.撤销部分进程
II. 增大磁盘交换区的容量
III. 提高用户进程的优先级
A. 仅I
B. 仅II
C. 仅III
D. 仅I、II - (2012)下列关于虚拟存储的叙述中,正确的是【B】。
A. 虚拟存储只能基于连续分配技术
B. 虚拟存储只能基于非连续分配
技术
C. 虚拟存储容量只受外存容量的限制
D. 虚拟存储容量只受内存容量的限制 - (2013)若用户进程访问内存时产生缺页,则下列选项中,操作系统可能执行的操作是【B】。
I. 处理越界错误
II.置换页面
III.分配内存
A. 仅I、II
B. 仅II、III
C. 仅I、III
D. I、II和III - 在段式分配中,CPU每次从内存中取一次数据需要【C】次访问内存。
A. 1
B. 2
C. 3
D. 4
- 先查段表
- 再查页表
- 查数据
-
下列关于页式存储说法中,正确的是【C】。
I. 在页式存储管理中,若关闭TLB
,则每当访问一条指令
或存储一个操作数时都要访问两次内存
II. 页式存储管理不会产生内部碎片
III. 页式存储管理当中的页面是为用户所感知的
IV. 页式存储方式可以采用静态重定位
A. 仅I、II、IV
B. 仅I、IV
C. 仅I
D. 仅I、II、III、IV -
(2014)下列措施中,能加快虚实地址转换的是【C】。
I.增大快表(TLB)容量
II.让页表常驻内存
III. 增大交换区(swap)
A. 仅I
B. 仅II
C. 仅I、II
D. 仅II、III -
(2014)在页式虚拟存储管理系统中,采用某些页面置换算法,会出现Belay异常现象,即进程的缺页次数会随着分配给该进程的页框个数的增加而增加。下列算法中,可能出现Belay异常现象的是【A】。
I. LRU算法
II.FIFO算法
III. OPT算法
A. 仅II
B. 仅I、II
C. 仅I、III
D. 仅II、III -
(2014)下列选项中,属于多级页表优点的是【D】。
A. 加快地址变换速度
B. 减少缺页中断次数
C. 减少页表所占连续内存空间
D. 减少页表所占的连续内存空间 -
(2015)系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要访问的下一页的页号为7,依据LRU算法,应淘汰的页是【A】。
A. 2
B. 3
C. 4
D. 8
-
(2015)在请求分页系统中,页面分配策略与页面置换策略不能组合使用的是【C】。
A. 可变分配,全局置换
B. 可变分配,局部置换
C. 固定分配,全局置换
D. 固定分配,局部置换 -
(2016)某系统采用改进型CLOCK置换算法,页表项中字段A为访问位,M为修改位。A=0表示页最近没有被访问,A=1表示页最近被访问过。M=0表示页没有被修改过,M=1表示页被修改过。按(A,M)所有可能的取值,将页分为四类:(0,0)、(1,0)、(0,1)和(1,1),则该算法淘汰页的次序为【A】。
A. (0,0)、(0,1)、(1,0)、(1,1)从小到大
B. (0,0)、(1,0)、(0,1)、(1,1)
C. (0,0)、(0,1)、(1,1)、(1,0)
D. (0,0)、(1,1)、(0,1)、(1,0)
四、文件管理
💖 1000题集
🍁 单选题
- 磁盘驱动调度算法中,能够随时改变磁头运动方向的算法是【D】。
A. 电梯调度算法
B. 扫描调度算法
C. 循环扫描算法
D. 最短寻道距离优先算法 - 在文件的逻辑组织中,不属于记录文件的是【B】。
A. 索引文件
B. 分区文件
C. 链接文件
D. 索引顺序文件 - 文件的物理结构中,对索引文件的描述正确的是【B】。
A. 索引表中每个记录的索引项可以有多个
B. 对索引文件存取时,必须先查索引表
C. 索引表中含有索引文件的数据及其物理地址
D. 建立索引表的目的之一是减少其所占有的存储空间 - 磁盘是一种可共享的设备,因此某一时刻读写它的用户进程可以是【D】。
A. 任意多个
B. 能限定多个
C. 至少能有一个
D. 至多能有一个 - 在下列文件中,不便于文件增、删操作的是【B】。
A. 索引文件
B. 连续文件
C. Hash文件
D. 串联文件 - 文件代表了计算机系统中的【C】。
A. 硬件
B. 软件
C. 软件资源
D. 硬件资源 - 在UNIX系统中,用户程序经过编译之后得到了可执行文件属于【B】。
A. ASCII文件
B. 普通文件
C. 目录文件
D. 特别文件 - 文件存放在存储介质上时,采用的组织形式是与【B】有关的。
A. 逻辑文件结构
B. 存储介质特性
C. 主存储器管理方式
D. 分配外设方式 - 文件的保密是防止文件被【C】。
A. 纂改
B. 破坏
C. 窃取
D. 删除 - 对磁盘进行移臂调度的目的是为了缩短【A】时间。
A. 寻道
B. 延迟
C. 传送
D. 启动 - 按文件用途来分,编辑程序是【A】。
A. 系统文件
B. 档案文件
C. 用户文件
D. 库文件 - 操作系统是通过【A】来对文件进行编排、增删、维护和检索的。
A. 按名存取
B. 数据逻辑地址
C. 数据物理地址
D. 文件属性 - 下列形式中,【B】的文件组织形式称为文件的逻辑组织。
A. 在外部设备上
B. 从用户观点看
C. 虚拟存储
D. 目录 - 由字符序列组成,文件内的信息不再划分结构,这是指【A】。
A. 流式文件
B. 记录式文件
C. 顺序文件
D. 有序文件 - 数据库文件的逻辑结构形式是【C】。
A. 字符流式文件
B. 档案文件
C. 记录式文件
D. 只读文件 - 文件的逻辑记录的大小【B】。
A. 是恒定的
B. 随使用要求变化的
C. 可随意改变的
D. 无法确定是哪种可能 - 特别文件是与【C】有关的文件。
A. 文本
B. 图像
C. 硬件设备
D. 二进制数据 - UNIX系统中,文件存储器的管理采用的是【C】。
A. 位图法
B. 空闲块表法
C. 成组链接法
D. 单块链接法 - 只适合顺序存取,不提供随机存取功能的存储介质是【C】。
A. 磁盘
B. 磁鼓
C. 磁带
D. 光盘 - 对磁盘请求重新排队的目的是【D】。
A. 重置移臂时间
B. 让优先级高的进程先I/O
C. 减少传输时间
D. 减少旋转时间 - 下列不便于文件扩充的物理文件结构是【A】。
A. 连续文件
B. 串联文件
C. 索引文件
D. 多重索引文件 - 在文件系统中,文件的不同物理结构有不同的优缺点。下列文件的物理组织结构中,不具有直接读写文件任意一个记录的能力的结构是【B】。
A. 连续文件
B. 串联文件
C. 索引文件
D. 逻辑文件 - 文件系统为每个文件另建立一张指示逻辑记录与物理记录之间的对应关系表,由此表和文件本身构成的文件是【C】。
A. 联系文件
B. 串联文件
C. 索引文件
D. 逻辑文件 - 在磁盘上,最容易导致存储碎片发生的物理文件结构是【B】。
A. 隐式链接
B. 顺序存放
C. 索引存放
D. 显式链接 - 如果文件系统中有两个文件重名,不应采用【A】。
A. 单级目录结构
B. 树形目录结构
C. 二级目录结构
D. A和C - 如果允许不同用户的文件可以具有相同的文件名,通常采用【D】来保证按名存取的安全。
A. 重名翻译结构
B. 建立索引表
C. 建立指针
D. 多级目录结构 - 对记录式文件,操作系统为用户存取文件信息的最小单位是【C】。
A. 字符
B. 数据项
C. 记录
D. 文件 - 使用绝对路径名访问文件是从【C】开始按目录结构访问某文件。
A. 当前目录
B. 用户主目录
C. 根目录
D. 父目录 - 设立当前工作目录的主要目的是【C】。
A. 节省外存空间
B. 节省内存空间
C. 加快文件的检索速度
D. 加快文件的读写速度 - 下列文件物理结构中,适合随机访问且易于文件扩展的是【B】。
A. 连续结构
B. 索引结构
C. 链式结构且磁盘块定长
D. 链式结构且磁盘块变长
🍁 综合应用题
1. 什么是文件的物理结构?它有哪几种组织方式?
- 顺序结构(
数组
)- 这是一种最简单的物理结构,它把逻辑上连续的文件信息依次存放在连续编号的物理块中。
- 只要知道文件在存储设备上的起始地址(首块号)和文件长度(总块数),就能很快地进行存取。
- 链接结构(
链表
)- 这种结构将逻辑上连续的文件分散存放在若干不连续的物理块中,每个物理块设有一个指针,指向其后续的物理块。
- 只要指明文件第一个块号,就可以按链指针检索整个文件。
- 索引结构(
带了目录的链表
)- 采用这种结构逻辑上连续的文件存放在若干不连续的物理块中,系统为每个文件建立一张索引表,索引表记录了文件信息所在的逻辑块号和与之对应的物理块号。
- 索引表也以文件的形式存放在磁盘上。给出索引表的地址,就可以查找与文件逻辑块号对应的物理块号。
- 如果索引表过大,可以采用多级索引结构。这种结构的优点是访问速度快,文件长度可以动态变化。
- Hash 结构
- 这种结构只适用于定长记录文件和按记录随机查找的访问方式。
- Hash结构的思想是通过计算来确定一个记录在存储设备上的存储位置,依次先后存入的两个记录在物理设备上不一定相邻。
2. 叙述各种文件物理组织方式的主要优缺点。
- 顺序文件
- 优点:顺序存取记录时速度较快,批处理、系统文件用得最多。
- 缺点:建立文件前需要能预先确定文件长度,以便分配存储空间;修改、插入和增加文件记录有困难;对直接存储器做连续分配,会造成空闲块浪费。
- 链接文件
- 优点:可以将文件的逻辑记录顺序与它所在的存储空间的物理记录顺序完全独立开来,存放信息的物理块不必连续而借助指针表达记录之间的逻辑关系;克服了顺序结构不适合增、删、改的缺点。
- 缺点:必须将指针与数据信息存放在一起,破坏了物理块的完整性;仅适用于顺序存储;整体性能较低。
- Hash文件(直接文件)
- 优点:可用在不能采用顺序组织方法、次序较乱又需在极短时间内存取的场合,对于实时处理文件、操作系统目录文件、存储管理的页表查找、编译程序变量名表等特别有效。
- 缺点:冲突问题,如何设计Hash函数使得冲突尽可能少发生。
- 索引文件
优点:具备连接文件的优点;具有直接读写任意一个记录的能力;便于增、删、改。
缺点:增加了索引表的空间开销和查找时间,大型文件的索引表的信息量甚至可能远远超过文件记录本身的信息量。
3. 一个UNIX文件F的存取权限为rwxr-x—,该文件的文件主uid=12,gid=1,另一个用户的uid=6,gid=1,是否允许该用户执行文件F?
F的存取权限为rwxr
-x
—
- 表示文件主可对文件进行读写执行操作
- 同组用户可对F进行
读
和执行
操作 - 其他用户不能对 F 做任何操作。
因为另一用户的组标识符gid相同,是同组用户,所以允许用户执行文件F。
💖 天勤高分笔记
🍁 选择题
-
驱动调度算法中,【B】算法可能会随时改变移动臂的运动方向。
A. 电梯调度
B. 最短寻道时间优先
C. 扫描
D. 单向扫描 -
下列关于打开文件
open()
操作和关闭文件close()
操作的叙述中,只有【A】是错误的。
A. close()操作告诉系统,不再需要指定的文件了,可以丢弃它(删除才是丢弃
)
B. open()操作告诉系统,开始使用指定的文件
C. 文件必须先打开,后使用
D. 目录必须先打开,后使用 -
考虑一个文件存放在100个数据块中。文件控制块、索引块或索引信息都驻留内存。那么如果【B】,不需要任何磁盘I/O操作。
A. 采用连续分配策略,将最后一个数据块搬到文件头部
B. 采用单级索引分配策略,将最后一个数据块插入文件头部
C. 采用隐式链接分配策略,将最后一个数据块插入文件头部
D. 采用隐式链接分配策略,将第一个数据块插入文件尾部 -
操作系统为了管理文件,设计了文件控制块(FCB),文件控制块的建立是【A】。
A. 在调用create()
时
B. 在调用open()时
C. 在调用read()时
D. 在调用write()时 -
通常对文件系统来说,文件名及属性可以集中在【A】中以便查询。
A. 目录
B. 索引
C. 字典
D. 作业控制块 -
在现代操作系统中,文件系统都有效地解决了重名(即允许不同用户的文件可以具有相同的文件名)问题。系统通过【C】来实现这一功能。
A. 重名翻译机构
B. 建立索引表
C. 树形目录结构
D. 建立指针 -
文件的顺序存取是【B】。
A. 按终端号依次存取
B. 按文件的逻辑号逐一存取
C. 按物理块号依次存取
D. 按文件的逻辑记录大小逐一存取 -
下列关于索引表的叙述中,正确的是【B】。
A. 索引表中每个记录的索引项可以有多个
B. 对索引文件存取时,必须先查索引表
C. 索引表中含有索引文件的数据及其物理地址
D. 建立索引表的目的之一是减少存储空间 -
无结构文件的含义是【C】。
A. 变长记录的文件
B. 索引文件
C. 流式文件
D. 索引顺序文件 -
下列算法中,用于磁盘调度的是【C】。
A. 时间片轮转
B. LRU算法
C. 最短寻道时间优先算法
D. 高优先级算法 -
下面关于文件的叙述中,错误的是【D】。
I. 打开文件的主要操作是把指定的文件复制到内存的指定区域
(系统调用open把文件的信息放到打开文件表中
)
II. 对一个文件的访问,常由用户访问权限和用户优先级共同限制
(对一个文件的访问,常由用户访问权限和文件属性共同控制
)
III. 文件系统采用树形目录结构后,对于不同用户的文件,其文件名应该不同
(文件系统采用树形目录结构,对于不同用户的文件,其文件名可以不同,也可相同
)
IV. 为防止系统故障造成系统文件受损,常采用存取控制矩阵方法保护文件
(采用备份的方法保护文件,而存取控制矩阵的方法是用于多用户之间的存取权限保护
)
A. 仅II
B. 仅I、II
C. 仅I、III、IV
D. I、II、III、IV -
文件系统采用多级目录结构的目的是【C】。
A. 减少系统开销
B. 节约存储空间
C. 解决命名冲突
D. 缩短传送时间 -
文件系统中设立打开(open)系统调用的主要目的是【B】。
A. 把文件从辅存读到内存
B. 把文件的控制信息从辅存读到内存
C. 把文件的FAT表信息从辅存读到内存
D. 把磁盘文件系统的控制管理信息从辅存读到内存 -
下列关于索引表的叙述,【B】是正确的。
A. 索引表每个记录的索引项可以有多个
B. 对索引文件存取时,必须先查找索引表
C. 索引表中含有索引文件的数据及其物理地址
D. 建立索引表的目的之一是为减少存储空间 -
【D】结构的文件最适合随机存取的应用场合。
A. 流式
B. 索引
C. 链接
D. 顺序 -
如果文件采用直接存取方法,且文件大小不固定,则应采用【B】物理结构。
A. 直接
B. 索引
C. 随机
D. 顺序 -
下列文件物理结构中,适合随机访问且易于文件扩展的是【B】。
A. 连续结构
B. 索引结构
C. 链式结构且磁盘块定长
D. 链式结构且磁盘块变长 -
(2012)下列选项中,不能改善磁盘I/O性能的是【B】。
A. 重排I/O请求次序
B. 在一个磁盘上设置多个分区
C. 预读和滞后写
D. 优化文件物理的分布 -
(2013)用户在删除某文件的过程中,操作系统不可能执行的操作是【A】。
A. 删除此文件所在的目录
B. 删除与此文件关联的目录项
C. 删除与此文件对应的文件控制块
D. 释放与此文件关联的内存缓冲区 -
现代操作系统中,文件系统都有效的解决了重名(即允许不同用户的文件可以具有相同的文件名)问题。系统是通过【C】来实现这一功能的。
A. 重名翻译结构
B. 建立索引表
C. 树形目录结构
D. 建立指针 -
在磁盘上容易导致存储碎片发生的物理文件结构是【B】。
A. 链接
B. 连续
C. 索引
D. 索引和链接 -
在文件系统中,若文件的物理结构采用连续结构,则文件控制块FCB中有关文件的物理位置信息包括【B】。
I.首块地址
II.文件长度
III. 索引表地址
A. 只有III
B. I和II
C. II和III
D. I和III -
采用直接存取法来读写磁盘上的物理记录时,效率最高的是【A】。
A. 连续结构的文件
B. 索引结构的文件
C. 链接结构的文件
D. 其他结构文件
- 适合随机存取的程度总结为:连续分配 > 索引分配 > 链接分配
- 下面关于文件系统的说法正确的是【D】。
A. 文件系统负责文件存储空间的管理,但不能实现文件名到物理地址的转换
B. 在多级目录结构中,对文件的访问时通过路径名和用户目录名进行的
C. 文件可以被划分成大小相等的若干物理块,且物理块的大小也可以任意指定
D. 逻辑记录是对文件进行存取操作的基本单位 - (2014)在一个文件被用户进程首次打开的过程中,操作系统需做的是【B】。
A. 将文件内容读到内存中
B. 将文件控制块读到内存中
C. 修改文件控制块中的读写权限
D. 将文件的数据缓冲区首指针返回给用户进程 - (2015)在系统内存中设置磁盘缓冲区的主要目的是【A】。
A. 减少磁盘I/O次数
B. 减少平均寻道时间
C. 提高磁盘数据可靠性
D. 实现设备无关性
五、输入输出管理
💖 1000题集
🍁 单选题
-
设备管理的主要任务和功能包括【D】。
A. 按照用户的要求控制I/O设备
B. 完成用户所希望的输入/输出要求
C. 进行设备分配,实现真正的I/O操作
D. 以上全部 -
按资源分配方式可将外设分为【C】。
A. 独占设备、共享设备、分时设备
B. 共享设备、分时设备、虚拟设备
C. 虚拟设备、独占设备、共享设备
D. 虚拟设备、独占设备、分时设备 -
下列关于各种设备说法正确的是【D】。
A. 独占设备的分配单位是作业,且当某作业占用此设备时,其他作业也可以使用该设备
B. 共享设备的分配单位是作业,且当某作业占用此设备时,其他作业也可以使用该设备
C. 独占设备的分配单位是进程,且当某进程占用此设备时,其他进程也可以使用该设备
D. 共享设备的分配单位是进程,且当某进程占用此设备时,其他进程也可以使用该设备 -
I/O操作的控制方式经历【A】阶段。
A. 程序直接控制方式、程序中断I/O控制方式、DMA控制方式、I/O通道控制方式
B. 程序中断I/O控制方式、中断I/O控制方式、DMA控制方式
C. 程序直接控制方式、DMA控制方式
D. I/O通道控制方式 -
下列关于各阶段CPU和外设间进行通信的方式中,说法正确的是【A】。
A. 程序直接控制方式中,CPU需要不断测试一台设备的忙/闲标志来获得外设的工作状态
B. 程序中断I/O控制方式中,CPU需要不断测试一台设备的忙/闲标志来获得外设的工作状态
C. 程序直接控制方式仅当I/O操作正常或异常结束时才中断中央处理机
D. DMA控制方式仅当I/O操作正常或异常结束时才中断中央处理机 -
下列关于引入通道的原因中,说法正确的时【D】。
A. 通道方式的引入是为了加快CPU和内存之间交换数据的速度
B. 通道方式的引入是为了加快内存和外存之间交换数据的速度
C. 通道方式的引入是为了加快CPU和外存之间交换数据的速度
D. 通道方式的引入是为了减轻CPU的工作负担和增加计算机系统的并行性 -
关于下列名词解释中,不正确的是【B】。
A. 通道的指令称为通道命令
B. 通道指令的集合称为通道程序
C. 用来存放通道程序首地址的主存固定单元称为通道地址字
D. 用来存放通道状态的主存固定单元称为通道状态字
- 通道命令:通道的指令称为通道命令。
- 通道程序:用通道命令编写的程序称为通道程序。
- 通道地址字:用来存放通道程序首地址的主存固定单元称为通道地址字。
- 通道状态字:用来存放通道状态的主存固定单元称为通道状态字。
-
设备分配策略与【D】因素有关。
I.I/O设备的固有属性
II.系统所采用的分配策略
III.设备分配中的安全性
IV.与设备的无关性
A. I,II,III
B. I,III,IV
C. I,II,IV
D. I,II,III,IV -
设备管理中,设备映射表(DMT)的作用是【D】。
A. 管理物理设备
B. 管理逻辑设备
C. 实现输入/输出
D. 建立逻辑设备与物理设备的对应关系
🍁 综合应用题
2. 什么是逻辑设备?什么是物理设备?如何实现从逻辑设备到物理设备的变换?这样做有什么好处?
定义
- 逻辑设备:逻辑设备特性是用户程序中所涉及的该类物理设备的抽象。
- 物理设备:实际使用的设备。
从逻辑设备到物理设备的变换:
- 使用作业控制语言中的一个语句(DD语句),建立逻辑设备和物理设备之间的对应关系。
- 使用系统设置的逻辑设备和物理设备映像表,实现从逻辑设备到物理设备名的转换。
好处
在进程执行时利用该类设备中的任一物理设备,而不必仅限于使用某一个。这不仅有利于改善资源利用率,而且对可适应性和可扩展性都有很大好处。
💖 天勤高分笔记
🍁 选择题
-
下列关于SPOOLing的叙述中,不正确的是【D】。
A. SPOOLing系统中必须使用独占设备
B. SPOOLing系统加快了作业执行的速度
C. SPOOLing系统使独占设备变成了共享设备
D. SPOOLing系统利用了处理器与通道并行工作的能力(通道无关的
) -
系统管理设备是通过一些数据结果来进行的,下面的【A】不属于设备管理数据结构。
A. FCB文件控制块
B. DCT设别控制表
C. SDT系统设备表
D. COCT控制器控制表
-
缓冲技术的缓冲池通常设立在【A】中。
A. 主存
B. 外存
C. ROM
D. 寄存器 -
在如下几种类型的系统中,【B】采用忙等待I/O是合适的。
a.专门用来控制单I/O设备的系统
b.运行一个单任务操作系统的个人计算机
c.作为一个负载很大的网络服务器的工作站
A. a
B. a、b
C. b、c
D. c
📚 采用忙等待I/O方式,当CPU等待I/O操作完成时,进程不能继续执行。
对于a、b这两种系统而言,执行I/O操作时系统不需要处理其他事务,因此采用忙等待I/O是合适的。对于网络服务而言,它需要处理网页的并发请求,需要CPU有并行处理的能力,因此忙等待I/O方式不适合这种系统。 -
下面设备中属于共享设备的是【C】。
A. 打印机
B. 磁带机
C. 磁盘
D. 磁带机和磁盘 -
I/O交通管制程序的主要功能是管理【A】的状态信息。
A.设备
、控制器
和通道
B. 主存、控制器和通道
C. CPU、主存和通道
D. 主存、辅存和通道 -
采用SPOOLing技术后,使得系统资源利用率【A】。
A. 提高了
B. 有时提高,有时降低
C. 降低了
D. 提高了,但出错的可能性增大了 -
如果I/O设备与存储设备间的数据交换不经过CPU来完成,则这种数据交换方式是【C】。
A. 程序查询方式
B. 中断方式
C. DMA方式(Direct Memory Access:存储直接访问技术
)
D. 外包总线方式 -
采用SPOOLing技术将磁盘的一部分作为公共缓冲区以代替打印机,用户对打印机的操作实际上是对磁盘的存储操作,用以代替打印机的部分是【B】。
A. 独占设备
B. 共享设备
C. 虚拟设备
D. 一般物理设备 -
在采用SPOOLing技术的系统中,用户暂时未能打印的数据首先会被送到【A】存储起来。
A. 磁盘固定区域
B. 内存固定区域
C. 终端
D. 打印机 -
若I/O所花费的时间比CPU的处理时间短很多,则缓冲区【B】。
A. 最有效
B. 几乎无效
C. 均衡
D. 以上都不是 -
CPU输出数据的速度远远高于打印机的速度,为解决这一矛盾,可采用【C】。
A. 并行技术
B. 通道技术
C. 缓冲技术
D. 虚存技术 -
下列有关设备独立性的说法中,正确的是【B】。
A. 设备独立性是指I/O设备具有独立执行I/O功能的一种特性
B. 设备独立性是指用户程序独立于具体物理设备的一种特性
C. 设备独立性是指能够实现设备共享的一种特性
D. 设备独立性是指设备驱动程序独立于具体物理设备的一种特性 -
CPU输出数据的速度远远高于打印机的打印速度,为解决这一矛盾可采用【C】
A. 并行技术
B. 通道技术
C. 缓冲技术
D. 虚存技术 -
通道又称I/O处理器,用于实现【A】之间的信息传输。
A. 内存与外设
B. CPU与外设
C. 内存与外存
D. CPU与外存 -
缓冲技术的缓冲池在【A】中。
A. 内存
B. 外存
C. ROM
D. 寄存器 -
在SPOOLing系统中,用户进程实际分配到的是【B】。
A. 用户所要求的外设
B. 内存区,即虚拟设备
C. 设备的一部分存储区
D. 设备的一部分空间 -
I/O中断是CPU与通道协调工作的一种手段,所以在【C】时,便要产生中断。
A. CPU执行“启动I/O”指令而被通道拒绝接收
B. 通道接受了CPU的启动请求
C. 通道完成了通道程序的执行
D. 通道在执行通道程序的过程中 -
下列关于设备驱动程序的叙述中,正确的是【A】。
I.与设备相关的中断处理过程是由设备驱动程序完成的
II. 由于驱动程序与I/O设备(硬件)精密相关,故必须全部用汇编语言书写 ❌(也有CPP
)
III.磁盘的调度程序是在设备驱动程序中运行的
IV. 一个计算机系统配置了2台同类绘图机和3台同类打印机,为了正确驱动这些设备,系统应该提供5个设备驱动程序。❌
(系统只要按设备类型配置设备驱动程序即可,即应提供2个设备驱动程序
)
A. 仅I、III
B. 仅II、III
C. 仅I、III和IV
D. I、II、III、IV -
【A】是操作系统中采用的以空间换取时间的技术。
A. SPOOLing技术
B. 虚拟存储技术
C. 覆盖和交换技术
D. 通道技术 -
程序员利用系统调用打开I/O设备时,通常使用的设备标识是【A】。
A. 逻辑设备名
B. 物理设备名
C. 主设备号
D. 从设备号 -
(2011)用户程序发出磁盘I/O请求后,系统的正确处理流程是【B】。
A. 用户程序->系统调用处理程序->中断处理程序->设备驱动程序
B. 用户程序->系统调用处理程序->设备驱动程序>中断处理程序
C. 用户程序->设备驱动程序>系统调用处理程序->中断处理程序
D. 用户程序->设备驱动程序->中断处理程序->系统调用处理程序 -
(2012)操作系统的I/O子系统通常由4个层次组成,每一层明确定义了与邻近层次的接口,其合理的层次组织排列顺序是【A】。
A. 用户级I/O软件、设备无关软件、设备驱动程序、中断处理程序
B. 用户级I/O软件、设备无关软件、中断处理程序、设备驱动程序
C. 用户级I/O软件、设备驱动程序、设备无关软件、中断处理程序
D. 用户级I/O软件、中断处理程序、设备无关软件、设备驱动程序
-
(2013)用户程序发出磁盘I/O请求后,系统的处理流程是:用户程序->系统调用处理程序->设备驱动程序->中断处理程序。其中,计算数据所在的磁盘的柱面号、磁头号、扇区号的程序是【C】。
A. 用户程序
B. 系统调用处理程序
C. 设备驱动程序
D. 中断处理程序 -
(2016)下列关于SPOOLing技术的叙述中,错误的是【D】。
A. 需要外存的支持
B. 需要多道程序设计技术的支持
C. 可以让多个作业共享一台独占设备
D. 有用户作业控制设备与输入/输出井之间的数据传送(系统控制而非用户作业设备控制
) -
(2017)系统将数据从磁盘读到内存的过程包括以下操作:B
① DMA控制器发出中断请求
② 初始化DMA控制器并启动磁盘
③ 从磁盘传输一块数据到内存缓冲区
④ 执行“DMA结束”中断服务程序
A. ③->①->②->④
B. ②->③->①->④
C. ②->①->③->④
D. ①->②->③->④
- 初始化DMA控制器并启动磁盘
- 从磁盘传输一块数据到内存缓冲区
- DMA控制器发出中断请求
- 执行“DMA结束”中断服务程序
- (2015中科院)虚拟设备是通过【C】技术实现的。
A. 并行
B. 通道
C. SPOOLing
D. 虚拟存储
🍁 综合题
- 为什么要引入设备独立性?如何实现设备独立性?
- 引入设备独立性可使应用程序独立于具体的物理设备。
- 此时,用户用逻辑设备名来申请使用某类物理设备,当系统中有多台该类型的设备时,系统可以将其中的一台分配给请求进程,而不局限于某一台指定的设备,这样可以显著改善资源的利用率及可适应性。
- 独立性还可以使用户程序独立于设备的类型,如进行输出时,既可用显示终端,也可以用打印机。有了这种适应性,就可以很方便地进行输入/输出重定向。
- 为了实现设备独立性,必须在设备驱动程序之上设置一层设备独立性软件,用来执行所有I/O设备的公用操作,并向用户层软件提供统一接口。
- 关键是系统中必须设置一张逻辑设备表(LUT )用来进行逻辑设备到物理设备的映射,其中每个表目中包含逻辑设备名、物理设备名和设备驱动程序入口地址;
- 当应用程序用逻辑设备名请求分配I/O设备时,系统必须为它分配相应的物理设备,并在LUT中建立一个表目,一行进程利用该逻辑设备名请求I/O操作时,便可从LUT中得到物理设备名和驱动程序入口地址。
- I/O控制方式可用哪几种方式实现?各有什么优缺点?
I/O控制方式的实现有4中方式,即程序I/O方式,中断控制方式、DMA控制方式和通道控制方式。
-
程序I/O方式
- 优点:控制简单,不需要很多硬件支持。
- 缺点:
- CPU和外设之间只能串行工作,并且CPU的大部分时间处于循环测试状态,这使得CPU的利用率大大降低
- CPU在一段时间内只能和一台外设交换数据信息,从而不能实现设备之间的并行工作
- 由于程序I/O方式依靠测试设备状态标志来控制数据传送,因此无法发现和处理因设备或其他硬件所产生的错误
- 程序I/O方式只适用于执行速度较慢且外设少的系统。
-
中断控制方式
- 优点:能实现CPU和设备、设备与设备间的并行操作,CPU的利用率比程序I/O方式有了很大提高。
- 缺点:
- I/O控制器的数据缓冲寄存器通常较小,且数据缓冲寄存器装满数据后将会发出中断,因此一次数据传送过程会中断较多次,消耗了大量CPU时间
- 若系统中配置的外设数目较多,且都以中断方式进行控制,则将消耗大量CPU时间或因为CPU来不及处理而造成数据丢失。
-
DMA控制方式
- 优点:与中断控制方式相比,DMA控制方式的优点是在一批数据传送完成后中断CPU,从而大大减少CPU进行中断处理的次数,并且DMA控制方式下的数据传送是在DMA控制器控制下完成的,在数据传输过程中无需CPU干预。
- 缺点:DMA方式仍有一定的局限,如对外设的管理和某些操作仍由CPU控制,且多个DMA控制器的使用也不经济。
-
通道控制方式
- 通道是一个专管输入/输出工作的处理器。在通道控制方式下,CPU只需发出I/O指令,通道就能完成相应的I/O操作,并在I/O操作结束时向CPU发出中断信号。
- 由此可见,CPU仅在I/O操作开始和结束时花极短的时间处理与I/O操作有关的事宜,其余时间都与通道并行工作
- 此外,一个通道还能控制多台设备。但是通道价格较高,从经济的角度出发不宜过多使用。
版权声明:本文标题:操作系统 重点知识总结 习题集 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727662751a1124386.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论