From e17a1237ce994098dd2931a56177b540856849fd Mon Sep 17 00:00:00 2001 From: Shine wOng <1551885@tongji.edu.cn> Date: Mon, 2 Sep 2019 19:18:35 +0800 Subject: [PATCH] first commit of lab3_report.md, not finished yet. --- thu_os/images/load_control.png | Bin 21962 -> 39017 bytes thu_os/images/page_fault_error_code.png | Bin 0 -> 53736 bytes thu_os/lab3_report.md | 252 ++++++++++++++++++++++++ 3 files changed, 252 insertions(+) create mode 100644 thu_os/images/page_fault_error_code.png create mode 100644 thu_os/lab3_report.md diff --git a/thu_os/images/load_control.png b/thu_os/images/load_control.png index 47a6cfc82bce5aab3548bf5465eff917a98ef74b..90d2985df4830ea5905576f9ebd3a8e56be7b96c 100644 GIT binary patch literal 39017 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 OL-y@)-(9{dAnxCLz~KJ? diff --git a/thu_os/images/page_fault_error_code.png b/thu_os/images/page_fault_error_code.png new file mode 100644 index 0000000000000000000000000000000000000000..fde2d442fc4a218a99cf01f7759200e5d4a94966 GIT binary patch literal 53736 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 HOoIOpzywS2 literal 0 HcmV?d00001 diff --git a/thu_os/lab3_report.md b/thu_os/lab3_report.md new file mode 100644 index 0000000..5d2756b --- /dev/null +++ b/thu_os/lab3_report.md @@ -0,0 +1,252 @@ +Lab 3 Report +============ + +## 实验目的 + ++ 了解虚拟内存的Page Fault异常处理实现 ++ 了解页替换算法在操作系统中的实现 + +## 实验内容 + +本次实验是在实验二的基础上,借助于页表机制和实验一中涉及的中断异常处理机制,完成Page Fault异常处理和FIFO页替换算法的实现,结合磁盘提供的缓存空间,从而能够支持虚存管理,提供一个比实际物理内存空间“更大”的虚拟内存空间给系统使用。这个实验与实际操作系统中的实现比较起来要简单,不过需要了解实验一和实验二的具体实现。实际操作系统系统中的虚拟内存管理设计与实现是相当复杂的,涉及到与进程管理系统、文件系统等的交叉访问。如果大家有余力,可以尝试完成扩展练习,实现extended clock页替换算法。 + +## 练习 + +对实验报告的要求: + ++ 基于markdown格式来完成,以文本方式为主 ++ 填写各个基本练习中要求完成的报告内容 ++ 完成实验后,请分析ucore_lab中提供的参考答案,并请在实验报告中说明你的实现与参考答案的区别 ++ 列出你认为本实验中重要的知识点,以及与对应的OS原理中的知识点,并简要说明你对二者的含义,关系,差异等方面的理解(也可能出现实验中的知识点没有对应的原理知识点) ++ 列出你认为OS原理中很重要,但在实验中没有对应上的知识点 + +## 新增加的文件概述 + +lab3相对于前面的lab2,增加了虚拟内存的管理,为此lab3中增加了一些关键文件。首先对这些文件的功能做一个简单的说明,后面还会有更详细的分析。 + +为了进行对虚拟内存的管理,需要有相关数据结构的支持,其中的两个关键数据结构`struct mm_struct`, `struct vma_struct`以及相关的函数定义在`mm/vmm.c(h)`当中。通过这两个结构体,`ucore`模拟了一个用户进程的虚拟地址空间,并对其进行相关的测试工作。 + +在`mm/swap.c(h)`中,定义了页面置换算法的框架`struct smap_manager`,以及为了完成页面换入换出所需要的一些必要函数,还有相关的测试代码。 + +在`mm/swap_fifo.c(h)`中,利用`struct swap_manager`框架实现了先进先出置换算法`FIFO`(其实没有实现,需要自己编程实现)。 + +此外,为了将页面换入换出到外存上,需要支持对外存的读写操作,这些函数定义在了`driver/ide.c`当中。 + +## 虚拟内存管理 + +lab3中需要完成对虚拟内存的管理工作。上面已经说到,虚拟内存的管理是通过两个结构体`mm_struct`以及`vmm_struct`来实现的,下面主要阐述这两个结构体如何实现对虚拟内存的管理。 + +### `vma_struct` + +`vma_struct`是用于描述一个进程的连续虚拟内存空间的,如果一个进程有若干个相互之间不连续的虚拟内存空间,则每个虚拟内存空间都需要维护一个`vma_struct`结构体。`vma_struct`的结构如下: + +```c +// the virtual continuous memory area(vma), [vm_start, vm_end), +// addr belong to a vma means vma.vm_start<= addr vm_start <= addr <= vma_vm_end) +struct vma_struct * +find_vma(struct mm_struct *mm, uintptr_t addr) { + struct vma_struct *vma = NULL; + if (mm != NULL) { + vma = mm->mmap_cache; + if (!(vma != NULL && vma->vm_start <= addr && vma->vm_end > addr)) { + bool found = 0; + list_entry_t *list = &(mm->mmap_list), *le = list; + while ((le = list_next(le)) != list) { + vma = le2vma(le, list_link); + if (vma->vm_start<=addr && addr < vma->vm_end) { + found = 1; + break; + } + } + if (!found) { + vma = NULL; + } + } + if (vma != NULL) { + mm->mmap_cache = vma; + } + } + return vma; +} +``` + +查找的方法就是从`mm_struct::mmap_cache`开始遍历整个`vma_struct`链表,直到找到一个对应的虚拟地址空间,或者始终没有找到。 + +## 练习一:给未被映射的地址映射上物理页(需要编程) + +完成`do_pgfault`(`mm/vmm.c`)函数,给未被映射的地址映射上物理页。设置访问权限的时候需要参考页面所在`VMA` 的权限,同时需要注意映射物理页时需要操作内存控制结构所指定的页表,而不是内核的页表。注意:在`LAB2 EXERCISE 1`处填写代码。执行 + +``` +make qemu +``` + +后,如果通过check_pgfault函数的测试后,会有“check_pgfault() succeeded!”的输出,表示练习1基本正确。 + +请在实验报告中简要说明你的设计实现过程。请回答如下问题: + ++ 请描述页目录项(Pag Director Entry)和页表(Page Table Entry)中组成部分对ucore实现页替换算法的潜在用处。 ++ 如果ucore的缺页服务例程在执行过程中访问内存,出现了页访问异常,请问硬件要做哪些事情? + + +### 页访问异常的处理 + +产生页访问异常的原因有很多,比如 + ++ 目标页帧不存在,即页表项全为零,表示没有给虚拟页分配物理页帧。 ++ 相应的物理页帧不在内存当中,而是在磁盘的`swap`分区。此时页表项的`PTE_P`标志位为零。 ++ 访问权限出错,比如试图写只读的页,或者用户进程试图访问内核的地址空间。 + +所有这些情况都会产生页访问异常(Page Fault, PF),因此页访问异常的处理函数首先需要解决的问题,就是如何来分辨当前页访问异常产生的原因,从而根据不同的情况采取不同的解决方法。 + +> 如何辨别不同原因产生的页访问异常? + +在发生页访问异常时,CPU会将产生异常的线性地址存储在`CR2`寄存器中,并且把页访问异常类型的值(简称页访问异常错误码,errorCode)保存在中断栈中。因此,可以通过这两个信息来追溯页访问异常的原因。 + +lab3中采用的方法是将这两个信息接合起来考虑,首先根据错误码来定位某些原因引起的页访问异常,再利用`CR2`寄存器中的线性地址,通过手动查当前进程的页目录表,来进一步对页访问异常进行定位。页访问异常错误的结构如下所示: + +![page_fault_errorcode](images/page_fault_errorcode.png) + +我们这里只用到了第零位和第一位,毕竟目前还没有用户态,第二位的内核访问/用户访问也无从说起。根据错误码来对页访问异常进行辨别的代码如下所示: + +```c +int +do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { + int ret = -E_INVAL; + //try to find a vma which include addr + struct vma_struct *vma = find_vma(mm, addr); + + pgfault_num++; + //If the addr is in the range of a mm's vma? + if (vma == NULL || vma->vm_start > addr) { + cprintf("not valid addr %x, and can not find it in vma\n", addr); + goto failed; + } + //check the error_code + switch (error_code & 3) { + default: + /* error code flag : default is 3 ( W/R=1, P=1): write, present */ + case 2: /* error code flag : (W/R=1, P=0): write, not present */ + if (!(vma->vm_flags & VM_WRITE)) { + cprintf("do_pgfault failed: error code flag = write AND not present, but the addr's vma cannot write\n"); + goto failed; + } + break; + case 1: /* error code flag : (W/R=0, P=1): read, present */ + cprintf("do_pgfault failed: error code flag = read AND present\n"); + goto failed; + case 0: /* error code flag : (W/R=0, P=0): read, not present */ + if (!(vma->vm_flags & (VM_READ | VM_EXEC))) { + cprintf("do_pgfault failed: error code flag = read AND not present, but the addr's vma cannot read or exec\n"); + goto failed; + } + } + // other operations + //...... +``` + +可以看到,根据异常错误码,主要是对一些权限信息进行检查。例如当前进程是否在试图写一个不可写的页面,或者被访问的页面是否是不可读也是不可执行的,如果的确出现了权限的越界,操作系统应该终止这些操作的进行,并且直接返回错误信息。而如果所有权限信息都是正确的,发生页访问异常的原因只是当前页面不存在(`P = 0`),则需要进行后续的操作,以判断是进行内存分配,还是页面置换。此时,就需要结合存储在`CR2`寄存器中的线性地址来进行进一步的判断了。 + +前面已经提到过,具体的方法就是查询当前进程的页目录表(`mm_struct::pgdir`),通过得到的页表项来进行判断--如果页表项全为零,则表示不存在当前虚拟地址的映射关系,此时应该给当前的虚拟页分配一个新的页面;而如果页表项不为零,只是`PTE_P`为零,则表示要访问的页不在内存中,需要进行页面置换,这部分将在练习二中讨论。 + +### 给未被映射的地址映射上物理页 + +如果访问的地址尚未被映射到物理页,则在页访问异常的处理函数`do_pgfault`中,需要给该也分配一个新的物理页帧,并且将分配的物理页的地址以及相关的权限信息填入到页表项中,这和我们前面的内容是一致的。 + +但是这里需要考虑特殊的情况,假如当前内存中已经没有空闲的页面了,又应该如何操作呢?在lab2中我们是直接返回错误码,然后就退出了,但是这在引入了虚拟内存地址的现在显然是不合适的。因此,此时是需要调用页面置换算法,从当前进程的页面中,选择一个置换到外存中,随后再进行存储空间的分配。然后这一系列的操作,老师都已经封装成的一个函数,见下面的代码: + +```c + + uint32_t perm = PTE_U; + if (vma->vm_flags & VM_WRITE) { + perm |= PTE_W; + } + addr = ROUNDDOWN(addr, PGSIZE); + ret = -E_NO_MEM; + pte_t *ptep=NULL; + + /*LAB3 EXERCISE 1: YOUR CODE*/ + ptep = get_pte(mm->pgdir, addr, 1); //(1) try to find a pte, if pte's PT(Page Table) isn't existed, then create a PT. + if (*ptep == 0) { + pgdir_alloc_page(mm->pgdir, addr, perm | PTE_P); //(2) if the phy addr isn't exist, then alloc a page & map the phy addr with logical addr + } +``` + +这里的`pgdir_alloc_page`函数,已经实现了上面我所描述的功能。在它的内部,是调用了`alloc_pages`函数,其实现如下: + +```c +//alloc_pages - call pmm->alloc_pages to allocate a continuous n*PAGESIZE memory +struct Page * +alloc_pages(size_t n) { + struct Page *page=NULL; + bool intr_flag; + + while (1) + { + local_intr_save(intr_flag); + { + page = pmm_manager->alloc_pages(n); + } + local_intr_restore(intr_flag); + + if (page != NULL || n > 1 || swap_init_ok == 0) break; + + extern struct mm_struct *check_mm_struct; + swap_out(check_mm_struct, n, 0); + } + return page; +} +``` + +可以看到,在`alloc_pages`函数内部,已经包含了页面置换的功能。 + +我的exercise1的实现,和老师的大体相同吧,但是我的肯定还是有问题的,老师的代码主要是多了很多异常的检查工作,比我的代码健壮多了,见下: + +```c + // try to find a pte, if pte's PT(Page Table) isn't existed, then create a PT. + // (notice the 3th parameter '1') + if ((ptep = get_pte(mm->pgdir, addr, 1)) == NULL) { + cprintf("get_pte in do_pgfault failed\n"); + goto failed; + } + + if (*ptep == 0) { // if the phy addr isn't exist, then alloc a page & map the phy addr with logical addr + if (pgdir_alloc_page(mm->pgdir, addr, perm) == NULL) { + cprintf("pgdir_alloc_page in do_pgfault failed\n"); + goto failed; + } + } +```