← Documents Documentation/arch/s390/mm.rst GitHub 원문 ↗

Linux 6.18.37 · Architecture

s390 Memory Management

s390 물리·가상 메모리 배치, identity map, vmemmap, vmalloc, 모듈, 커널 KASLR와 KASAN shadow 영역입니다.

Source pathDocumentation/arch/s390/mm.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

mm.rst:1-111

s390 가상 주소 공간은 저주소 lowcore와 `.amode31`, 큰 identity mapping, `vmemmap`, absolute lowcore, real-memory copy, vmalloc·모듈, 무작위 커널 이미지, KASAN shadow 순으로 배치됩니다.

KASAN 추적 범위는 영역마다 다르고 `CONFIG_KASAN`과 `CONFIG_KASAN_VMALLOC`에 좌우됩니다. 사용하지 않는 간격에는 페이지 테이블이 없을 수 있으므로 도식의 빈 구간을 실제 매핑으로 해석하면 안 됩니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =================
4 Memory Management
5 =================
6
7 Virtual memory layout
8 =====================
9
10 .. note::
11
12 - Some aspects of the virtual memory layout setup are not
13 clarified (number of page levels, alignment, DMA memory).
14
15 - Unused gaps in the virtual memory layout could be present
16 or not - depending on how partucular system is configured.
17 No page tables are created for the unused gaps.
18
19 - The virtual memory regions are tracked or untracked by KASAN
20 instrumentation, as well as the KASAN shadow memory itself is
21 created only when CONFIG_KASAN configuration option is enabled.
22
23 ::
24
25 =============================================================================
26 | Physical | Virtual | VM area description
27 =============================================================================
28 +- 0 --------------+- 0 --------------+
29 | | S390_lowcore | Low-address memory
30 | +- 8 KB -----------+
31 | | |
32 | | |
33 | | ... unused gap | KASAN untracked
34 | | |
35 +- AMODE31_START --+- AMODE31_START --+ .amode31 rand. phys/virt start
36 |.amode31 text/data|.amode31 text/data| KASAN untracked
37 +- AMODE31_END ----+- AMODE31_END ----+ .amode31 rand. phys/virt end (<2GB)
38 | | |
39 | | |
40 +- __kaslr_offset_phys | kernel rand. phys start
41 | | |
42 | kernel text/data | |
43 | | |
44 +------------------+ | kernel phys end
45 | | |
46 | | |
47 | | |
48 | | |
49 +- ident_map_size -+ |
50 | |
51 | ... unused gap | KASAN untracked
52 | |
53 +- __identity_base + identity mapping start (>= 2GB)
54 | |
55 | identity | phys == virt - __identity_base
56 | mapping | virt == phys + __identity_base
57 | |
58 | | KASAN tracked
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 +---- vmemmap -----+ 'struct page' array start
75 | |
76 | virtually mapped |
77 | memory map | KASAN untracked
78 | |
79 +- __abs_lowcore --+
80 | |
81 | Absolute Lowcore | KASAN untracked
82 | |
83 +- __memcpy_real_area
84 | |
85 | Real Memory Copy| KASAN untracked
86 | |
87 +- VMALLOC_START --+ vmalloc area start
88 | | KASAN untracked or
89 | vmalloc area | KASAN shallowly populated in case
90 | | CONFIG_KASAN_VMALLOC=y
91 +- MODULES_VADDR --+ modules area start
92 | | KASAN allocated per module or
93 | modules area | KASAN shallowly populated in case
94 | | CONFIG_KASAN_VMALLOC=y
95 +- __kaslr_offset -+ kernel rand. virt start
96 | | KASAN tracked
97 | kernel text/data | phys == (kvirt - __kaslr_offset) +
98 | | __kaslr_offset_phys
99 +- kernel .bss end + kernel rand. virt end
100 | |
101 | ... unused gap | KASAN untracked
102 | |
103 +------------------+ UltraVisor Secure Storage limit
104 | |
105 | ... unused gap | KASAN untracked
106 | |
107 +KASAN_SHADOW_START+ KASAN shadow memory start
108 | |
109 | KASAN shadow | KASAN untracked
110 | |
111 +------------------+ ASCE limit
112

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

