小编Özg*_*eli的帖子

究竟什么是分页?OSDEV

我正在尝试编写自己的操作系统,但到了需要设置分页的地步。我写了一些似乎有效的代码,但我意识到我不明白分页是如何工作的。现在我将尝试解释我是如何理解事物的,我将有一些问题!

所以据我所知,分页是一种将地址映射到其他地址的方式,以便每个应用程序都可以看到完整的地址空间(?)。有一种叫做页目录的东西,它存储 1024 个 4 字节的条目,每个条目包含一个指向页表的指针,该页表也有 1024 个条目。页表的每个条目都有一个指向 4 KiB 物理地址块开头的指针。这意味着 4096 字节 * 页表中的 1024 个条目 * 页目录中的 1024 个条目 = 可以映射的 4 GiB 内存。例如,我可以将应用程序加载到 0x80000000 并将该地址映射到 0x00000000,应用程序将看到其地址从 0x00000000 开始。

问题:

  1. 每个应用程序都有自己的页面目录还是只有一个页面目录,应用程序如何访问页面以及它们具体做什么?
  2. 如果应用程序获得 4 KiB 的空间块或一页,他们应该如何查看完整的地址空间?
  3. 你如何将页面写入硬盘驱动器?
  4. 我们应该如何分配页面供应用程序使用?

paging x86 osdev virtual-memory page-tables

1
推荐指数
1
解决办法
232
查看次数

标签 统计

osdev ×1

page-tables ×1

paging ×1

virtual-memory ×1

x86 ×1