湖南大学OS-2019期末考试解析

news2024/11/27 19:40:37

【特别注意】

答案来源于@wolf以及网络

是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。

【试卷评析】

这张卷子有点老了,部分题目可能有用。如果仔细研究应该会有所收获。

【试卷与答案】 

 

一、选择题(15%)

1、下面哪些行为会导致CPU进入内核模式 C

(1)执行陷阱指令 (2)执行IO操作 (3)出现异常 (4)执行计算操作

A. (1)

B. (1)(2)

C. (1)(2)(3)

D. (1)(2)(3)(4)

2.系统发生一次中断最多有一个进程的状态发生切换B

A.对

B.错

3.依据Amdahl’s Law:C

A.随着并行节点数的增多,性能收益呈线性增长

B.随着并行节点数的增多,性能可以不断增长

C.即使并行节点数不断增多,性能也有上限

D.性能加速比由系统中的并行节点数量决定

4.Peterson算法C

A.可以用于乱序执行的处理器

B.是软硬结合的临界区问题解法

C.不能用于三个及以上的进程间的同步

D.flag[i]=true和turn=j两条语句的顺序可以交换

5.下面关于虚拟内存说法正确的是:B

A.启用虚拟内存管理后不需要使用内存

B.虚拟内存利用磁盘作为后备存储

C.启用虚拟内存后不能使用分段内存管理

D.无论何种结构的计算机,启用虚拟内存后只要给进程分配1页物理帧即可让进程正常运行。

二、简答题 (30%)

1. (6%) 什么是多道程序的度(degree of multiprogramming),它的上限由哪些因素确定?

多道即计算机内存中同时存放几道相互独立的程序。多道程序的度就是操作系统将多少个进程放入了内存。上限的限制因素有CPU的核数、所采用的的调度算法、内存的大小等。

2.(6%)请说明为什么对调度程序而言,区分CPU约束程序和I/O约束程序很重要?

CPU约束型进程可以利用整个时间片,且不会做任何阻碍I/O操作的工作;另一方面,I/O约束型进程有在运行I/O操作前只运行很少数量的计算机操作的性质。这种进程一般不会使用很多的CPU。所以,通过给I/O约束型进程优先权和允许在CPU约束型进程之前运行,可以很好地利用计算机资源。

3. (6%)试描述最优页面置换算法,并解释其为什么是最优的。

最优置换算法会置换最长时间不会使用的页。当发生缺页时,我们需要置换一个页。因为置换的是最长时间不会使用的页,使用最优置换算法确保对于给定数量的帧会产生最低可能的页错误率。

4.(6%)某请求分页系统,每进程拥有逻辑空间128页,每页4KB。主机拥有物理空间4MB。

(1)写出逻辑地址的组成格式。

(2)若不考虑访问权限位,进程的页表有多少项?每页表项至少要包含多少位?

(1)4KB=2^12B,所以页偏移d为12位。因为有128页,128=2^7,所以7位表示页号。

(2)页表项是指:在分页系统中,为每个进程配置了一张页表,进程逻辑地址空间中的每一页,在页表中都对应有一个页表项。逻辑空间128页,所以对应最多为128个页表项;逻辑空间每页的大小和物理空间每页大小是相同的,所以物理块数=物理空间大小/页大小=4M/4K=2^10,故每个页表项至少有10位;

5. (6%)试说明安全状态与死锁之间的关系。

安全状态代表着存在一个进程的安全序列,可以保证不会发生死锁。并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可以避免进入死锁状态;死锁状态必定是不安全状态。

总之,死锁一定在不安全状态,但不安全状态不一定是死锁。

三、(10%)

在UFS文件系统中,inode节点中包含15个文件指针,其中12个指针指向直接块,其余3个指针分别指向一级间接块,二级间接块和三级间接块,如果块大小为4KB,文件指针均占4B,试计算该系统支持的最大文件大小是多少(精确到KB)。并说明这样设计在支持不同大小文件时的主要优势。

