Skip to content

Commit

Permalink
[lab4] lab4 fix report rcore-os#4
Browse files Browse the repository at this point in the history
  • Loading branch information
陈张萌 committed Mar 18, 2021
1 parent 910ac8a commit 2e5a997
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions reports/lab4.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@
1. 增加了物理内存动态分配。在OS启动时对物理内存分配器进行初始化,使得OS中的物理内存分配机制使用我们提供的stack分配策略。
2. 增加了分页机制,为每个进程提供虚拟地址空间和页表,为每个物理地址建立到自己的一一映射以便OS在开启分页后仍然能方便地访问物理地址。
3. 增加了mmap和munmap系统调用。事实上只要调用代码框架中已经写好的函数就可以了,需要自己完成的函数是对map/unmap的失败情况进行检查。
4. 修改了get_time系统调用。需要修复的原因是,这个系统调用是在用户态传来了TimeVal类的地址,在OS内实现系统调用的时候要使用它的裸指针访问这个数据。但是用户程序传来的地址是在该任务使用的页表下的虚拟地址,但是执行系统调用会使得OS进入内核态, 同时也切换到内核页表,因此在内核态下访问同样的虚拟地址,自然会发生错误。要进行的修复工作是,将该虚拟地址对应的物理地址取出来,直接通过物理地址对应的裸指针修改TimeVal的值。因为虽然进入内核态之后也仍然使用页表映射,但是OS在页表机制启动的时候,就为物理页面建立了一一自映射,因此输入物理地址在页表映射下就会访问对应的物理地址。

实验结果如下:

![](./lab4/result2.png)

## 简答作业

Expand Down
Binary file added reports/lab4/result2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 2e5a997

Please sign in to comment.