XV6内存布局

1、        规定系统最大物理内存为16MB。
2、        应用程序使用0-640K虚拟内存,640K-1M是映射IO空间,1M以上的高位内存只有内核可以使用,4064-4096最高32M地址空间映射到不同的设备。
3、        每个应用程序都有自己的页表,页表的前160项(0-640K)内存是自己映射的,从640K到最高物理内存,其物理地址和虚拟地址是一致的,不过应用程序没有访问高于640K内存的权限。这样可以>    快速从应用层切换到内核层。
4、        应用程序要求分配页面的时候,内核空间映射的物理页会再次映射到用户空间,相当于一个页被映射了两次。

5、        内核使用一个被自旋锁保护的链表来保存空闲页面,链表的节点就位于空闲页面的顶端(好精妙的设计!)。

This entry was posted in 操作系统 and tagged . Bookmark the permalink.

5 Responses to XV6内存布局

  1. 大D says:

    来看看D老大

  2. Fleurer says:

    xv6大概是出于实现方便的考虑选用了自旋锁作为通用的同步机制…要是稍微更高级一点就更有参考性了…
    fork()好像也是直接一个memcpy没有搞写时复制…

    • davelv says:

      回复 fleurer:没错来着。目前只看到了自旋锁,没有看到信号量用的P,V(不过sleep和wake倒是有)。
      fork是直接copy了父进程了页目录以及内存,没有共享机制。

回复 大D 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注