直接索引的文件指针可以表示12x4KB=48KB的大小
一级间接块,一个指针的大小就是4个字节,那么该4K大小的块,就能够存储1K个指针,然后每个指针又指向块区域中某个4K大小的块,用于存储文件数据。所以 一级间接块指针中的全部空间就是4M的大小。
二级间接块,二级间接块指针块中的1K个指针中的每个指针分别指向一个 一级间接块指针的 4K 地址块,即二级间接块指针可以保存4M * 4M =16G 的大小
三级间接块,三级指针块中的每个指针 指向一个二级间接块指针块,即三级间接块指针 可以保存4M * 4M * 4M=64T大小的文件。
所以该系统支持的最大文件大小为48KB+4M+16G+64T
由此可见,UFS文件系统的优势是可以容纳大文件

四、 (15%)

一个系统中,设页的大小为512字节,int型数据大小为4字节,假定数组A位于某一页的起始位置,且数组A占用的所有页均未分配物理帧,系统给该进程分配的物理帧总数为64帧,采用LRU页置换算法。对于如下的程序:

int A[][] = new int[128][128]
for( int j=0; j<128; j++)
    for(int i=0; i<128; i++)
        A[i][j] = 0

(1)试计算会发生多少页错误,并给出相应的理由。

(2)改写上述程序,使页错误发生的次数最少。

(1)LRU页置换是置换最近最少使用的页。
数组在分配时是按行分配的,即A[1][n]将会被分配在一起。int类型大小为4个字节,一个页大小为512个字节,一个页可以容纳128个数组元素,刚好为1行。
①开始会将64个物理帧全部装满,此时也会发生页面置换64次;
②从第65页开始,发生页面置换,直到所有的64个帧重新置换一遍,发生了64次页面置换。
③然后回到第一页,这个时候还要发生页面置换,64次置换。
④然后回到②循环,直到128次结束。
由此可知,发生了128*128次页面置换,即页错误=2^14
(2)因为是频繁的行变换引起的页错误过高,所以只需要改变i和j的顺序就可以了

int A[][] = new int[128][128]
for( int i=0; j<128; j++)
    for(int j=0; i<128; i++)
        A[i][j] = 0

五、

 (15%)一座小桥(最多只能承重两个人)横跨南北两岸,任意时刻同一方向只允许一个人过桥,南侧桥段和北侧桥段较窄只能通过一个人,桥中央一处宽敞,允许两个人通过或歇息。试用P(wait)V(signal)操作实现行人(进程)的过桥同步,请给出同步设计的理由和相应的伪代码。

sem_t num = 2 ;
sem_t south = 1;
sem_t north = 1;

//南侧的人过桥
void toNorth(){
      p(num)//发信号过桥,查看当前桥上是否还可上人,桥上人容量减1(因为桥上人数加1了)
      p(south)//锁南桥
        过南侧桥
        到中间
      v(south)//解锁南桥,后面的人可以接着过
      p(north)//锁北桥
        过北侧桥
      v(north)//解锁北桥,后面的人可以接着过
      v(num)//人过了桥,桥容量加1
        
}
//北侧的人过桥
void toSouth(){
      p(num)//发信号过桥,查看当前桥上是否还可上人,桥上人容量减1(因为桥上人数加1了)
      p(north)//锁北桥
        过北侧桥
        到中间
      v(north)//解锁北桥,后面的人可以接着过
      p(south)//锁南桥
        过南侧桥
      v(south)//解锁南桥
      v(num)//人过了桥,桥容量加1
}

【特别注意】

实现互斥的操作要在实现同步的操作之后

如果把num的操作放在内层,将会导致死锁。

如果此时桥人数已达上限,中间有两个人,而两岸边的人还可以先把桥锁上,再说要过桥(即使发现锁完之后桥的容量已达上限被阻塞了),就出现中间的人想往两边过,结果过不去,等待岸上的人解锁,两岸的人将桥上锁也上不去桥,因为桥的容量达到上限

答案参考:https://blog.csdn.net/qq_40396568/article/details/118274798

六、

(15%) In demand paging(请求分页),the page table of a process is as following(某进程的页表如下).

Page number(页号)

Frame(物理页框)

Valid/Invalid bit(有效位)

0

101H

1

1

-

0

2

254H

1

