【发布时间】:2020-12-15 01:48:27
【问题描述】:
我不确定我对分页的理解。我想通过创建一个假设的页面目录来检查,并要求社区指出我在此过程中的错误。
假设内核代码适合第一帧 - 0x0000 到 0x1000,并且页面目录将放置在 0x10000。这将是一个身份映射。
所以首先,我去看了intel 80386手册,找到了这个插图
╔══════════════════════════════════════╤═══════╤══ ═╤═╤═╤═══╤═╤═╤═╗ ║ │ │ │ │ │U│R│ ║ ║ 页帧地址 31..12 │ AVAIL │0 0│D│A│0 0│/│/│P║ ║ │ │ │ │ │ │S│W│ ║ ╚══════════════════════════════════════╧═══════╧══ ═╧═╧═╧═══╧═╧═╧═╝页面目录将只有一个条目(当前位不会设置在其他条目上)。这里是:
11000000 00001000 10000000 00000000
所以这意味着它存在,并且对应的页表位于00000000 0000001 0001,右移了 12 位。这评估为0x11000。 (这是我的目标,但它真的是这个意思吗?)。现在我明白了现在的意思,但是在这种情况下读/写是什么意思?它不是指框架,所以...
对于位于0x11000 的页表:
除了地址之外,一切都几乎相同。
11000000 0000000 00000000 00000000
11000000 0000100 00000000 00000000
etc
11000000 0000100 01000000 00000000
这就是内核的完整页表目录。这个对吗?过程中是否有任何错误?读/写位作为页目录项是什么意思?
【问题讨论】:
标签: operating-system paging i386