操作系统内存管理:物理与虚拟页面的实验探索

需积分: 0 0 下载量 147 浏览量 更新于2024-08-05 收藏 1.11MB PDF 举报
本篇文档是关于计算机操作系统实验的第5部分,主要关注内存管理,特别是物理内存(Physical Page Management)和虚拟内存的处理。实验的目的是帮助学生理解操作系统如何管理和调度物理内存,以及构建内核地址空间的概念。核心知识点包括: 1. **物理内存管理**: - 操作系统首先要确保对物理内存的有效管理,通过PageInfo数据结构实现,这个数据结构存储每个物理页面的信息,如使用状态,并组织成链表结构。 - 实现了一个名为`boot_alloc()`的函数,用于在操作系统初始化阶段分配物理内存。该函数根据参数n决定分配连续内存块或不分配。如果内存不足,程序会抛出"Outofmemory!"异常。特别地,当`nextfree`指针为空时,它会从`end`(bss段的结束)开始查找下一个可用内存。 2. **虚拟内存初始化**: - `page_init()`函数负责初始化页结构和内存自由链表,这是在分配了页目录和页信息的物理内存之后进行的。它设置了后续内存分配的基础,如`page_*`函数允许从`page_free_list`中动态地分配和重新分配内存。 3. **内核地址空间**: - 实验涉及到内核地址空间的概念,即操作系统为执行的程序(包括内核代码和数据)预留的一系列连续的内存区域。在这个过程中,操作系统将物理内存映射到虚拟地址空间,使得程序看起来好像拥有连续的内存,但实际上可能跨越了物理内存的限制。 4. **内存分配策略**: - 实验强调了不同内存分配操作的区别,如`boot_alloc()`在初始化阶段分配,而`page_*`函数用于常规运行时内存分配。这表明操作系统有明确的内存分配生命周期管理。 这些知识点展示了操作系统底层设计中的内存管理技术,涉及数据结构的使用,内存分配算法,以及内核地址空间映射的原理。通过实践这些概念,学生可以更深入地理解操作系统如何在硬件和用户程序之间提供内存服务。