操作系统精选题(二)(综合模拟题一)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀操作系统

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

前言

简答题

一、进程由计算和IO操作组成,据此,进程可分为哪几类,不同进程占比的不同对长期调度和短期调度有什么影响

二、操作系统为什么要设计I/O SubSystem,Buffer的作用是什么

三、 在基本的分页(paging)中,页表中的每项记录只用保存什么;对于请求分页(demanding paging),需要增加哪些记录,为什么

四、文件使用前为什么要执行open()操作,结束后为什么要执行close()操作;操作系统是怎么实现不同进程对同一文件的访问的

五、磁盘定位时间(positing time)由什么组成,说明SSTF不一定比LOOK算法好

 六、overhead的意思

论述题

一、在进程的内存分配和文件存储中,会产生碎片,碎片分为哪几种,在内存分配和文件存储中会产生什么碎片

二、对于以下几个方面,操作系统有什么保护措施:

三、评估进程调度算法性能的标准为什么是等待时间?对于非抢占式调度,抢占式调度对于减少平均等待时间是否有帮助。以SJF为例举例说明,要求:至少有四个进程,每个进程的arrival time和burst time不同 

四、写出非忙等待的wait()和signal()操作的伪代码实现

五、​编辑

总结


前言

本系列题目均选自山东大学往年考题,供大家复习参考。一定要在复习完基础知识后(最好把书本都看一遍,这样子知识体系才是完善的),再来参考这个练习题。

两个不可取:一、不可不复习知识点,光做题;二、不可只复习知识点,不复习

猫猫祝大家都能取得好成绩呀~~~

简答题

一、进程由计算和IO操作组成,据此,进程可分为哪几类,不同进程占比的不同对长期调度和短期调度有什么影响

问题解答:

进程可以分为计算密集型进程、I/O密集型进程和混合型进程

计算密集型进程:这类进程主要执行计算操作,很少进行输入/输出操作。它们需要大量CPU资源去计算

I/O密集型进程:这类进程有很多的I/O操作,如读写文件、网络通信等,它们可能不需要很多的计算需求,在CPU上占用的时间较少

混合型进程:同时具有计算和I/O操纵的进程,这类进程在执行期间会在CPU计算和I/O请求之间频繁切换

长期调度(作业调度):负责从外存的后备队列中选择进程到内存的就绪队列中。I/O密集型进程多时,系统会优先调度这些进程,因为它们快速释放内存资源,同时能够让I/O设备早点开始运行;计算密集型进程多时,系统会平衡两种类型的进程,以提高CPU和I/O设备的利用率

短期调度(CPU调度):负责从内存的就绪队列中选择进程到CPU中运行。在I/O密集型较多情况下,CPU的占有率会比较低,会频繁进行短期调度;在计算密集型过多时,CPU容易过载,需要用时间片轮转或者优先级策略调度

二、操作系统为什么要设计I/O SubSystem,Buffer的作用是什么

1、为什么要设计I/O子系统

  • 抽象化:I/O子系统统一管理所有的I/O设备,利用抽象化解耦了应用程序和具体I/O设备之间的联系,让应用程序无需关心硬件细节
  • 设备独立性:让同一个系统调用不同I/O设备的时候,这些I/O设备之间是彼此独立不影响的
  • 缓冲和缓冲管理:利用缓存区缓解了CPU和I/O速度不匹配的问题
  • 错误处理:集中管理I/O错误,提高系统稳定性
  • 数据管理:确保数据在设备间的传输是高效的

2、缓冲区的作用是什么

  • 解决速度不匹配问题:缓冲区可以解决CPU和I/O设备之间速度不匹配问题。I/O设备多个处理结果存在缓冲区中,让CPU统一来处理
  • 减少I/O次数:将多个小的I/O请求合并成一个大的I/O请求,统一给CPU处理;或者将大的I/O请求分割成方便传输的不同块
  • 提高系统容错率:buffer相对于一个临时存储器,当I/O数据出现丢失等情况,可以从buffer中恢复数据 

