"实现中的一些细节-x3e系列伺服驱动用户指南v4.0 -201812(转曲单页版)"
本文档主要介绍了 Nachos 操作系统中虚拟存储管理的一些关键细节,包括虚存管理的设计与实现、存储分配、存储保护以及实现过程中的问题与解决方案。
**虚存管理的设计和实现**
在 Nachos 操作系统中,虚存管理采用页式存储结构,通过LRU(Least Recently Used)算法来决定哪些页面应该被替换出内存。当一个实页被访问时,其LRU值会加1,而每次时钟中断时,所有实页的LRU值会被刷新,通常通过除2操作来实现。LRU值的更新是为了准确反映页面的使用情况,以便于优化替换策略。
**虚存的存储分配**
系统使用 Bitmap 管理实页表和虚页表,并通过循环算法寻找空闲页表项,以确保分配的页面均匀分布。在分配虚存时,首先检查是否有空闲的实页,如果有,则优先分配实页。如果实页已满,才会寻找空闲的虚页,以充分利用物理内存,提高系统性能。虚实页映射采用了块组相联技术,增加了分配的复杂性。
**存储保护**
Nachos 提供了双重存储访问保护机制:一是通过每个线程独立的页表实现地址空间隔离,防止线程间存储区域重叠;二是实施存取控制,包括读写权限,每个页表项都有只读或读写权限设置,但未涉及访问优先级控制。
**实现中的细节**
1. **实页引用计数**:为了保证正在使用的实页不被调出内存,系统引入了引用计数。当一个实页被使用时,引用计数加1,使用完毕后减1。缺页调度算法忽略引用计数非零的页面,确保系统运行中的页面不被替换。
2. **指令执行中的页面保证**:无论是指令执行前还是执行期间发生的缺页中断,系统都需确保指令引用的所有页面都在内存中。这通过引用计数实现,防止页面在中断处理后又被替换出去,造成性能波动。
**Nachos 概述**
Nachos 是一个教学用操作系统,提供了实验环境,包括安装、目录结构、编译运行各个部分的说明,以及模拟硬件的各种功能,如文件操作、中断处理、时钟中断、终端设备和磁盘设备的管理等。这些内容构成了 Nachos 操作系统的基础架构,帮助学生理解和实践操作系统原理。