0

来自「一个用于学习的操作系统」· 代码 · 共 44 行

TXT
44
字号
地址映射,系统在分页之后,物理地址将映射到线性地址的3G处,这样,物理地址和线性地址是一一对应的,只是有一个3G的偏移。如下图所示。
              _______4G
              |     |
              |     |
              |     |
              |     |
              |     |
              |     |
              |     |
             /|     |
            / |     |
           /  |     |
          /   |     |
         /    |     |
        /     |_____|3G处
       /     /|     |
      /     / |     |
_____/     /  |     |
|   |     /   |     |
|   |    /    |     |
|   |   /     |     |
|   |  /      |     |
|   | /       |     |
|___|/        |_____|0
物理地址     线性地址



内核用了高3G处的1G的空间,而用户进程则使用低3G的3G空间,因此内核空间是所有进程共享的。如下如所示,在代码中,每个进程的页目录也可以看的很清楚,在页目录项的高256项是进行的相同的映射,都映射到了线性地址的3G处。

       4G 
       | |——————————————————————————————|
       | | 内核地址空间,所有进程共享   |
       | |                              |
       | |______________________________|
      3G ________________________________
       | _____  _____ _____  _____ _____
       | |   |  |   | |   |  |   | |   |  进程空间
       | |   |  |   | |   |  |   | |   |
       | |   |  |   | |   |  |   | |   |
       | |   |  |   | |   |  |   | |   |
       | |   |  |   | |   |  |   | |   |
       | |___|  |___| |___|  |___| |___|

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?