美文网首页
xv6 riscv 的内存布局

xv6 riscv 的内存布局

作者: sarto | 来源:发表于2022-09-02 14:30 被阅读0次

    内核内存布局

    image.png

    (1)xv6 默认使用了分配了 128M 内存,都用在哪里了?
    (2)KENBASE 之下是什么,占用物理内存吗?
    (3)PHYSTOP 之上占用物理内存吗?

    首先,有两个概念,一是物理内存,二是地址空间地址空间是一个虚拟的概念,物理内存会放入地址空间中(根据架构不同,并不是从 0 开始放置)。

    先深入理解 KERNBASE 的含义

    image.png

    上图就是 riscv sv39 的物理地址空间,在这个地址空间上,KERNBASE 之下的地址空间,用于一些硬件 IO 接口,而KERNBASE 及以上的地址空间,用于物理内存。所以在 xv6 里,物理内存的地址并不是从 0 开始的,而是从 KERNBASE 开始的。

    理解 PHYSTOP 的含义

    #define PHYSTOP (KERNBASE + 128*1024*1024)
    

    xv6 对 PHYSTOP 的定义是 KENBASE + 128M。
    KERNBASE 指的是物理内存的起始地址,所以 PHYSTOP 就是 xv6 的物理内存终止地址。因为整个地址空间有 2^56 -1。远大于 PHYSTOP。所以其他区域属于地址空间保留区域(无效),在整个 xv6 系统中寻址都不应该寻址到这些保留区域上。

    回答第一个问题
    (1)xv6 的 128 M 内存用在了哪里
    答: 用在了内核代码段,内核数据段,用户程序代码段,数据段,用户栈,内核栈,蹦床代码等,总的来说就是由 kalloc 管理的加上启动时内核代码占用的那一部分。

    (2)KERNBASE 之下是什么,占用物理内存吗
    答:不占用,KERNBASE 之下是其他 IO 的地址空间,只是一个地址编号而已。

    (3)PHYSTOP 之上占用物理内存吗
    答: PHYSTOP 只是 xv6 设置的物理内存终止地址,实际上还可以访问更大的地址空间,只是这些地址空间上没有内存会报错。

    相关文章

      网友评论

          本文标题:xv6 riscv 的内存布局

          本文链接:https://www.haomeiwen.com/subject/owdwwrtx.html