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

news2024/11/27 15:40:49

【特别注意】

答案来源于@不确定的光子和@wolf

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

【试卷评析】

这张卷子比较正,个人感觉能够代表接下来几年的考试方向。如果仔细研究应该会有所收获。

【试卷与答案】

 

一、(20分,每小题5分)简答题。

1.彩票调度和步长调度采用随机思想有其优势,但没有广泛使用,分析其原因。

答:(书P70)两种方式都不能很好地适合I/O;其中最难的票数分配问题并没有确定的解决方式。

2.简要分析虚拟内存系统的三个主要目标。

答:(书P88)透明,效率,保护。(具体见书)

3.简要说明临界区、竞态条件、不确定性、互斥执行这四个概念。

答:(书P206)

临界区:访问共享资源的一段代码

竞态条件:多个执行线程大致同时进入临界区

不确定性:程序由一个或多个竟态条件组成,程序的输出因运行而异,具体取决于哪些线程在何时运行。这导致结果也是不确定的。

互斥执行:保证只有一个线程进入临界区,从而避免出现竟态,产生确定的程序输出。

4.什么是文件系统的崩溃一致性问题?可举例说明。

答:(书P383)

二、(10分)

fork()和exec()是操作系统中两个重要进程操作API:

1.简述fork()和exec()各自功能和作用;(3分)

答:(第5章)fork()用于创建新的进程;exce()可以让子进程执行与父进程不同的程序。

2.假设fork()总是成功,如图1 (a)所示程序最终打印多少个“hello world”?(3分)

答:32

3.在终端输入如图1(b)所示执行指令,其中,wc(word count)为单词计数可执行程序,p3.c为被计数的程序文本,分析执行该指令过程中对fork()和exec() 的调用逻辑关系。(4分)

答:(书P32)shell先调用fork()创建子进程,然后关闭标准输出(standard output),打开文件newfile.txt,然后再调用exec(),这将用p3.c覆盖当前进程,并将输出结果重定向到文件中。

 

图1

三、(20分)

小明学习完这个学期的操作系统,对文件系统有了更深入的认识,想尝试对自己电脑上的文件系统进行优化。小明用工具分析了整个文件系统,得到一些统计数据,如表1所示。小明还通过分析知道他使用的文件系统使用了12个直接指针用于寻址磁盘上的数据块,每个数据块的大小为4KB,指针的大小为4个字节。回答以下问题:

(1)小明想最大程度的节省存储小文件的元数据开销,请问他该如何做?最多能节省多少空间(用MB表示)?(4分)

(2)根据表中哪一条数据可以推断文件系统使用了二级间接指针?为什么?二级间接指针带来的额外空间开销是多少(假设只有1个二级间接指针。这里的空间开销是指除存储文件实际数据之外的元数据空间,或者说存放指针的空间)?(4分)

(3)小明想把电影《阿凡达2》拷贝到他的电脑上,因为电影是8K高清晰度,所以电影文件很大,大小是1TB,虽然小明电脑上的剩余磁盘空间大于1TB,但是他试了几次都没有成功。随后,他把1TB的文件分割成多个文件,每个文件大小为4GB,这样他就能把1TB的电影拷贝到电脑上。小明还是不甘心,想把1TB的电影完整拷贝到电脑上,根据所学知识,分析可能的原因,并给出相应的解决方法。(6分)

(4)小明之前因为硬盘故障丢失了所有的数据,因此他想购买一个家用RAID来保存数据。他想最大可能的利用存储空间,又要保证单个硬盘失效的情况下数据可以自动恢复,同时,因为平时需要经常读写数据,他应该使用哪种综合性能比较好的RAID模式(仅限于教材上讲到的几种)?简单说明理由。(6分)

表1

大多数文件都很小

90%的文件小于20KB

文件系统中包含了许多文件

文件系统中文件的数量刚好是100000

少数大文件占用了大部分空间

最大的文件是3GB

答:

(1)不用12个直接指针,改为使用5个直接指针。节省空间7*4B*100000*90%(约等于)=2.4MB

