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

🌈 个人主页:十二月的猫-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及课上讲解、山东大学操作系统往年题、部分考研题。不要私下外传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/758736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

读AI新生:破解人机共存密码笔记16对人工智能的治理

1. 愚蠢的、情绪化的人类 1.1. 与完美理性所设定的不可企及的标准相比&#xff0c;我们都是极其愚蠢的&#xff0c;我们受制于各种情绪的起伏&#xff0c;这些情绪在很大程度上支配着我们的行为 1.2. 为了充分了解人类的认知&#xff0c;我们&#xff08;或者更确切地说&…

Java进阶-try-with-resources

Java进阶-try-with-resources try-with-resources 是什么传统使用try-catch-finally关闭资源使用try-with-resources什么时候用 try-with-resources 是什么 try-with-resources 是 Java 7 中引入的一个新特性&#xff0c;用于简化资源管理&#xff0c;一般是用于处理实现了 Au…

二叉树从根节点出发的所有路径

二叉树从根节点出发的所有路径 看上图中 二叉树结构 从根节点出发的所有路径 如下 6->4->2->1 6->4->2->3 6->4->5 6->8->7 6->8->9 逻辑思路&#xff1a; 按照先序遍历 加 回溯法 实现 代码如下 // 调用此方法&#xff0c;将根节点传递…

[2024-6-30]如何获取OpenAI API Key/OpenAI密钥

一、前言 由于官网页面更新&#xff0c;获取路径与之前有所不同。 二、获取路径 1.点击Products&#xff0c;再点击API login 2.点击API 3. 如果需要登录&#xff0c;则登录 4.点击API keys&#xff0c;再点击Create new secret key

python-求出 e 的值

[题目描述] 利用公式 e11/1!1/2!1/3!⋯1/&#x1d45b;!&#xff0c;求 e 的值&#xff0c;要求保留小数点后 10 位。输入&#xff1a; 输入只有一行&#xff0c;该行包含一个整数 n&#xff0c;表示计算 e 时累加到1/n!。输出&#xff1a; 输出只有一行&#xff0c;该行包含计…

决策树划分属性依据

划分依据 基尼系数基尼系数的应用信息熵信息增益信息增益的使用信息增益准则的局限性 最近在学习项目的时候经常用到随机森林&#xff0c;所以对决策树进行探索学习。 基尼系数 基尼系数用来判断不确定性或不纯度&#xff0c;数值范围在0~0.5之间&#xff0c;数值越低&#x…

【Django】网上蛋糕项目商城-关键字搜索,商品详情功能

概念 上文中已经实现热销和新品的商品列表功能&#xff0c;本文篇幅中实现关键字搜索商品&#xff0c;将商品加入购物车&#xff0c;以及查看商品的详情信息等功能 关键字搜索实现步骤 在head.html头部页面中&#xff0c;鼠标移动至搜索图标会显示隐藏的搜索框进行输入关键信…

内容营销专家刘鑫炜:碎片化时代,小微企业内容营销如何乘风破浪

当下&#xff0c;互联网高度发达&#xff0c;技术的飞速进步和社交媒体的普及&#xff0c;使得信息的产生和传播速度达到了前所未有的高度。互联网上的内容如同潮水般汹涌而来&#xff0c;不断刷新着我们的认知边界&#xff0c;但与此同时&#xff0c;这也导致了人们的注意力被…

阐述Python:except的用法和作用?

欢迎莅临我的博客 &#x1f49d;&#x1f49d;&#x1f49d;&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【python爬虫】豆瓣爬虫学习

文章目录 网页地址爬虫目标技术栈爬虫代码注意事项 Python爬虫学习&#xff1a;我们可以选择一个相对简单的网站进行数据抓取。这里以抓取“豆瓣电影Top250”的信息为例&#xff0c;这个网站提供了丰富的电影数据&#xff0c;包括电影名称、评分、导演、演员等信息。 网页地址…

【面试系列】数据工程师高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

Springboot与xxl-job

一、下载xxl-job项目 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 从GitHub上面将项目clone下来&#xff0c;如果网络问题导致速度慢也可以从Gitee上面拉…

【three.js案例二】时空隧道

import * as THREE from ./build/three.module.js // 引入轨道控制器扩展库OrbitControls.js import { OrbitControls } from three/addons/controls/OrbitControls.js; // 引入dat.gui.js的一个类GUI import { GUI } from three/addons/libs/lil-gui.module.min.js;// 场景 co…

Go语言环境安装 第一个Go程序

Go下载地址 哪个能用用哪个。 https://go.dev/ https://golang.google.cn/&#xff08;Golang官网的官方镜像&#xff09; Windows 使用.msi安装包安装 下载msi文件 安装 双击运行go1.22.4.windows-amd64.msi Next 勾选I accept the terms in the License Agreement&…

ChatGPT的原理简介

目录 前言 1. 什么是ChatGPT&#xff1f; 2. GPT模型的基本原理 自注意力机制 预训练和微调 3. ChatGPT的工作流程 4. ChatGPT的优势和挑战 5. 实例对话 6. 未来展望 结语 前言 在这个智能科技飞速发展的时代&#xff0c;聊天机器人逐渐成为我们生活中的“新朋友”。…

Flask无法Debug

问题描述 Flask Debug的时候&#xff0c;可能会无法进入断点。我使用的是pycharm CE版本。 解决方案 确保pycharm安装路径不带空格。&#xff08;带空格路径导致debug程序启动报错&#xff09;Gevent compatible&#xff0c;这个东西老的pycharm版本必须勾选它&#xff0c;新…

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

在vscode中控制台运行python文件出现&#xff1a;无法将"pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 使用vscode开发python&#xff0c;需要安装python开发扩展&#xff1a; 本文已经安装&#xff0c;我们需要找的是python安装所在目录&#xff0c;本文…

python–基础篇–正则表达式–是什么

文章目录 定义一&#xff1a;正则表达式就是记录文本规则的代码定义一&#xff1a;正则表达式是一个特殊的字符序列&#xff0c;用于判断一个字符串是否与我们所设定的字符序列是否匹配&#xff0c;也就是说检查一个字符串是否与某种模式匹配。初识 Python 正则表达式 定义一&a…

Spark2.0

目录 10.3 Spark运行架构 10.3.1 基本概念 10.3.2 架构设计 ​编辑 10.3.3 Spark运行基本流程 Spark运行架构特点 10.3 Spark运行架构 10.3.1 基本概念 RDD &#xff1a;是 Resillient Distributed Dataset &#xff08;弹性分布式数据集&#xff09;的简称&#xff0c;是分…

界面组件DevExpress WinForms v24.1 - 支持DateOnly TimeOnly类型

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…