三、 在基本的分页(paging)中,页表中的每项记录只用保存什么;对于请求分页(demanding paging),需要增加哪些记录,为什么

基本分页:对应非虚拟内存情况下,此时允许进程会把进程的所有内容都一起送到内存中,然后再进行访问

请求分页:为了虚拟内存技术的实现。此时一个进程被调度,只有这个进程需要这个页时,页面才会被调度进来

基本分页中只保留帧号。MMU从页表中的到每一页对应的帧号,然后完成从逻辑地址到物理地址的映射,由于页号和页表号都是从0开始一一对应的,所以页表中不需要记录帧号对应的页号。

请求分页中需要增加记录:

  • 保护位:也就是有效/无效位,是实现请求调页必须要求的。因为在请求调页中新的进程被调度,内存和页表中的数据不会被重写,所以有一些页数据是该进程不能访问的,有些页数据的访问权限是改变的。所以需要保护位来实现访问权限/空值等设定和保护
  • 访问位:一旦页表满了之后,仍然出现缺页这个时候就需要调换出一个页来。而选择调换哪个页就要看哪个页被访问的可能性最小,所以需要访问位去记录访问情况(多种调换方法,访问位记录方式也存在不同)
  • 修改位:每次页被调出后,通过修改位来判断是否需要重新写回磁盘。如果该页被修改过就需要写回磁盘,否则不用写回磁盘

四、文件使用前为什么要执行open()操作,结束后为什么要执行close()操作;操作系统是怎么实现不同进程对同一文件的访问的

不同进程访问同一文件=不同进程访问同一文件的数据=不同进程共享数据 

执行open操作:

  • 检查访问权限。一个进程使用文件前执行open操作,操作系统会检查这个进程是否有访问权限访问这个文件,保护文件访问的安全
  • 分配资源。open调用会让操作系统给进程分配必要的资源来实现对文件的操作

执行close操作: 

  • 释放资源。close操作让进程占用的文件管理资源得到释放,防止资源耗尽
  • 确保数据完整性。close操作会让强制文件的数据重新写回磁盘,确保数据不会因为进程突然中断而丢失

操作系统通过使用虚拟内存技术实现共享数据。通过共享数据实现不同进程对同一个文件数据进行访问。具体来说,多个进程允许将同一个文件映射到各自的虚拟内存中,从而实现对数据的共享

五、磁盘定位时间(positing time)由什么组成,说明SSTF不一定比LOOK算法好

  • 磁盘定位时间:寻道时间+旋转延迟+I/O时间

SSTF为什么不一定比LOOK算法好

  • SSTF算法:最短寻道时间优先算法,选择下一个服务时会选择离当前磁头最近的请求去服务,减少磁头移动距离。但是存在以下两个问题:一、可能出现饿死现象。远离磁头当前位置的请求长时间得不到服务,因为磁头附近一直有新请求;二、SSTF算法寻找的是离当前磁头最近的,这是一种局部最优,不一定构成全局最优
  • LOOK算法:是SCAN算法的一种改进,具体思路是在一个方向上处理请求,直到前面没有新的请求为止,然后换方向,继续处理请求。好处:一、避免了饿死现象;二、能够提高公平性(C-LOOK算法公平性更好)

 六、overhead的意思

额外的资源消耗和开销

举例:

  1. 上下文切换。OS从一个进程切换到另一个进程需要保存上一个进程的现场例如数据、状态等,同时要加载下一个进程的各自状态信息。保存、加载这些信息对任务的处理本身没有意义,是额外的一种资源消耗
  2. 索引分配和链式分配。索引分配需要维护一个索引块,让索引块中有指针指向磁盘的各个部分从而实现进程对磁盘的访问,这个索引表就是一个额外资源开销。链式分配中每个数据块都要包含一个指针指向下一个数据块,这个指针就是一个额外的资源消耗和开销

论述题

一、在进程的内存分配和文件存储中,会产生碎片,碎片分为哪几种,在内存分配和文件存储中会产生什么碎片

文件存储是外存,外存中的分配是一块一块为单位进行的;进程是内存,内存中的分配是一个一个单元进行的