(2)第三条,最大文件为3GB;一个页最多存放1024个指针,一级间接指针最多支持4MB的空间,二级间接指针最多支持4GB的空间,故显然需要一个二级间接指针;二级间接指针带来的额外空间开销为该间接指针第一层索引的1个页和第二层索引的1024个页,总共1025个页,每个页4KB,故总共为(4MB+4KB)的额外开销。

(3)可能原因是该电脑的文件系统最多支持二级间接指针,如第(2)问中所计算,二级间接指针最多支持4GB的文件,而小明尝试以4GB作为一个文件成功了。若该系统支持三级间接指针,则最多应支持4TB的文件,显然不符合题意;解决方法:改变文件系统结构,允许使用三级间接指针。

(4)推荐使用RAID5。RAID5的容量为N-1,最大程度地利用了存储空间,同时综合性能较好,尤其是在随机写的模式下表现突出,在随机读的模式下也比RAID4较好。RAID0显然不能保证单个硬盘失效下数据的自动恢复。RAID1没有最大可能地利用存储空间。RAID4显然在随机写模式下逊于RAID5。

四、(15分)

某10位的计算机系统,该系统的页大小为16字节,请分析并回答以下问题:

(1)如果采用线性页表的分页方式,假设每个PTE的表项占用4字节,那么整个页表占用的内存是多少字节?(3分)

(2)如图2所示,采用三级页表的分页方式,当访问虚拟地址0X2B和0XDB时,可能会出现什么情况?(6分)

(3)条件同(2),如果已知虚拟地址0X36B对应的物理地址是0X16B,修改图中的内容使已知的条件满足,并给出分析过程。回答请按下面这种方式给出:比如,将页表PFN 204的第几项PTE A修改为PTE B。(注:图中PFN是用十进制表示)(6分)

图 2

答:

  1. (2^6)*4B=256B
  2. 0x2B的VPN为000010,对应PFN201的第3个位置,该位置有效位为1但无PFN值,触发页错误,该页不在物理空间中,需要从磁盘中换入该虚拟地址对应的物理帧;0xDB的VPN为001101,对应PFN204的第2个位置,该位置有效位为0,触发非法访问,这里需要OS介入并进行处理例程,可能会杀死该进程。
  3. 0x36B的VPN为110110,定位在PFN206的第3行,这里现在有效位是0,要改成1,并且还要修改PFN值为0x16,也就是22。故答案为:将页表PFN206的第3项“-”改为“22”。并且将有效位valid“0”改为“1”。

【特别注意】

页表项(PTE)的valid(有效)位。我的理解是有效位和存在位是不一样的:
有效位表示该页是否合法,
存在位表示该页是否在内存内。
因此,在该题中,
如果有效位为0,则不需要考虑后面的PTE内容,因为该地址非法,此时os介入处理;
如果有效位为1,但存在位为0(题目中体现在PTE内容为-),表示缺页;
如果有效位为1,存在位为1,(题目中体现在PTE有内容)有,就是正常情况。
题目实际上是省略了存在位。这个和CS有很大区别。姑且应付考试即可。

五、(15分)

在一个采用页式虚拟存储管理的系统中,有一用户作业,它依次要访问的字地址序列是:115,  228,120,88,446,102,321,432,260,167,若该作业的第0页已经装入主存,现分配给该作业的主存共300字,页的大小为100字。回答下列问题:

(1)计算依次访问的虚拟页号为多少?分配的物理页框数。(5分)

(2)按FIFO页面替换算法将产生多少次缺页中断,缺页中断率为多少?依次淘汰的页号为多少?(5分)

      (3)按LRU页面替换算法将产生多少次次缺页中断,缺页中断率为多少?依次淘汰的页号为多少?(5分)

答:

  1. 依次访问虚拟页号为1,2,1,0,4,1,3,4,2,1。分配的物理页框数为3。
  2. 5次缺页中断,缺页中断率50%,依次淘汰页号为0,1,2。
  3. 6次缺页中断,缺页中断率60%,依次淘汰页号为2,0,1,3。

六、(20分)