메모리 관리와 가상 메모리 배치

1-9

이 문서는 `GPL-2.0` SPDX 라이선스 아래 s390의 메모리 관리, 특히 가상 메모리 배치를 설명합니다.

배치 해석 시 주의 사항

10-23

페이지 테이블 단계 수, 정렬, DMA 메모리 등 가상 메모리 배치 설정의 일부 측면은 명확히 규정되지 않았습니다.

사용하지 않는 간격은 시스템 구성에 따라 존재할 수도 있고 없을 수도 있습니다. 사용하지 않는 간격에는 페이지 테이블을 만들지 않습니다.

가상 메모리 영역의 KASAN 추적 여부와 KASAN shadow 메모리 생성은 `CONFIG_KASAN` 구성 옵션이 활성화된 경우에만 적용됩니다.

물리·가상 메모리 영역 지도

24-111

원문의 ASCII 지도는 물리 주소 경계, 가상 주소 경계, 영역 의미와 KASAN 상태를 다음과 같이 대응시킵니다.

s390 가상 메모리 배치
순서물리 주소·영역가상 주소·영역설명과 KASAN 상태
1`0``0` / `S390_lowcore`낮은 주소 메모리
2해당 없음`8 KB` 이후 사용하지 않는 간격KASAN 미추적
3`AMODE31_START``AMODE31_START``.amode31` 무작위 물리·가상 시작점
4`.amode31 text/data``.amode31 text/data`KASAN 미추적
5`AMODE31_END``AMODE31_END``.amode31` 무작위 물리·가상 끝점, 2GB 미만
6`__kaslr_offset_phys`해당 없음커널 무작위 물리 시작점
7`kernel text/data`해당 없음커널 물리 텍스트와 데이터
8커널 물리 끝해당 없음커널 물리 이미지의 끝
9`ident_map_size`해당 없음물리 identity map 크기 경계
10해당 없음`__identity_base` 앞의 사용하지 않는 간격KASAN 미추적
11해당 없음`__identity_base`2GB 이상 identity mapping 시작점
12물리 메모리`identity mapping``phys == virt - __identity_base`, `virt == phys + __identity_base`; KASAN 추적
13해당 없음`vmemmap``struct page` 배열 시작과 가상 매핑 memory map; KASAN 미추적
14해당 없음`__abs_lowcore` / `Absolute Lowcore`KASAN 미추적
15해당 없음`__memcpy_real_area` / `Real Memory Copy`KASAN 미추적
16해당 없음`VMALLOC_START` / `vmalloc area`KASAN 미추적 또는 `CONFIG_KASAN_VMALLOC=y`에서 얕게 채움
17해당 없음`MODULES_VADDR` / `modules area`모듈별 KASAN 할당 또는 `CONFIG_KASAN_VMALLOC=y`에서 얕게 채움
18`__kaslr_offset_phys`를 기준으로 대응`__kaslr_offset`부터 `kernel .bss end`까지커널 무작위 가상 영역이며 KASAN 추적. `phys == (kvirt - __kaslr_offset) + __kaslr_offset_phys`
19해당 없음커널 가상 끝 이후 UltraVisor Secure Storage 한계까지의 간격KASAN 미추적
20해당 없음UltraVisor Secure Storage 한계 이후 간격`KASAN_SHADOW_START` 전까지 KASAN 미추적
21해당 없음`KASAN_SHADOW_START`부터 ASCE 한계까지KASAN shadow 메모리이며 그 자체는 KASAN 미추적

낮은 주소부터 ASCE 한계까지 원문의 수직 메모리 지도를 순서대로 구조화했습니다.