参考答案在这里
目录
展开
1 环境 & 机制
为什么要将指令集合划分为不同的特权级别?(为什么要有 CPU 状态)
枚举只能在内核态运行的指令
简述中断异常区别
简述内核处理被触发和内核处理流程
简述 IA32 系统调用流程
简述设计增加系统调用过程
系统调用 VS 函数调用/API?
设计 OS 要对“时间与空间”“公平与性能”进行权衡,请各具一个例子说明
2 进程 & 线程
PCB 的作用?在创建,撤销,阻塞,唤醒,切换,调度进程的过程中起什么作用?
PCB 怎么描述进程地址空间?
简述进程创建步骤;为何系统会将56两步一起完成?
简述进程切换的过程与开销
为什么要设置创建 & 挂起状态?
OS 对用户级线程和内核级线程支持有什么不同?各列举一个支持用户级线程和内核级线程的实例操作系统的名字
3 CPU 调度
会导致饥饿的调度方式有哪些?会导致优先级反转的调度方式有哪些?
简述多级反馈队列调度的设计思想。请说明这一设计如何处理 IO 密集型和 CPU 密集型进程?有无饥饿?如何解决?
4 同步 & 互斥
针对单处理器和多处理器,说明自旋锁的优势与劣势
比较自旋锁 VS 读写锁
5 存储模型
简述虚拟地址转换过程
虚存页表项包含哪些内容?为何这样设计?
简述反转页表的设计思路及虚实地址转换过程
详细写出写时复制的实现(包括设计思路,用到的数据结构)
写时拷贝&内存映射文件的相似之处
6 文件系统
简述 Unix FCB 内容及作用
进程通过 fopen 系统调用读取文件的过程 与 PCB FCB 的关系?
简述 Windows 文件缓存
7 IO 系统
以打印机输出为例,说明 IO 软件设计思想
简述内存映射编址 与 IO 独立编址的区别
这段代码会有什么缺点?如何解决?
8 死锁
以哲学家就餐问题为例,描述如何预防死锁