假定页面大小为4K,为该进程分配的物理帧数固定为2,采用最近最少使用页面置换算法(LRU)和局部淘汰策略;一次内存访问时间是100ns,一次快表(TLB)的访问时间是10ns,处理一次缺页(page fault)处理的时间为8ms(包含更新TLB和页表的时间);TLB初始化为空,地址访问时,先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);有效位为0,表示页面不在内存中,产生缺页处理。设有虚拟地址访问序列2082H、1324H、204H,请计算:

  1. 依次访问该序列地址对应的各个物理内存所需要的时间;

  2. 基于上述访问序列,虚拟地址465H对应的物理地址;

  3. 若希望请求分页时内存的有效访问时间(EAT)为120ns, 缺页的概率应该控制在多少之内。

(1)

访问2082H,PTE命中,因此是TLB+访内+TLB+访内,220ns

访问1324H,PTE不命中,因此是TLB+访内+缺页处理+TLB+访内,8000220ns

(注意此时0的页被换给1了,下次0也会缺页)

访问0204H,PTE不命中,因此是TLB+访内+缺页处理+TLB+访内,8000220ns

(注意此时2的页被换给0了,下次2也会缺页)

(2)254465H

(3)EAT=(1-p)*100+p*8*10^6<=120

计算得p=0.0000025

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6、JS-AJAX

6.3、AJAX 6.3.1、AJAX概述 传统的web交互是用户触发一个http请求服务器&#xff0c;然后服务器收到之后&#xff0c;在做出响应到用户&#xff0c;并且返回一个新的页面&#xff0c;每当服务器处理客户端提交的请求时&#xff0c;客户都只能空闲等待&#xff0c;并且哪怕只是…

制作一个电商数据可视化大屏无从下手?看这篇!

01 啥叫可视化大屏&#xff1f; 从字面意思就能看出来&#xff0c;可视化大屏就是有个大屏幕。可视化体现在里面的数据都成了图形和图标&#xff0c; 但是静止的图像也不能完全表现出多报表的结果&#xff0c;可视化大屏是将数据通过图形化、可视化的方式展现在大屏幕上的一种…

【深度学习】BERT变种—百度ERNIE 2.0

ERNIE 2.0 提出了一种持续学习的预训练框架&#xff1a;预训练使用了7种任务&#xff0c;而不是一两种简单的任务。不断引入新的预训练任务&#xff0c;让模型可以持续性地学习不同的预训练任务&#xff0c;并且不会遗忘先前学习的知识&#xff0c;以此让模型能够获得更为全面的…

让小白也能看懂,ChatGPT入门级科普“十问十答”

由于现在GPT火热&#xff0c;360老板已经开始总动员. 白领的日常工作肯定是要发生颠覆性变化的。下面我们就通过自问自答的方式带领小白用户了解一下ChatGPT. 1、ChatGPT到底是什么&#xff1f; ChatGPT 是一个由美国人工智能公司 OpenAI 开发的自然语言处理&#xff08;NLP&…

vue Electron ArcGis 桌面应用 Sqllite3 node-grp:老旧项目的起死回生

最近接收了一个三四年前做的项目。主要技术栈就是vue2electronsqllite3node-gyp。看到这个技术栈&#xff0c;基本可以知道感知这个项目的关键词&#xff1a;vue、Gis地图、本地数据库、桌面客户端。顿时深感亚历山大。 不多说&#xff0c;开干。 第一步&#xff0c;查看项目…

Qemu搭建ARM Vexpress开发环境

Qemu搭建ARM Vexpress开发环境 文章目录 Qemu搭建ARM Vexpress开发环境Qemu简介QEMU安装前的准备工作QEMU 安装的两种方式通过网络在线安装源码编译安装源码获取QEMU依赖库安装编译安装 命令选项qemu的标准选项qemu显示选项网络属性相关选项kvm的网络模型 Ubuntu 双网卡&#x…

阿里高级工程师纯手打造的Spring Cloud Alibaba微服务全彩手册,限时分享

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案&#xff0c;是阿里巴巴开源中间件与 Spring Cloud 体系的融合。 Springcloud 和 Srpingcloud Alibaba 区别&#xff1f; SpringCloud&#xff1a; 部分组件停止维护和更新&#xff0c;给开发带来不便;SpringC…

msvcr120.dll丢失怎样修复,快速修复msvcr120.dll的方法分享

msvcr120.dll是Microsoft Visual C Redistributable for Visual Studio 2013的一个组件&#xff0c;是一个动态链接库文件。它包含了许多函数和程序&#xff0c;可以被其他程序调用&#xff0c;这些程序使用了Visual C 2013运行时库。在Windows操作系统中&#xff0c;许多软件和…

