rcore-os / rCore-Tutorial-deploy

Tutorial Doc for rCore OS step by step (3rd edition)
https://rcore-os.github.io/rCore-Tutorial-deploy/
GNU General Public License v3.0
3 stars 1 forks source link

申请初始化 lab-3/part-2 评论 #56

Closed PeterlitsZo closed 3 years ago

PeterlitsZo commented 3 years ago

同时我想请教一下,代码说第 510 个页表项对应的虚拟地址起始点为 0xffff_ffff_8000_0000,我感到不解,在 Sv39 中第一级页表中每一个页表项对应的是 1GiB 内存空间,也就是说控制的地址一共有 0x4000_0000,那么第 510 个页表对应的虚拟地址起始点应该是 510 * 0x4000_0000,即它不是应该是 0x7f_8000_0000 吗?

谢谢~

wyfcyx commented 3 years ago

评论区应该可以正常使用,考虑是网络问题?

另外,在SV39分页模式下,64位地址空间仅有最低的256GiB和最高的256GiB这总共512GiB可能有效(详情参考这里),因此上面所说的页表项510(其实如果按照第1~第512来算的话应该是第511个)实则对应最高的256GiB中次高的1GiB,也即起始地址为 0xFFFF_FFFF_8000_0000 。

PeterlitsZo commented 3 years ago

评论区应该可以正常使用,考虑是网络问题?

另外,在SV39分页模式下,64位地址空间仅有最低的256GiB和最高的256GiB这总共512GiB可能有效(详情参考这里),因此上面所说的页表项510(其实如果按照第1~第512来算的话应该是第511个)实则对应最高的256GiB中次高的1GiB,也即起始地址为 0xFFFF_FFFF_8000_0000 。

我查看了 RISC-V 的手册,它的 [63:39] 为必须要和第 38 位相同。这么设计的原因是为了向后兼容,如果未来需要设计更多内存的话,35 个没有用来储存信息的位,可以保证不会在未来发生歧义。现在让这 35 位保留也是为了缩小第一级页表的大小。谢谢指点。

BTW,我是按照第 0 到第 511 项来计算的啦。

BTW,并不是网络问题,它下面有写:

未找到相关的 Issues 进行评论

请联系 @chyyuu @wangrunji0408 @xy-plus @wyfcyx @LyricZhao @Tuyixiang 初始化创建

网址是 https://rcore-os.github.io/rCore-Tutorial-deploy/docs/lab-3/guide/part-2.html/ 哦。等等为啥刷新之后就有力?不好意思嘿嘿。我把这些都搬运过去~