在内存分配和文件存储中都会产生内部碎片外部碎片

内存分配的内部碎片:内存管理系统将内存分配给进程,分配的内存大小固定,而进程实际需要的内存大小小于分配的内存,未使用的部分就是内碎片。

内存分配的外部碎片:随着进程的加载和卸载,内存中会留下许多小的空闲块。这些空闲块太小无法满足新的进程需求,构成外部碎片。

文件存储中的内部碎片:如果文件系统以固定数量、大小的块来存储文件,而文件的大小小于块的内存综合大小,空闲块就是内部碎片

文件存储的外部碎片,随着文件的增添和删除,原空间终会留下空闲段,而这些空闲段无法被文件所使用,从而构成外部碎片

二、对于以下几个方面,操作系统有什么保护措施:

区分用户程序和系统程序的执行:

1、将CPU的状态分为内核模式和用户模式,同时将指令分为特权指令和非特权指令

2、内核模式下运行的程序都成为系统程序,它能访问所有的硬件资源和内存,能够执行特权指令

3、用户模式下运行的程序大多是用户程序,它不能直接访问硬件资源需要调用OS提供的系统接口,不能执行特权指令但是可以执行非特权指令

防止进程长时间占用CPU:

采用时间片轮转(RR)进程调度策略:给每个进程分配固定的时间片,当时间片耗尽后,调度器将CPU分配给另一个进程

内存的分段管理中,限制用户只能访问相应的地址以及读写权限:

两个方面:访问相应地址、读写权限

在内存分段管理中,将每个进程的按照用户视图角度分为多个段,同时给进程一个段表。进程按照直接的段表去访问分给它的段内地址,不能访问其他进程的内存。同时分段表定义了每个段的访问权限(读、写等),进程不能违背这些访问权限

防止死锁的产生:

两个方法:死锁预防、死锁避免

一、预防死锁:破坏死锁的必要条件

              破坏互斥:非共享资源必须互斥,共享资源可以不互斥,无法从互斥下手

              破坏占有等待:拥有不等待,要求进程在执行前获得所有资源。或者等待不应有在申请其他资源时释放掉已分配的资源。

              破坏非抢占:如果一个进程占有资源并且无法立刻得到正在申请的资源,那它占有的资源可以被抢占。

              破坏循环等待:对所有资源进行排序,要求进程从小到大申请资

二、死锁避免:放松条件,允许可能发生死锁,但是在死锁发生前就阻止它

有银行家算法、资源分配图算法等死锁避免算法,利用这些算法可以在死锁发生前就阻止死锁的发生,从而做到死锁避免

文件的访问权限:

文件的访问权限、文件的组织管理等操作都归文件系统统一管理。文件系统会给每个文件分配一个FCB,其中记录了该文件的所有者、创建信息、访问权限等

三、评估进程调度算法性能的标准为什么是等待时间?对于非抢占式调度,抢占式调度对于减少平均等待时间是否有帮助。以SJF为例举例说明,要求:至少有四个进程,每个进程的arrival time和burst time不同 

等待时间:从进程到达到进程结束中,进程不在CPU中执行而是在等待其他进程执行的时间的总和

1、因为等待时间关系到系统运行的效率以及用户体验。对于一个进程调度来说,让用户感觉不到进程是在并发执行是最好的,所以平均等待时间越短的进程调度算法是越好的。

2、有帮助

 举例:

       到达时间:0,2,4,5

       区间时间:7,4,1,4

       SJF:等待时间4s

       SRTF:3s

四、写出非忙等待的wait()和signal()操作的伪代码实现

wait(semaphore *S){
    S->value--;
    if(S->value<0){
        add this process to S->list
        block();
    }
}
signal(semaphore *S){
    S->value++;
    if(S->value>=0){
        remove a process P from S->list
        wakeup(P);
    }
}

五、

总结

如果觉得对你有帮助,辛苦友友点个赞哦~

知识来源:操作系统概念(黑宝书)、山东大学高晓程老师PPT及课上讲解、山东大学操作系统往年题、部分考研题。不要私下外传

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十二月的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值