요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0
=================
Memory Management
=================
Virtual memory layout
=====================
.. note::
- Some aspects of the virtual memory layout setup are not
clarified (number of page levels, alignment, DMA memory).
- Unused gaps in the virtual memory layout could be present
or not - depending on how partucular system is configured.
No page tables are created for the unused gaps.
- The virtual memory regions are tracked or untracked by KASAN
instrumentation, as well as the KASAN shadow memory itself is
created only when CONFIG_KASAN configuration option is enabled.
::
=============================================================================
| Physical | Virtual | VM area description
=============================================================================
+- 0 --------------+- 0 --------------+
| | S390_lowcore | Low-address memory
| +- 8 KB -----------+
| | |
| | |
| | ... unused gap | KASAN untracked
| | |
+- AMODE31_START --+- AMODE31_START --+ .amode31 rand. phys/virt start
|.amode31 text/data|.amode31 text/data| KASAN untracked
+- AMODE31_END ----+- AMODE31_END ----+ .amode31 rand. phys/virt end (<2GB)
| | |
| | |
+- __kaslr_offset_phys | kernel rand. phys start
| | |
| kernel text/data | |
| | |
+------------------+ | kernel phys end
| | |
| | |
| | |
| | |
+- ident_map_size -+ |
| |
| ... unused gap | KASAN untracked
| |
+- __identity_base + identity mapping start (>= 2GB)
| |
| identity | phys == virt - __identity_base
| mapping | virt == phys + __identity_base
| |
| | KASAN tracked
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+---- vmemmap -----+ 'struct page' array start
| |
| virtually mapped |
| memory map | KASAN untracked
| |
+- __abs_lowcore --+
| |
| Absolute Lowcore | KASAN untracked
| |
+- __memcpy_real_area
| |
| Real Memory Copy| KASAN untracked
| |
+- VMALLOC_START --+ vmalloc area start
| | KASAN untracked or
| vmalloc area | KASAN shallowly populated in case
| | CONFIG_KASAN_VMALLOC=y
+- MODULES_VADDR --+ modules area start
| | KASAN allocated per module or
| modules area | KASAN shallowly populated in case
| | CONFIG_KASAN_VMALLOC=y
+- __kaslr_offset -+ kernel rand. virt start
| | KASAN tracked
| kernel text/data | phys == (kvirt - __kaslr_offset) +
| | __kaslr_offset_phys
+- kernel .bss end + kernel rand. virt end
| |
| ... unused gap | KASAN untracked
| |
+------------------+ UltraVisor Secure Storage limit
| |
| ... unused gap | KASAN untracked
| |
+KASAN_SHADOW_START+ KASAN shadow memory start
| |
| KASAN shadow | KASAN untracked
| |
+------------------+ ASCE limit
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
메모리 관리와 가상 메모리 배치
1-9이 문서는 `GPL-2.0` SPDX 라이선스 아래 s390의 메모리 관리, 특히 가상 메모리 배치를 설명합니다.
배치 해석 시 주의 사항
10-23페이지 테이블 단계 수, 정렬, DMA 메모리 등 가상 메모리 배치 설정의 일부 측면은 명확히 규정되지 않았습니다.
사용하지 않는 간격은 시스템 구성에 따라 존재할 수도 있고 없을 수도 있습니다. 사용하지 않는 간격에는 페이지 테이블을 만들지 않습니다.
가상 메모리 영역의 KASAN 추적 여부와 KASAN shadow 메모리 생성은 `CONFIG_KASAN` 구성 옵션이 활성화된 경우에만 적용됩니다.
물리·가상 메모리 영역 지도
24-111원문의 ASCII 지도는 물리 주소 경계, 가상 주소 경계, 영역 의미와 KASAN 상태를 다음과 같이 대응시킵니다.
낮은 주소부터 ASCE 한계까지 원문의 수직 메모리 지도를 순서대로 구조화했습니다.
요약과 해설
mm.rst:1-111s390 가상 주소 공간은 저주소 lowcore와 `.amode31`, 큰 identity mapping, `vmemmap`, absolute lowcore, real-memory copy, vmalloc·모듈, 무작위 커널 이미지, KASAN shadow 순으로 배치됩니다.
KASAN 추적 범위는 영역마다 다르고 `CONFIG_KASAN`과 `CONFIG_KASAN_VMALLOC`에 좌우됩니다. 사용하지 않는 간격에는 페이지 테이블이 없을 수 있으므로 도식의 빈 구간을 실제 매핑으로 해석하면 안 됩니다.