目录
1. 描述分段内存管理机制
2. 解释文件分配磁盘块链接分配方法的优点和缺点
3. 进程的状态有哪些?
4. 一个进程的空间包括哪些部分?
5. 进程和程序的区别?
6. CPU调度可能发生在当一个进程:
7. 哪些条件同时出现,死锁将会发生?
8. 常见的调度方法有哪些?列出5种。
9. 如何用互斥锁来解决临界区问题?
10. 如何用信号量来解决临界区问题?
11. 如何用swap指令实现互斥?
12. 文件的基本属性有哪些?
13. 端口寄存器共有几种类型?分别是哪些类型?
14. 计算机系统有哪些部分构成?
15. 简述分页管理
16. 如何预防死锁?
17. 描述安全状态算法
18. 描述是否满足进程 Pi 的资源请求算法
19. 描述死锁检测算法
20. 描述指令和数据绑定到内存地址可以在三个不同的阶段
21. 用Test-and-Set指令实现互斥
22. 描述缺页错误的处理过程
23. 解释文件分配磁盘块顺序分配方法及优点缺点
1. 描述分段内存管理机制
参考答案:
在分段内存管理机制中,逻辑地址是由两个向量组成:<segment-number, offset>
。每个进程由多个段组成,每个段对应不同类型的数据或代码。
段表用于映射这些逻辑地址到物理地址。段表的每一项包括:
- 基址(Base Address):指向该段在物理内存中的起始地址。
- 限长(Limit):指定该段的长度,防止访问越界。
2. 解释文件分配磁盘块链接分配方法的优点和缺点
参考答案:
优点:
- 提高磁盘空间利用率:无需为每个文件预留固定的大小,可以动态分配磁盘空间。
- 支持文件动态扩充:文件可以随时增加更多磁盘块。
- 便于文件的插入和删除:文件在磁盘上的位置可以灵活调整。
缺点:
- 存取速度较慢:需要顺序访问每个块,适合顺序访问而非随机访问。
- 当物理块间的连接指针损坏时,可能会导致数据丢失。
3. 进程的状态有哪些?
参考答案:
- 新建:进程正在被创建中。
- 运行:进程的指令正在执行。
- 等待:进程在等待某些事件的发生。
- 就绪:进程已准备好执行,等待分配 CPU。
- 终止:进程的执行已完成。
4. 一个进程的空间包括哪些部分?
参考答案:
- 代码部分(文本部分):存储程序的指令。
- 堆:动态分配的内存区域,用于存放运行时分配的内存。
- 堆栈:用于存储函数调用相关信息,包括局部变量、返回地址等。
- 数据部分:存储程序的全局变量和已初始化数据。
5. 进程和程序的区别?
参考答案:
- 进程是程序的一次执行实例,是程序在内存中的表现。
- 程序是静态的,它是一个可执行文件,通常存储在硬盘上。
- 进程具有状态、生命周期,而程序是固定的,执行时才成为进程。
6. CPU调度可能发生在当一个进程:
参考答案:
- 从运行状态转为就绪状态。
- 从等待状态转为就绪状态。
- 当进程的时间片用尽。
- 当发生中断时。
第1和第4种情况发生的调度称为 非抢占式调度(nonpreemptive),其他情况发生的调度称为 抢占式调度(preemptive)。
7. 哪些条件同时出现,死锁将会发生?
参考答案:
- 互斥:一次只能有一个进程使用资源。
- 占有并等待:进程持有资源,并等待其他资源。
- 不可抢占:资源只能由持有它的进程释放。
- 循环等待:形成一个进程等待资源的闭环,如
P0 → P1 → P2 → P0
。
8. 常见的调度方法有哪些?列出5种。
参考答案:
- FCFS(先来先服务)
- SJF(最短作业优先)
- Priority(优先级调度)
- RR(时间片轮转)
- 多级队列调度
- 多级反馈队列调度
9. 如何用互斥锁来解决临界区问题?
参考答案:
do {请求锁// critical section释放锁// remainder section
} while (TRUE);
10. 如何用信号量来解决临界区问题?
参考答案:
Semaphore S;
// 初始化为 1
do {P(S); // 或 wait(S)// 临界区V(S); // 或 signal(S)// 剩余区
} while (true);
11. 如何用swap指令实现互斥?
参考答案:
共享数据 (初始化为 false):
boolean lock;
boolean waiting[n];
进程 Pi do {key = true;while (key == true) swap(lock, key);// critical sectionlock = false;// remainder section
}
12. 文件的基本属性有哪些?
参考答案:
- 文件标志:标识文件的名称及属性。
- 文件逻辑结构:文件的信息大小、组织方式等。
- 文件物理结构信息:存储文件的物理数据块等。
- 文件使用信息:如访问时间、创建时间等。
- 文件许可信息:如文件的权限、文件拥有者等。
13. 端口寄存器共有几种类型?分别是哪些类型?
参考答案: 4种类型:
- 数据输入端口
- 数据输出端口
- 控制端口
- 状态端口
14. 计算机系统有哪些部分构成?
参考答案:
- 硬件:提供基本的计算资源。
- 操作系统:控制和协调应用程序对硬件的使用。
- 应用程序:规定用户如何使用系统资源。
- 用户:包括人、机器和其他计算机。
15. 简述分页管理
参考答案: 分页管理将物理内存分成大小固定的块,称为 帧。将逻辑内存也分成大小固定的块,称为 页。
- 系统保留空闲帧的记录。
- 当一个程序运行时,系统会将程序的 页 加载到空闲的 帧 中。
- 系统会为每个程序建立一个 页表,将逻辑地址转换为物理地址,从而访问内存。
16. 如何预防死锁?
参考答案: 预防死锁的方法是通过抑制死锁发生的必要条件:
- 互斥:避免资源必须被独占使用。
- 占有并等待:必须确保进程申请资源时未占有其他资源。
- 不可抢占:允许资源在进程执行未完成时被抢占。
- 循环等待:通过对资源类型进行排序,进程按顺序申请资源,避免形成等待环路。
17. 描述安全状态算法
参考答案: 安全状态算法通过以下步骤进行:
- 初始化向量 Work 和数组 Finish。
- 设置 Work = Available,并初始化 Finish[i] = false(对所有进程)。
- 查找满足条件的进程 i:
- Finish[i] = false 且 Need[i] ≤ Work。
- 如果找到满足条件的进程 i,更新:
- Work = Work + Allocation[i]。
- 设置 Finish[i] = true。
- 返回步骤 2。
- 如果所有 Finish[i] = true,则系统处于安全状态;否则,系统处于不安全状态。
18. 描述是否满足进程 Pi 的资源请求算法
参考答案:
- Request_i 是进程 Pi 的资源请求向量,表示 Pi 请求 R_jm 的 k 个实例。
- 如果 Request_i ≤ Need_i,继续步骤 2;否则报错,因请求超过声明的最大值。
- 如果 Request_i ≤ Available,继续步骤 3;否则,进程 Pi 必须等待,资源不可用。
- 假设满足条件,进行分配:
- 更新 Available = Available - Request_i。
- 更新 Allocation_i = Allocation_i + Request_i。
- 更新 Need_i = Need_i - Request_i。
- 如果系统仍处于安全状态,则分配资源给 Pi;否则恢复原有资源分配状态,Pi 必须等待。
19. 描述死锁检测算法
参考答案:
- 初始化向量 Work 和数组 Finish。
- 设置 Work = Available,并初始化 Finish[i]:
- 如果 Allocation[i] = 0,设置 Finish[i] = true;否则,设置 Finish[i] = false。
- 查找满足条件的进程 i:
- Finish[i] = false 且 Request[i] ≤ Work。
- 如果找到满足条件的进程 i,更新:
- Work = Work + Allocation[i]。
- 设置 Finish[i] = true。
- 如果 Finish[i] = false,则系统处于死锁状态,且进程 Pi 是死锁的。
20. 描述指令和数据绑定到内存地址可以在三个不同的阶段
参考答案:
- 编译时期(Compile time):如果内存位置已知,编译时可生成绝对代码;如果开始位置改变,则需要重新编译。
- 加载时期(Load time):如果存储位置在编译时未知,则必须生成可重定位代码。
- 执行时期(Execution time):如果进程在执行时可以在内存中移动,则地址绑定延迟到运行时,硬件通过基址寄存器和限长寄存器来实现地址映射。
21. 用Test-and-Set指令实现互斥
参考答案:
boolean lock = false;
do {while (TestAndSet(lock)) ; // 自旋等待直到锁可用// critical sectionlock = false; // 离开临界区,释放锁// remainder section
} while (true);
22. 描述缺页错误的处理过程
参考答案:
- 检查进程页表,确定是否为无效引用:
- 如果是无效引用,则终止进程。
- 如果不是无效引用,但页面不在内存中,继续处理。
- 获取一个空闲页框。
- 将缺页加载到该空闲页框中。
- 更新页表,将对应的页表项有效位设为“V”。
- 重启被中断的指令。
23. 解释文件分配磁盘块顺序分配方法及优点缺点
参考答案:
优点:
- 支持顺序存取和随机存取。
- 顺序访问速度快。
- 磁盘寻道次数和寻道时间最少。
缺点:
- 需要为文件预留足够的物理块以满足文件的扩展需求。
- 不利于文件的插入和删除。