File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -7,22 +7,12 @@ summary: 这篇文章展示了如何在我们的内核中实现分页支持。
77
88## 简介
99
10- 上一篇文章介绍了分页的概念。通过与分段进行比较,它介绍了分页,解释了分页和页表的工作原理,然后介绍了x86_64的4级页表设计 。我们发现引导加载程序已经为内核建立了页表层次结构,这意味着我们的内核已经在虚拟地址上运行。由于非法内存访问会导致页面错误异常 ,而不是修改任意物理内存,因此可以提高安全性。
10+ 上一篇文章介绍了分页的概念。通过与分段进行比较,它介绍了分页,解释了分页和页表的工作原理,然后介绍了 ` x86_64 ` 的4级页表设计 。我们发现引导加载程序已经为内核建立了页表层次结构,这意味着我们的内核已经在虚拟地址上运行。非法内存访问会导致页面错误异常 ,而不是修改任意物理内存,因此可以提高安全性。
1111
12- 帖子的结尾是我们无法从内核访问页表的问题,因为它们存储在物理内存中,并且内核已经在虚拟地址上运行。这篇文章在这一点上继续,并探讨使页表帧可供我们的内核访问的不同方法 。我们将讨论每种方法的优缺点,然后为我们的内核决定一种方法。
12+ 帖子的结尾是我们无法从内核访问页表的问题,因为它们存储在物理内存中,并且内核已经在虚拟地址上运行。这篇文章在这一点上继续,并探讨使我们的内核可访问页表帧的不同方法 。我们将讨论每种方法的优缺点,然后为我们的内核决定一种方法。
1313
1414要实现此方法,我们将需要引导加载程序的支持,因此我们将首先对其进行配置。之后,我们将实现遍历页表层次结构的功能,以将虚拟地址转换为物理地址。最后,我们学习如何在页表中创建新的映射以及如何找到未使用的内存帧来创建新的页表。
1515
16- ### 升级依赖
17-
18- 这篇文章需要x86_64依赖项的0.7.5版或更高版本。 您可以在Cargo.toml中更新依赖项:
19-
20- ``` toml
21- [dependencies ]
22- x86_64 = " 0.7.5"
23- ```
24-
25- 有关最新版本中的更改的概述,请查看 [ ` x86_64 ` changelog] ( https://github.com/rust-osdev/x86_64/blob/master/Changelog.md ) 。
2616
2717## 访问页表
2818
You can’t perform that action at this time.
0 commit comments