某社区新冠疫苗接种点,有一位疫苗接种医师,一个疫苗接种室,一个等候大厅有N张间隔1米的接种者等候椅子。没有接种者时,接种医师就会在接种室处理其他事务。接种者到达接种点,如果发现接种医师在处理其他事务,他就会呼唤接种医师为其接种疫苗;如果发现接种医师在为别人接种疫苗且有空椅子,他就会坐下来等候;如果所有的椅子都坐满了人,他就会离开。

假设利用POSIX信号量及多线程并发机制来实现上述接种者和接种医师。POSIX信号量类型定义为sem_t,三个关键操作为int sem_init(sem_t *sem, int pshared, unsigned int value),int sem_wait(sem_t *s),int sem_post(sem_t *s)。定义一个变量emptyc代表空椅子数量,定义一个互斥信号量mut对椅子数量的增或者减,定义一个同步信号量MP(接种者发送、医师等待),定义一个同步信号量MD(医师发送、接种者等待)。

代码结构为:

//全局变量定义

……

//接种医师线程

{

……

}



//接种者线程

{

……

}



//main函数

{

……

}

回答下列问题:

(1)给出全局变量的定义及可能的赋初值代码。(4分)

(2)给出main中用POSIX函数初始化信号量的代码。(6分)

(3)给出接种者线程和接种医师线程的关键代码。(10分)

代码如下:

void* doctor(){
    while(1)
    {
        sem_wait(&MD);
        sem_wait(&mut);
        emptyc++;
        sem_post(&mut);
        sem_post(&MD);
    }
}
void* patient(){
    while(1)
    {
        sem_wait(&mut);
        if (emptyc==0)
        {
            sem_post(&mut);
            pthread_exit(NULL);
        }
        else
        {
            emptyc--;
            sem_post(&mut);
            sem_post(&MP);
            sem_post(&MD);
            pthread_exit(NULL);
        }
    }
}

int main()
{
    ……
    sem_init(&mut,0,1);
    sem_init(&MD,0,0);
    sem_init(&MP,0,0);
    ……
}

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

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

相关文章

网络安全认证CISP、CISSP对比及分析

好多网络安全行业或者打算转行该行业的人在纠结学是考取CISP认证还是CISSP认证,作为从事多年网络安全培训认证业务的专家,对这两个认证还是非常了解的,下面是这两个认证的一个对比说明,希望能够帮助到大家更好地选择到适合自己的认…

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

