MIT-6.828 Lab2实验报告
tags:mit-6.828 os 本文主要介绍lab2,讲的是操作系统内存管理,从内容上分为三部分: 第一部分讲的是物理内存管理,要进行内存管理首先需要知道哪些物理内存是空闲的,哪些是被使用的。还需要实现一些函数对这些物理内存进行管理。 第二部分讲的是虚拟内存。一个虚拟地址如何被映射到物理地址,将实现一些函数来操作页目录和页表从而达到映射的目的。 第三部分讲的是内核的地址空间。将结合第一部分和第二部分的成果,来对内核地址空间进行映射。 Part 1: Physical Page Management 通过lab1可以总结出如下的物理内存分布图: 大致上可以分为三部分: 0x00000~0xA0000:这部分叫做basemem,是可用的。 接着是0xA0000~0x100000:这部分叫做IO Hole,不可用。 再接着就是0x100000以上的部分:这部分叫做extmem,可用。 kern/pmap.c中的i386_detect_memory()统计有多少可用的物理内存,将总共的可用物理内存页数保存到全局变量npages中,basemem部分可用的物理内存页数保存到npages_basemem中。 Exercise 1: 需要我们写一个物理内存页的allocator。要求实现kern/pmap.c文件中的boot_alloc(),mem_init(),page_init()