操作系统原理期末考试试题B卷参考答案2Word文件下载.docx
《操作系统原理期末考试试题B卷参考答案2Word文件下载.docx》由会员分享,可在线阅读,更多相关《操作系统原理期末考试试题B卷参考答案2Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
5.请描述“文件”的定义,并说明文件的三种物理结构。
“文件”是一个抽象的机制,它提供在磁盘上保存和读取信息的方式。
空间分配模式有连续分配,链表式分配以及i节点方式。
二、编程计算题(本题共5小题,共计45分,选做4题,多做不得分)草稿区
✧请在下面的表格中指定答题顺序,在对应的分值下列明题号。
每格只许列出一个题号,否则做无效处理。
✧下表中必须写明所有题目的题号,如果填写不完全,视为不指定答题顺序。
✧如填写内容无效或者不填写表格,则按照默认的题面分值评分
第一题(15分)
第二题(12分)
第三题(10分)
第四题(8分)
6.CPU利用率计算:
有5个批处理作业A到E,他们几乎同时到达一个计算中心,估计他们的运行时间分别为10,5,
3,4,8分钟,其优先级(由外部设定)分别为4、3、5、2、1,其中5为最高优先级。
对于下列每种调度算法,计
算其平均进程周转时间,可忽略进程切换的时间开销。
1)时间片轮转法(假设每个作业均公平共享CPU时间);
2)优先级调度法;
3)先来先服务(作业到达顺序为A、B、C、D、E);
(本题默认分值:
8分,列出计算公式与计算结果即可)
评分标准:
执行顺序正确,1分;
计算过程正确1到2分,结果1分。
1)时间片轮转法:
(4分)
假设时间片为t,并且t为一个充分小的数值,以保证其能够被任何宏观时间整除。
进程C运行完各个进程消耗的总时间=5*5*t*(3/t)
进程D运行完各个进程消耗的总时间=5*5*t*(3/t)+4*4*t*(4/t-3/t)
进程B运行完各个进程消耗的总时间=5*5*t*(3/t)+4*4*t*(4/t-3/t)+3*3*t*(5/t-4/t)
进程E运行完各个进程消耗的总时间=5*5*t*(3/t)+4*4*t*(4/t-3/t)+3*3*t*(5/t-4/t)+2*2*t*(8/t-5/t)
进程A运行完各个进程消耗的总时间
=5*5*t*(3/t)+4*4*t*(4/t-3/t)+3*3*t*(5/t-4/t)+2*2*t*(8/t-5/t)+1*t*(10/t-8/t)
平均周转时间=进程A运行完各个进程消耗的总时间/5=114/5=22.8
2)优先级调度法:
执行顺序为:
CABDE
作业
C
A
B
D
E
等待时间
3
13
18
22
运行时间
10
5
4
8
周转时间
30
平均周转时间=(3+13+18+22+30)/5=17.2
3)先来先服务:
ABCDE
15
平均周转时间=(10+15+18+22+30)/5=19
7.进程同步互斥问题解决:
消息机制是解决IPC问题的一种重要方法,它大大简化了使用信号量机制的代码复杂性和设
计上的风险。
请用消息机制来描述生产者-消费者问题的解决方法,并回答以下问题
1)简要描述消息机制中Send和Receive原语的内部处理流程(根据你的想法来设定)
2)请基于消息机制,用伪代码来描述生产者-消费者问题的解决方案。
15分)
假设所有的消息都有同样的大小,建立一个类似于一块共享内存缓冲区的N个槽。
消费者首先将N条空消息发送给生产者,
当生产者向消费者传递一个数据项时,它取走一条空消息并送回一个填充了内容的消息;
这样系统中总的消息数保持不变,
所以消息都可以存放在事先确定数量的内存中。
Send(dst,content)
{
关中断//保证Send函数为原子操作;
将content放入dst进程的消息缓冲区中;
开中断//恢复被关闭的中断情况;
Scheduler()//调用进程调度函数,恢复用户进程运行;
}
Receive(src,content)
If(没有从src进程发送来的消息)
等待src消息,睡眠;
#defineN100//缓冲区中的槽数目
Producer流程:
While(TRUE)
{
Item=produce_item()//产生放入缓冲区中的产品
Receive(consumer,&
m)//等待消费者发送空缓冲区
Bulid_message(&
m,item)//建立一个待发送的消息
Send(consumer,&
m)//发送数据项给消费者
}
Consumer流程:
For(I=0;
I<
N;
I++)
send(producer,&
m)//发送N个空缓冲区
While(TRUE)
{
Receive(producer,&
m)//接收包含数据项的消息
Item=extract_item(&
m)//将数据项从消息中提取出来
Send(producer,&
m)//将空的缓冲区发送回生产者
Consume_item(item)//处理(消费)数据
}
8.进程同步互斥问题解决:
信号量是解决IPC问题的重要方法,请尝试使用信号量机制解决经典的哲学家就餐问题。
1)简要描述你需要定义几个进程,需要定义几个信号量,其各自的内涵是什么?
2)以伪代码形式描述哲学家就餐问题的信号量机制解法。
(本题默认分值:
需要为每个哲学家定义一个进程,设定哲学家数目为N,则需要N+1个信号量。
#defineN//哲学家的数目
#defineLEFT(i+N-1)%N//i的左邻居编号
#defineRIGHT(i+1)%N//i的右邻居编号
#defineTHINKING0//哲学家在思考状态
#defineHUNGRY1//哲学家试图拿起叉子
#defineEATING2//哲学家进餐状态
Typedefintsemaphore//定义信号量
Intstate[N]//数组用来跟踪记录每位哲学家的状态
Semaphoremutex=1//临界区互斥
Semaphores[N]//每个哲学家一个信号量
Philosopher(inti)
Think()//哲学家在思考
Take_forks(i)//哲学家i要求得到两把叉子或者被阻塞
Eat()//进餐
Put_forks(i)//哲学家i将两把叉子放回桌子
Take_forks(inti)
Down(&
mutex)//进入临界区
State[i]=HUNGRY//记录哲学家i处于饥饿状态
Test(i)//尝试获得两把叉子
Up(&
mutex)//离开临界区
s[i])//如果得不到需要的叉子则阻塞
Put_forks()
State[i]=THINKING//哲学家已经就餐完毕
Test(LEFT)//检查左边的邻居可否进餐
Test(RIGHT)//检查邮编的邻居可否进餐
Test()
If(state[i]==HUNGRY&
&
state[LEFT]!
=EATING&
state[RIGHT]!
=EATING)
State[i]=EATING//开始进餐
Up(&
s[i])//解除阻塞在等待叉子上的哲学家i
9.死锁问题解决:
死锁是对分时操作系统最为知名的一种问题,有很多种方法用来解决死锁问题,其中银行家算法是一
种方便有效的死锁避免方法,尝试用银行家算法来回答以下问题:
一个系统中有4个进程和5种可分配资源,当前分
配资源和最大需求如下表所示:
已分配资源
最大需求量
可用资源量
进程A
10211
11212
00X11
进程B
20110
22210
进程C
11010
21310
进程D
11110
11221
在上表中,第三种资源的可用资源量未知,用X表示,请问,为保持当前状态为安全状态,X的最小值是多少?
10分,请说明分析计算的思路,列出关键计算过程)
1)安全状态:
即在当前的进程需求、资源总量和资源分配情况下,
存在至少一个可使所有进程运行结束的序列的状态。
(2分)
2)检查当前的进程和资源量,发现:
a)当前的4个进程中,只有D存在运行结束的可能性;
b)进程A、B和C不可能立即运行完毕,必须等待;
c)因此,第一个能够运行的进程为D,且:
X>
=1;
3)D运行结束后,可用资源量为(1,1,1+X,2,1)且X>
=1。
4)再次检查A、B和C进程,发现:
a)只有A可以运行;
b)进程B和C需要等待第一类或第二类资源;
c)此时,在X>
=1的条件下,A已经可以运行了。
5)A运行完成后,可用资源量为(2,1,3+X,3,2)且X>
6)再次检查B和C进程,发现:
a)只有C可以运行;
b)进程B需要等待第二类资源;
=1的条件下,C已经可以运行了。
7)C运行完成后,可用资源量为(3,2,3+X,4,2),此时,B可以运行了,且不对X提出新的要求。
8)因此,X的最小值为1。
初步分析:
2分
执行顺序:
每个进程运行时对X的要求的分析:
4分,每个进程1分
最终结果:
各部分的逻辑性和分析如果正确,可酌情给分,满分10分。
10.虚拟存储管理问题:
页面失效次数和页面置换算法是评估分页存储管理系统的重要因素,假设一个进程有4个页帧和
8个页面,页面编号为0~7,该进程的页面访问序列为0172327103,请回答以下问题:
1)若使用LRU页面置换算法,请问会发生多少次页面失效?
列出每次页面置换的结果;
2)若使用工作集页面置换算法,请问比较合理的工作集大小是多少?
列出对应的页面失效次数和置换结果;
12分)
LRU方式:
共7次。
(5分,页面失效位置2分,物理页状态2分,结果1分)
1
7
2
物理页1
物理页2
NULL
物理页3
物理页4
页面失效
是
否
工作集方式:
由于物理页帧有4页,因此,选择最近使用的4个页面组成工作集。
使用局部性原理,进行预读取。
共6次。
三、系统分析题(本题共3小题,共计25分,选做2题,多做题目不得分)
✧
第二题(10分)
11.在人机交互的过程中,通过一系列中断和进程间通信,大量的后台进程被调度执行,最终完成用户期望的操作。
假设
你在登陆南开大学校园BBS网站,从登陆界面中输入用户名和密码,到屏幕显示你登陆成功,这个过程中涉及到大量
操作系统的后台操作,请简要分析并阐述这个过程中可能涉及到的操作系统后台操作。
15分,请列出你所能想到的涉及中断处理、进程调度、内存管理、I/O管理的关键步骤)
答案
1.HCI:
键盘中断响应;
中断处理
2.浏览器程序调用内核功能进行回显输出,载入显卡驱动程序,设置显示内容;
I/O管理
3.HCI:
鼠标中断响应;
4.浏览器进程使用系统调用,进行网络连接,与远端服务器进行数据交换I/O管理
5.获得远端服务器的信息,存入内存,准备显示;
内存管理
6.载入显卡驱动程序,设置显示内容;
将显示内存从字符串转换为点阵,开始输出;
I/O管理
每个2分,其中内容1分,所涉及中断、调度、内存和I/O正确得1分,满分10分。
12.I/O设备管理系统设计:
I/O设备管理在计算机系统中占据着非常重要的地位,任何一种新型I/O设备能够被计算机识
别并正常使用,都需要进行一系列I/O软件系统的研发。
假设你是一家I/O设备厂商的高级工程师,你所在的企业研发
出一种新的摄像头,该设备通过USB接口与计算机连接。
你的任务是为这个I/O设备研发完整的软件系统,请回答以
下问题:
1)简要阐述I/O软件系统的层次划分,以及各个层次之间的关系
2)简要设计你在每个I/O软件系统层次的研发内容,说明功能目标。
1)I/O软件系统层次划分:
(共2分,每个0.5分)
a)用户级I/O软件:
产生I/O请求,对I/O进行格式化;
b)与设备无关的操作系统软件:
执行对所有设备公共的I/O功能,并向用户软件提供统一接口;
c)设备驱动程序:
接收来自其上方与设备无关软件发出的抽象读写请求,并监督执行过程;
d)中断处理程序:
直接操控硬件,阻塞上层设备驱动程序直至I/O完成;
2)每个I/O软件系统层次的研发内容:
(8分,每个两分,主要体现系统思想和接口设计即可得分)
a)中断处理程序:
设置中断向量,快速的完成中断所要求的功能,当I/O完成时唤醒驱动程序,清除外部中断处理请求;
b)设备驱动程序:
设置设备寄存器,直接与外部设备以电信号进行交互;
检查外部设备状态;
c)设备无关的操作系统组件:
命名外部设备,保护多进程共享,统一的I/O接口组件,对高速、低速设备间进行缓冲,分配资源;
d)用户级I/O软件:
产生I/O请求,对I/O进行格式化,假脱机;
13.文件系统设计:
目录体系的复杂程度与灵活性是文件系统设计的关键所在,在简单的操作系统中往往只有一级目录,
而在复杂的操作系统中,目录体系被设计成复杂的层次化结构。
假设提供给你一台32位的计算机,请你设计一个简
单的目录体系,该目录体系只有一级目录结构,但是却能允许该目录下有任意多个文件,每个文件可以有任意长度的
文件名。
在这样的限定条件下,你能模拟实现层次化的文件系统吗?
请简要阐述你的设计方案。
10分)
物理层次(3分)
考虑目录下可以有任意多个文件,故需要建立一个可变大小的索引区域:
在各个存储块中存储下一存储块的磁盘块号,通过链表形式建立起索引区域。
在索引区域中存储文件名称以及文件数据块首块号,当索引区域满之后,为索引区域分配新磁盘块并
加入索引区域链表中,这样就可以实现目录下有任意多个文件以及文件拥有任意长度的文件名称的特性。
同样也通过链表形式链接文件数据块,在每个数据块中设置固定区域存储其下一存储块的磁盘块号。
该层次需要实现的接口功能:
(1分)
为索引区域分配新块、释放索引区域指定块、为数据区域分配新块、释放数据区域指定块、将指定数据写入指定块;
逻辑层次(5分)
使用“\”作为各级目录的固定分隔符,并规定用户文件名中不许包含该字符。
将文件划分为两种类型:
目录文件和数据文件。
对于目录文件:
●其文件名为该目录所在绝对路径+“\”+该目录名称;
●其存储内容为:
一个目录文件标识;
该目录下所有目录文件以及数据文件的文件名列表;
对于数据文件:
●其文件名为该文件所在绝对路径+“\”+该文件名称;
●其存储内容为该文件的实际数据;
添加/删除文件、打开/关闭文件、读/写文件;
用户接口层次(2分)
目录文件的添加/删除/查看、数据文件的添加/删除/查看、目录切换