【特别注意】 答案来源于wolf以及网络 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 这张卷子有点老了,部分题目可能有用。如果仔细研究应该会有所收获。 【试卷与答案】 一、选择题(15%&#xff…

基于SSM+Vue的房屋租赁网站-求租合同设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

“混合办公”已来!

不知不觉中,你已经开启“未来办公模式”了。这听起来好像有些疯狂,但事实就是如此! 试想一下,近三年,你是不是很少去办公室,但却没有耽误工作?你有多少次是在出差的途中开视频会议,…

5分钟了解Kubernetes Ingress和Gateway API

了解Kubernetes Ingress和Gateway API之间的差异,以实现有效的流量管理。原文: Kubernetes Ingress Vs Gateway API Ingress vs Gateway API 概述 Kubernetes如今被广泛应用于容器管理、微服务编排解决方案。对于如何控制微服务的入口流量,Kubernetes提供…

未来制鞋厂的智能化改造: RFID技术的应用

近年来,RFID(射频识别)的应用在生产、物流、零售等方面得到了广泛的应用。在制鞋厂中,RFID的应用也越来越受到关注。 RFID技术可以让制鞋厂实现对鞋子的全程跟踪,从原材料的采购到鞋子的成品出货,都可以实…

OpenAI 新发布GPT 最佳实践;WordPress新增 AI写作助手;国产语言模型TigerBot发布

🦉 AI新闻 🚀 WordPress新增Jetpack AI Assistant AI写作助手 摘要:Automattic公司宣布,为其WordPress新增AI写作助手–Jetpack AI Assistant。该工具可根据用户提示撰写博文、详情页、结构化列表和表格,支持多种口吻…

代码质量规范测量

圈复杂度介绍 圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出。在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即合理的预…

脑洞大开:“Excel+中文编程”衍生新型软件,WPS用户:自家孩子

中国人脑洞有多大? 有时候,你不得不承认,中国人的脑洞有时候真是让人意想不到: 你只知道Excel表格,你也知道中文编程,但是你有没有想过,用Excel和中文编程嫁接起来的话,会衍生出一…

sessionStorage、localStorage、cookie你真的会用么

文章目录 前言会话存储:本地存储: 一、sessionStorage介绍使用演示存储数据到sessionStorage从sessionStorage中获取数据删除sessionStorage中的某个键值对清空sessionStorage中的所有数据从Chrome查看sessionStorage的存储情况 二、localStorage介绍使用…

最新 Adobe Photoshop AI (Beta) 下载安装教程

Adobe最近推出了新的Adobe Photoshop AI(Beta),这是一款融合了生成性AI和Adobe Firefly的新功能。 能够根据用户的自然语言提示,创建出极其出色的图像。这些提示可以用来添加内容、删除或替换图像的某部分,甚至扩展图…

Flutter:动画

前言 学习参考:老孟 flutter动画 基本上开发时使用的组件都有其动画,关于动画方面的知识,一般情况很少会用到。因此这里只学习关于动画的基本知识。 AnimationController Flutter中的AnimationController是一个用于控制动画的类。它可以控…

深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环

深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__QObject的主线程的事件循环 1. Qt多线程编程的基础1.1 QObject和线程(QObject and Threads)1.2 QThread的使用和理解(Understanding and Using QThread&#xff0…

ubuntu下安装transition_amr_parser

ubuntu下安装transition_amr_parser transition_amr_parser是IBM公司开源的AMR paraing和AMR text-to-generation工具,在NLP领域中经常会用到,但是这个安装过程中可能会存在很多坑,transition_amr_parser的github主页安装教程不清晰&#xf…

探秘美颜SDK的动态贴纸的技术原理

美颜SDK作为美颜相机的重要组成部分,其动态贴纸技术也是很多用户喜爱的功能之一。本文将探秘美颜SDK的动态贴纸技术,从技术原理、应用场景和未来发展等方面进行分析。 一、技术原理 **1. 人脸识别技术。**在添加动态贴纸时,第一步要做的肯定…

图的导航 - 最短路径算法

一个 恋爱关系图 胡图图love:98于小美 胡图图love:48何壮壮 胡图图love:99小怪 于小美love:10张帅子 何壮壮love:45张帅子 小怪love:100张帅子 胡图图到张帅子的最短路径 确定不是恋爱路径? 算法实现 先看猛料再看是否实现思路 // 定义深度优先搜索状态 struct DepthFirs…

【Android】WMS(六)Surface的创建和操作

Surface的创建流程 在Android系统中每个Activity都有一个独立的画布(在应用侧称为Surface,在SurfaceFlinger侧称为Layer), 无论这个Activity安排了多么复杂的view结构,它们最终都是被画在了所属Activity的这块画布上。 1.Surfac…

618数码好物全推荐,几款科技感满满的数码好物分享

6月18日将迎来一年一度的618狂欢购物节,这可谓是一场精彩绝伦的购物盛宴。每年都有诸多品牌参与其中,我们不仅需要应对复杂的折扣,还需要面对眼花缭乱的产品,这让我们不可避免地陷入了“选择困难症”的困扰中。为了让大家在今年61…

【Android】手持设备规格参数

系列文章 【Android】手持设备规格参数 本文链接:https://blog.csdn.net/youcheng_ge/article/details/130604517 【H5】avalon前端数据双向绑定 本文链接:https://blog.csdn.net/youcheng_ge/article/details/131067187 【H5】安卓自动更新方案&…

天空卫士在中国数据安全软件市场位列前五

IDC-中国数据安全软件市场份额,2022 数字经济迅速崛起 中央网信办5月份发布的《数字中国发展报告(2022年)》显示,2022年,我国数字经济规模达50.2万亿元,总量稳居世界第二,同比名义增长10.3%,占国内生产总…