里面有一题ucore填空的没有,可参考https://blog.csdn.net/marshazheng/article/details/84639441
剩下的应该是官方答案,题目可能有些许不同。祝好
一、对错题 用V表示对,用X表示错
1. [x]在多CPU场景下,多个进程通过自旋锁(spinlock)争抢进入临界区执行,第一个成功进入临界区
的进程是第一个执行自旋锁争抢的进程。
2. [v] 运行在内核态的内核线程共享操作系统内核态中的一个页表。
3. [v] 操作系统创建用户进程时需要为此用户进程创建一个内核栈用于执行系统调用服务等。
4. [v] 通用操作系统的调度算法的主要目标是低延迟,高吞吐量,公平,负载均衡。
5. [v] 单处理器场景下,短剩余时间优先调度算法(SRT)可达到具有最小平均周转时间的效果。
6. [x]单处理器场景下,无法通过打开和关闭中断的机制来保证内核中临界区代码的互斥性。
7. [v] 信号量可用于解决需要互斥和同步需求的问题。
8. [v] 属于管程范围的函数/子程序相互之间具有互斥性。
9. [v] 操作系统处于安全状态,一定没有死锁;操作系统处于不安全状态,可能出现死锁。
10. [v] 80386取指地址是base+eip,base是隐藏寄存器,初始化为0xffff0000,eip初始化为0xfff0,
故执行的第一条指令是0xfffffff0。
11. [v] 在x86-32 CPU下,操作系统可以实现让用户态程序直接接收并处理硬件中断。
12. [v]由于符号链接(软链接)实际上是一个特殊的文件,它的内容就是其所指向的文件或目录的路
径,所以符号链接可以指向一个不存在的文件或目录。
13. [x]文件系统中,文件访问控制信息存储的合理位置是文件分配表。
14. [x]在操作系统中一旦出现死锁, 所有进程都不能运行。
15. [x]在ucore for x86-32中,子进程通过sys_exit()执行进程退出时,ucore kernel会先释放子进程自
身内核堆栈和进程控制块等,再唤醒父进程(或initproc),最后执行iret返回。
## RAID(9分)
现有一个RAID磁盘阵列,包含6个磁盘,每个磁盘大小都是2TB,最大写入速度 200 MB/s,最大读取速
度 250 MB/s 的硬盘。用它们分别组成RAID级分别为0、1和5。请在理想情况下回答下列问题。
1. 用它们组成的 RAID0 阵列的总可用空间为 (`__1__`),最大写入速度为 (`__2__`),最大读取速度为
(`__3__`);
2. 用它们组成的 RAID1 阵列的总可用空间为 (`__4__`),最大写入速度为 (`__5__`),最大读取速度为
(`__6__`);
3. 用它们组成的 RAID5 阵列的总可用空间为 (`__7__`),最大写入速度为 (`__8__`),最大读取速度为
(`__9__`)。
### 参考答案
1. 用它们组成的 RAID0 阵列的总可用空间为 (12 TB),最大写入速度为 (1.2TB/s),最大读取速度为
(1.5TB/s);
2. 用它们组成的 RAID1 阵列的总可用空间为 (6TB),最大写入速度为 (600 MB/s),最大读取速度为
(1.5TB/s);
3. 用它们组成的 RAID5 阵列的总可用空间为 (10 TB),最大写入速度为 (1TB/s),最大读取速度为
(1.25TB/s)。
## 页表(5分)
假定在X86-32平台上的ucore的虚拟存储系统中,采用4KB页大小和二级页表结构。请补全功能为通过
虚拟地址找到对应的页表项的`get_pte()`函数。
可能需要用到的函数有:
评论0