考试课程:操作系统(A 卷) 时间:2018 年 05 月 25 日下午 12:45~15:05
答卷注意事项:
1.答题前,请先在试题纸和答卷本上写明 A 卷或 B 卷、系别、班级、学号和姓名。
2.在答卷本上答题时, 要写明题号, 不必抄题。 2. 在答卷本上答题时, 要写明题号, 不必抄题。
3.答题时, 要书写清楚和整洁。
4.请注意回答所有试题。本试卷有 29 个题目,共 5 页。
5.考试完毕, 必须将试题纸和答卷本一起交回。
一、对错题(15 分)
注意:回答请用 V 表示正确,用 X 表示错误;
-
[ ] 在多CPU场景下,多个线程通过自旋锁(spinlock)争抢进入临界区执行,第一个成功进入 临界区的线程是第一个执行自旋锁争抢的线程。
答:√。 用TS指令可以实现自旋锁,属于原子操作指令锁,适用于丹处理器或者共享主存的多处理器的任意数量的进程同步。
-
[ ] 运行在内核态的内核线程共享操作系统内核态中的一个页表。
√。
-
[ ] 操作系统创建用户进程时需要为此用户进程创建一个内核栈用于执行系统调用服务等。
√。
-
[ ] 通用操作系统的调度算法的主要目标是低延迟,高吞吐量,公平,负载均衡。
√。
-
[ ] 单处理器场景下,短剩余时间优先调度算法(SRT)可达到具有最小平均周转时间的效果。
√。短进程优先算法SPN具有最优平均周转时间,而SRT是SPN的可抢占改进版本,应该也是对的。
-
[ ] 单处理器场景下,无法通过打开和关闭中断的机制来保证内核中临界区代码的互斥性。
×。可以。
-
[ ] 信号量可用于解决需要互斥和同步需求的问题。
√。
-
[ ] 属于管程范围的函数/子程序相互之间具有互斥性。
×。感觉管程内的函数应该不是互斥的。
-
[ ] 操作系统处于安全状态,一定没有死锁;操作系统处于不安全状态,可能出现死锁。
×。处于安全状态是指系统能按某种顺序如<P1,P2,…,Pn>(称<P1,P2,…Pn>序列为安全序列),来为每个进程分配其所需资源,直到最大需求,使每个进程都可顺序完成。 如果处于安全状态,但不按照安全序列来分配资源,也可能进入死锁状态。
-
[ ] 80386取指地址是base+eip,base是隐藏寄存器,初始化为0xffff0000,eip初始化为0xfff0,故执行的第一条指令是0xfffffff0。
√。根据ucore_docs P106:
在PC系统开机复位时,CPU进入实模式,并将CS寄存器设置成0xF000,将它的shadow register的Base值初始化设置为0xFFFF0000,EIP寄存器初始化设置0x0000FFF0。所以机器执行的第一条指令的物理地址是0xFFFFFFF0。80386的BIOS代码也要和以前8086的BIOS代码兼容,故地址0xFFFFFFF0处的指令还是一条长跳转指令
jmp F000:E05B
。
-
[ ] 在x86-32 CPU下,操作系统可以实现让用户态程序直接接收并处理硬件中断。
答:×。硬件中断需要进入内核态。
-
[ ] 由于符号链接(软链接)实际上是一类特殊的文件,它的内容就是其所指向的文件或目录的路径,所以符号链接可以指向一个不存在的文件或目录。
答: ×。文件的符号链接(SYMLINKD),如没有参数指定,则创建文件的符号链接,删除文件链接不影响目标文件,且创建链接时允许目标文件不存在;目录的符号链接(SYMLINKD) /D该参数可以创建目录的符号链接,删除目录链接不会影响目标目录,且创建链接时允许目标目录不存在;
-
[ ] 文件系统中,用于存储“文件访问控制信息”的合理位置是文件分配表。
答: ×。应该是文件控制块FCB。
-
[ ] 在操作系统中一旦出现死锁, 所有进程都不能运行。
答: ×。显然不对,只有那些因竞争资源而无限循环等待的进程才无法执行。
-
[ ] 在ucore for x86-32中,子进程通过sys_exit()执行进程退出时,ucore kernel会先释放子进程自身内核堆栈和进程控制块等,再唤醒父进程(或initproc),最后执行iret返回。
答:×。子进程的内核栈和进程控制块是由父进程帮忙收回的。
根据ucore_docs P252:当进程执行完它的工作后,就需要执行退出操作,释放进程占用的资源。ucore分了两步来完成这个工作,首先由进程本身完成大部分资源的占用内存回收工作,然后由此进程的父进程完成剩余资源占用内存的回收工作。为何不让进程本身完成所有的资源回收工作呢?这是因为进程要执行回收操作,就表明此进程还存在,还在执行指令,这就需要内核栈的空间不能释放,且表示进程存在的进程控制块不能释放。所以需要父进程来帮忙释放子进程无法完成的这两个资源回收工作。
二、填空题(30 分) 小强同学认真上课听讲,参与讨论,并完成了从lab0~lab8的所有实验,在学习过程中,了解和学 到了很多知识。下面是他的学习心得,请补充完整。
-
小强发现完成实验需要在Linux下操作很多命令行工具,于是他认真学习了lab0中的知识,了 解到git的强大版本管理功能,Linux中在命令行模式下可以通过执行一条命令”(__16.1 __) https://github.com/chyyuu/ucore_lab.git ”来首次获得