【特别注意】
答案来源于@wolf以及网络
是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。
【试卷评析】
这张卷子有点老了,部分题目可能有用。如果仔细研究应该会有所收获。
【试卷与答案】
一、选择题(15%)
1.下列关于进程状态转换,不正确的是:C
A. 就绪->运行。
B. 运行->终止。
C. 阻塞->运行。
D. 运行->阻塞。
2.发生死锁后,应如何解决。B
A.执行死锁的预防算法
B.执行死锁的检测算法
C.执行银行家算法做死锁避免
D.杀死进程
3.下列不会产生外部碎片的内存分配方法是:C
A.连续内存分配
B.分段内存分配
C.分页内存分配
D.采用最佳适配的连续内存分配
4.系统发生一次中断最多有一个进程的状态发生切换。B
A. 对
B. 错
5.内核线程与进程的主要区别在于:B
A.内核不能调度线程
B.线程没有独立的地址空间
C.内核不保存线程的上下文
D.内核没有为线程创建内核数据结构
二、简答题 (30%)
1. (6%)据报道华为的鸿蒙操作系统采用了微内核设计。请问 操作系统采用微内核设计的主要优点和缺点分别是什么?
优点:便于扩充操作系统,所有的新服务可以在用户空间增加,因为不需要修改内核。当内核确实需要改变时,所做的改变也会很小,因为微内核本身很小。这样的操作系统很容易移植到不同的硬件平台设计。由于绝大多数服务作为用户而不是作为内核进程来运行的,因此微内核也就提供了更好的安全性和可靠性,如果一个服务器出错,那么操作系统的其他部分不受影响。
缺点:微内核系统的核心只实现了最基本的系统操作,这样内核以外的外部程序之间由于独立运行使得系统难以进行良好的整体优化。另外,进程间相互通信的开销也较单一内核系统大得多。
2.(6%)请你谈谈系统调用与函数调用的区别?
函数调用是调用函数库中的一个程序,而系统调用是调用系统内核的服务。
函数调用是与用户程序相联系,而系统调用是操作系统的一个进入点
函数调用是在用户地址空间执行,而系统调用是在内核地址空间执行
函数调用的运行时间属于「用户」时间,而系统调用的运行时间属于「系统」时间
函数调用属于过程调用,开销较小,而系统调用需要切换到内核上下文环境然后切换回来,开销较大
3. (6%)试简要介绍写时拷贝(Copy-On-Write)技术,并说明为何fork系统调用可以从该技术中受益。
略,可以CSDN搜一下。
原因主要是在改动前不用复制整个空间,免去了这个麻烦。
4.(6%)请简要介绍最优页面置换算法,并说明该算法为何是最优的。
(书P173)
5. (6%)试说明为何通用操作系统中要采用虚拟文件系统。
虚拟文件系统的主要功用,在于让上层的软件,能够用单一的方式,来跟底层不同的文件系统沟通。(其他的自己编一编就可以了)
三、(10%)
假设一个文件系统采用inode来表示文件。磁盘块大小为8KB,磁盘块指针为4B。这个文件系统具有10个直接块,以及一个一级、一个二级、一个三级的间接磁盘块。请问这个文件系统支持的文件的最大大小为多大(请给出计算过程和依据)。
四、 (15%)
一个磁盘有5000个柱面(0~4999)。假定磁头当前在1243号柱面上,前一个请求是125号柱面。对于如下请求:86, 2069, 920, 1785, 948, 1509, 122, 4210, 130。请按照下列算法给出为满足上述请求从当前磁头位置开始移动的总柱面数。
- FCFS
- SSTF
- SCAN
- LOOK
本次不考,没做
五、 (15%)
桌上有一个空盘,允许存放一个水果。爸爸可向盘中放苹果,也可向盘中放橘子,儿子只吃盘中的橘子,女儿专吃盘中的苹果。规定当盘空时一次只能放一个水果,请用wait(),signal()原语实现爸爸、儿子和女儿之间的同步(给出伪代码)。
int put=1,apple=0,orange=0;//定义同步信号量
Father://父亲进程
While(1)
{
P(put);
放一个苹果或者橘子;
if(fruit==apple)
V(apple);
else
V(orange);
}
Daughter://女儿进程
While(1)
{
P(apple);
拿一个苹果;
V(put);
吃苹果;
}
Son://儿子进程
While(1)
{
P(orange);
拿一个桔子;
V(put);
吃桔子;
}
答案参考:https://blog.csdn.net/weixin_43800761/article/details/106796505
六、(15%) 某请求分页式系统中,某进程的页表如下:
Page number(页号) | Frame(物理帧号) | Valid/Invalid bit(有效位) |
0 | - | 0 |
1 | 9H | 1 |
2 | 254H | 1 |
3 | - | 0 |
假定页面大小为4K,为该进程分配的物理帧数固定为2,采用最近最少使用页面置换算法(LRU)和本地帧分配策略,假设按虚拟地址10A0H,3542H, 2408H, 256H的序列顺序访问:
1. 请给出访问10A0H时的完整地址转换过程(步骤)和对应的物理地址;
2. 请给出访问3542H时的完整地址转换过程(步骤)和对应的物理地址;
3. 如果采用最优页面置换算法和本地帧分配策略,请给出上述序列(10A0H,3542H, 2408H, 256H)对应的物理地址,并给出分析过程。