xref: /linux/Documentation/translations/zh_CN/arch/riscv/vm-layout.rst (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
1*ed843ae9SCosta Shulyupin.. SPDX-License-Identifier: GPL-2.0
2*ed843ae9SCosta Shulyupin.. include:: ../../disclaimer-zh_CN.rst
3*ed843ae9SCosta Shulyupin
4*ed843ae9SCosta Shulyupin:Original: Documentation/arch/riscv/vm-layout.rst
5*ed843ae9SCosta Shulyupin
6*ed843ae9SCosta Shulyupin:翻译:
7*ed843ae9SCosta Shulyupin
8*ed843ae9SCosta Shulyupin 司延腾 Yanteng Si <siyanteng@loongson.cn>
9*ed843ae9SCosta Shulyupin        Binbin Zhou <zhoubinbin@loongson.cn>
10*ed843ae9SCosta Shulyupin
11*ed843ae9SCosta Shulyupin============================
12*ed843ae9SCosta ShulyupinRISC-V Linux上的虚拟内存布局
13*ed843ae9SCosta Shulyupin============================
14*ed843ae9SCosta Shulyupin
15*ed843ae9SCosta Shulyupin:作者: Alexandre Ghiti <alex@ghiti.fr>
16*ed843ae9SCosta Shulyupin:日期: 12 February 2021
17*ed843ae9SCosta Shulyupin
18*ed843ae9SCosta Shulyupin这份文件描述了RISC-V Linux内核使用的虚拟内存布局。
19*ed843ae9SCosta Shulyupin
20*ed843ae9SCosta Shulyupin32位 RISC-V Linux 内核
21*ed843ae9SCosta Shulyupin======================
22*ed843ae9SCosta Shulyupin
23*ed843ae9SCosta ShulyupinRISC-V Linux Kernel SV32
24*ed843ae9SCosta Shulyupin------------------------
25*ed843ae9SCosta Shulyupin
26*ed843ae9SCosta ShulyupinTODO
27*ed843ae9SCosta Shulyupin
28*ed843ae9SCosta Shulyupin64位 RISC-V Linux 内核
29*ed843ae9SCosta Shulyupin======================
30*ed843ae9SCosta Shulyupin
31*ed843ae9SCosta ShulyupinRISC-V特权架构文档指出,64位地址 "必须使第63-48位值都等于第47位,否则将发生缺页异常。":这将虚
32*ed843ae9SCosta Shulyupin拟地址空间分成两半,中间有一个非常大的洞,下半部分是用户空间所在的地方,上半部分是RISC-V Linux
33*ed843ae9SCosta Shulyupin内核所在的地方。
34*ed843ae9SCosta Shulyupin
35*ed843ae9SCosta ShulyupinRISC-V Linux Kernel SV39
36*ed843ae9SCosta Shulyupin------------------------
37*ed843ae9SCosta Shulyupin
38*ed843ae9SCosta Shulyupin::
39*ed843ae9SCosta Shulyupin
40*ed843ae9SCosta Shulyupin  ========================================================================================================================
41*ed843ae9SCosta Shulyupin      开始地址       |   偏移      |     结束地址      |  大小    | 虚拟内存区域描述
42*ed843ae9SCosta Shulyupin  ========================================================================================================================
43*ed843ae9SCosta Shulyupin                    |            |                  |         |
44*ed843ae9SCosta Shulyupin   0000000000000000 |    0       | 0000003fffffffff |  256 GB | 用户空间虚拟内存,每个内存管理器不同
45*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|___________________________________________________________
46*ed843ae9SCosta Shulyupin                    |            |                  |         |
47*ed843ae9SCosta Shulyupin   0000004000000000 | +256    GB | ffffffbfffffffff | ~16M TB | ... 巨大的、几乎64位宽的直到内核映射的-256GB地方
48*ed843ae9SCosta Shulyupin                    |            |                  |         |     开始偏移的非经典虚拟内存地址空洞。
49*ed843ae9SCosta Shulyupin                    |            |                  |         |
50*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|___________________________________________________________
51*ed843ae9SCosta Shulyupin                                                              |
52*ed843ae9SCosta Shulyupin                                                              | 内核空间的虚拟内存,在所有进程之间共享:
53*ed843ae9SCosta Shulyupin  ____________________________________________________________|___________________________________________________________
54*ed843ae9SCosta Shulyupin                    |            |                  |         |
55*ed843ae9SCosta Shulyupin   ffffffc6fee00000 | -228    GB | ffffffc6feffffff |    2 MB | fixmap
56*ed843ae9SCosta Shulyupin   ffffffc6ff000000 | -228    GB | ffffffc6ffffffff |   16 MB | PCI io
57*ed843ae9SCosta Shulyupin   ffffffc700000000 | -228    GB | ffffffc7ffffffff |    4 GB | vmemmap
58*ed843ae9SCosta Shulyupin   ffffffc800000000 | -224    GB | ffffffd7ffffffff |   64 GB | vmalloc/ioremap space
59*ed843ae9SCosta Shulyupin   ffffffd800000000 | -160    GB | fffffff6ffffffff |  124 GB | 直接映射所有物理内存
60*ed843ae9SCosta Shulyupin   fffffff700000000 |  -36    GB | fffffffeffffffff |   32 GB | kasan
61*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|____________________________________________________________
62*ed843ae9SCosta Shulyupin                                                              |
63*ed843ae9SCosta Shulyupin                                                              |
64*ed843ae9SCosta Shulyupin  ____________________________________________________________|____________________________________________________________
65*ed843ae9SCosta Shulyupin                    |            |                  |         |
66*ed843ae9SCosta Shulyupin   ffffffff00000000 |   -4    GB | ffffffff7fffffff |    2 GB | modules, BPF
67*ed843ae9SCosta Shulyupin   ffffffff80000000 |   -2    GB | ffffffffffffffff |    2 GB | kernel
68*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|____________________________________________________________
69*ed843ae9SCosta Shulyupin
70*ed843ae9SCosta Shulyupin
71*ed843ae9SCosta ShulyupinRISC-V Linux Kernel SV48
72*ed843ae9SCosta Shulyupin------------------------
73*ed843ae9SCosta Shulyupin
74*ed843ae9SCosta Shulyupin::
75*ed843ae9SCosta Shulyupin
76*ed843ae9SCosta Shulyupin ========================================================================================================================
77*ed843ae9SCosta Shulyupin      开始地址       |   偏移      |     结束地址      |  大小    | 虚拟内存区域描述
78*ed843ae9SCosta Shulyupin ========================================================================================================================
79*ed843ae9SCosta Shulyupin                    |            |                  |         |
80*ed843ae9SCosta Shulyupin   0000000000000000 |    0       | 00007fffffffffff |  128 TB | 用户空间虚拟内存,每个内存管理器不同
81*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|___________________________________________________________
82*ed843ae9SCosta Shulyupin                    |            |                  |         |
83*ed843ae9SCosta Shulyupin   0000800000000000 | +128    TB | ffff7fffffffffff | ~16M TB | ... 巨大的、几乎64位宽的直到内核映射的-128TB地方
84*ed843ae9SCosta Shulyupin                    |            |                  |         |     开始偏移的非经典虚拟内存地址空洞。
85*ed843ae9SCosta Shulyupin                    |            |                  |         |
86*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|___________________________________________________________
87*ed843ae9SCosta Shulyupin                                                              |
88*ed843ae9SCosta Shulyupin                                                              | 内核空间的虚拟内存,在所有进程之间共享:
89*ed843ae9SCosta Shulyupin  ____________________________________________________________|___________________________________________________________
90*ed843ae9SCosta Shulyupin                    |            |                  |         |
91*ed843ae9SCosta Shulyupin   ffff8d7ffee00000 |  -114.5 TB | ffff8d7ffeffffff |    2 MB | fixmap
92*ed843ae9SCosta Shulyupin   ffff8d7fff000000 |  -114.5 TB | ffff8d7fffffffff |   16 MB | PCI io
93*ed843ae9SCosta Shulyupin   ffff8d8000000000 |  -114.5 TB | ffff8f7fffffffff |    2 TB | vmemmap
94*ed843ae9SCosta Shulyupin   ffff8f8000000000 |  -112.5 TB | ffffaf7fffffffff |   32 TB | vmalloc/ioremap space
95*ed843ae9SCosta Shulyupin   ffffaf8000000000 |  -80.5  TB | ffffef7fffffffff |   64 TB | 直接映射所有物理内存
96*ed843ae9SCosta Shulyupin   ffffef8000000000 |  -16.5  TB | fffffffeffffffff | 16.5 TB | kasan
97*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|____________________________________________________________
98*ed843ae9SCosta Shulyupin                                                              |
99*ed843ae9SCosta Shulyupin                                                              | 从此处开始,与39-bit布局相同:
100*ed843ae9SCosta Shulyupin  ____________________________________________________________|____________________________________________________________
101*ed843ae9SCosta Shulyupin                    |            |                  |         |
102*ed843ae9SCosta Shulyupin   ffffffff00000000 |   -4    GB | ffffffff7fffffff |    2 GB | modules, BPF
103*ed843ae9SCosta Shulyupin   ffffffff80000000 |   -2    GB | ffffffffffffffff |    2 GB | kernel
104*ed843ae9SCosta Shulyupin  __________________|____________|__________________|_________|____________________________________________________________
105