vxe-table 列表过滤踩坑

vxet-table 官网给的案例&#xff1a;https://vxetable.cn/#/table/base/filter 通过设置 filters 属性和 filter-method 方法可以开启列筛选功能&#xff0c;通过 filter-multiplefalse 设置为单选 如果是服务端筛选&#xff0c;只需加上 filter-config{remote: true} 和 fi…

vue页面缓存失效问题解决

文章目录 一、问题背景二、问题排查三、问题解决 一、问题背景 前端技术栈用的是vue&#xff0c;然后用keep-alive组件进行缓存页面【切换页面不进行刷新页面&#xff0c;保留之前的查询条件及状态等等】 测试提bug&#xff1a;部分页面突然缓存失效了&#xff0c;每次切换都…

易基因:全基因组DNA甲基化和小RNA分析揭示甘蓝型油菜种子的基因组不对称性 | 植物发育

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 多倍体是被子植物基因组进化中的一种持续现象&#xff0c;有助于现存开花植物的多样性。甘蓝型油菜&#xff08;Brassica napus&#xff09;是世界上最重要的被子植物油料作物品种之一&a…

2023年系统分析师上午题

全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试 2023年上半年 系统分析师 上午试卷 &#xff08;考试时间 9 : 00&#xff5e;11 : 30 共 150 分钟&#xff09; 1. 在答题卡的指定位置上正确写入你的姓名和准考证号&#xff0c;并用正规 2B 铅笔在你写入…

重命名文件名也可以很优雅,看看这些技巧

文件重命名对于许多工作场景来说是非常重要的。比如&#xff0c;当你需要整理大量文件时&#xff0c;一个好的文件命名系统可以帮助你更轻松地管理和查找文件。但是&#xff0c;当需要重命名大量文件时&#xff0c;逐个重命名显然是非常耗时和繁琐的。这时&#xff0c;批量重命…

mysql-8.0.32 数据库的安装 (Linux)

Linux 中 mysql-8.0.32 数据库的安装 缘步骤常见问题解决方案问题一. mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory解决方案&#xff1a;方案一&#xff08;推荐&#xff09;&#xff1a;方案二&a…

【6 微信小程序学习 - 小程序的组件化开发,通信】

1 小程序组件化开发 2 创建一个组件 1 创建 1,在根目录创建components文件夹,自定义组件都放在此处 2,右键新建component,输入名称后悔创建四个文件 3.其中.json中的"component": true,表示这是一个组件 4,编写代码,和其他代码逻辑相同 2 使用 1,要使用组件的父组…

1:操作系统导论

1.1操作系统的定义 •Anoperatingsystemactsanintermediarybetweenuserofacomputerandthecomputer hardware. ◦ 操作系统充当计算机⽤⼾和计算机硬件之间的中介 •Thepurposeofanoperatingsystemistoprovideanenvironmentinwhichausercanexecute programsinaconvenientandeff…

小红书平台,“松弛感”生活十大趋势报告出炉

放眼时尚、教育、情感、职场等各大领域&#xff0c;继氛围感、仪式感、精致感后&#xff0c;今年都在谈论一个词——松弛感。包括现下轻户外、轻运动、轻解压等风口&#xff0c;也都呼应着年轻人对松弛感的追求。 千瓜数据显示&#xff0c;2023年1月-5月&#xff0c;“松弛感”…

Vue全局事件总线简明笔记

1、作用&#xff1a; 全局事件总线是一种组件间通信的方式&#xff0c;并不是插件&#xff0c;适用于任意组件间通信、实现组件间的通信。 让所有的组件都能访问得到全局事件总线&#xff0c;那么创建的思路就是&#xff0c;全局事件总线一定要让VC或者VM访问得到。 结合组件的…

leetcode24. 两两交换链表中的节点(java)

两两交换链表中的节点 leetcode24. 两两交换链表中的节点題目描述 迭代法.解题思路代码演示 递归法解题思路代码演示 二叉树专题 leetcode24. 两两交换链表中的节点 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/swap-…

全志V3S嵌入式驱动开发(看门狗驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大家如果做过工业级别的嵌入式设备&#xff0c;那么对看门狗应该不陌生。很多工业级的设备&#xff0c;其应用环境很多时候是非常糟糕的&#xff0…