HNU2022年操作系统期末

本文探讨了彩票调度和步长调度在操作系统中的优缺点,以及虚拟内存的三个主要目标:透明、高效和保护。阐述了临界区、竞态条件、不确定性及互斥执行等并发编程概念。同时,介绍了fork()和exec()在进程创建和执行中的作用,以及文件系统崩溃一致性问题。此外,涉及文件系统的优化,包括节省元数据开销的方法和文件系统对大文件处理的限制。最后,讨论了RAID模式选择和页表在10位计算机系统中的应用,以及在页式虚拟存储管理中的FIFO和LRU页面替换算法。文章还提出了基于POSIX信号量的疫苗接种点并发控制模型。
摘要由CSDN通过智能技术生成

自己做的,可能有误,欢迎指正。
一、(20分,每小题5分)简答题。

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

优势:采用随机思想,代码实现简单。

彩票调度的缺点:在短时间内工作非常不公平,只有当工作运行非常多时间片时才能达到期望的效果。

步长调度的缺点:需要考虑全局状态,对于调度过程中新加入的进程还没有一个很好的解决方式。

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

(1)透明。操作系统不能让程序知道内存被虚拟化的事实。

(2)高效。虚拟内存系统不能占用太多的时间和空间。

(3)保护。操作系统为进程提供隔离,保证一个进程不会受到其它进程的影响。

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

临界区:多个线程访问共享资源的代码片段。

竞态条件:多个线程大致同时进入临界区,都想要更新共享资源。

不确定性:由于并行执行,程序的输出根据线程具体的运行顺序不同而不同。

互斥执行:一个线程在临界区内执行时,其它线程将被阻止进入临界区。

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

由于磁盘一次只能为一个请求提供服务,所以在更新磁盘结构的过程中,如果发生崩溃或掉电等异常情况,磁盘可能只更新了一部分,在文件系统数据结构中可能存在不一致性。例如给原有文件增添一个数据块,这需要三个步骤:修改数据位图,修改inode,写入数据块A。如果只更新了inode就崩溃了,那么数据位图告诉我们数据块A还没有分配,但是inode说数据块A已经分配了,这就形成了文件系统不一致。

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

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

fork()是创建一个一模一样的子进程;exec()可以理解为用程序A替换掉程序B;fork()和exec()一起使用可以实现创建新进程并执行指定程序。

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

打印2^5=32个“hello world”

img

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

首先调用fork()函数创建一个和父进程一模一样的子进程。接下来,在子进程中调用exec()函数wc程序(p3.c作为参数)并且开始执行,在执行期间,wc对p3.c进行单词计数,但是不将结果输出到控制台上,而是重定向到newfile.txt中。当wc程序运行完毕之后,子进程退出,返回值传递到父进程中。此时,父进程通过wait()函数等待子进程结束,并分析子进程的返回值。

img

图1

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

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

img

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

在这里插入图片描述

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

可能的原因:文件系统只支持到双重间接指针,也就是说最大文件不能超过4GB,要想完整拷贝1TB的文件,要增加三重间接指针,三重间接指针可以支持102410241024*4KB=4TB的文件。

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

对于小明的需求,可以采用RAID 5模式。RAID 5具有更好的可靠性和容错性,同时又能够在性能表现方面得到更好的平衡。RAID 5使用分布式奇偶校验技术,将数据和奇偶校验分别存储到不同的磁盘上,使得在任意一个磁盘失效的情况下,数据可以自动进行恢复,而RAID 0没有冗余,如果有一个硬盘失效就无法恢复数据;而RAID 1兼顾冗余和性能,但是需要至少两个磁盘,其容量利用率比较低;RAID 4通过独立的奇偶校验盘来保护数据,但是写操作需要访问奇偶校验盘限制了其性能。因此,综合考虑小明的数据恢复、容量利用率和性能需求,采用RAID 5是比较合适。

表1

大多数文件都很小90%的文件小于20KB
文件系统中包含了许多文件文件系统中文件的数量刚好是100000
少数大文件占用了大部分空间最大的文件是3GB

四、(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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

六、(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分)

全局变量定义:

img

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

img

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

imgimg

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值