운영체제 기본/Linux/메모리 매핑: 두 판 사이의 차이
외관
Linux 계층형 경로에 맞춰 문서 링크 갱신 |
직접 관련된 총론 링크와 선행 개념 안내 정리 |
||
| 8번째 줄: | 8번째 줄: | ||
Linux v6.12의 공통 매핑·페이지 폴트 경로를 먼저 살펴보고, 각 매핑이 실제 접근을 처리하는 방식을 비교한다. 시스템 콜과 CPU 예외 진입은 x86-64와 RISC-V RV64를 함께 다룬다. | Linux v6.12의 공통 매핑·페이지 폴트 경로를 먼저 살펴보고, 각 매핑이 실제 접근을 처리하는 방식을 비교한다. 시스템 콜과 CPU 예외 진입은 x86-64와 RISC-V RV64를 함께 다룬다. | ||
== 관련 총론 == | |||
* [[운영체제 기본/가상 메모리|가상 메모리]]: 페이지 테이블·페이지 폴트·쓰기 시 복사. | |||
* [[운영체제 기본/파일과 입출력|파일과 입출력]]: 파일 데이터의 버퍼링과 변경의 가시성. | |||
* [[운영체제 기본/장치 제어와 입출력|장치 제어와 입출력]]: MMIO와 장치 레지스터 접근. | |||
* [[운영체제 기본/프로세스 간 통신|프로세스 간 통신]]: 공유 매핑을 통한 데이터 교환과 동기화. | |||
== 문서 구성 == | == 문서 구성 == | ||
| 16번째 줄: | 22번째 줄: | ||
# [[운영체제 기본/Linux/메모리 매핑/MMIO 장치 매핑|MMIO 장치 매핑]]: 장치 드라이버, 물리 주소 구간, 메모리 속성과 장치 접근. | # [[운영체제 기본/Linux/메모리 매핑/MMIO 장치 매핑|MMIO 장치 매핑]]: 장치 드라이버, 물리 주소 구간, 메모리 속성과 장치 접근. | ||
== 관련 | == 관련 각론 == | ||
* [[운영체제 기본/Linux/파일 시스템 콜|Linux의 파일 시스템 콜]] | * [[운영체제 기본/Linux/파일 시스템 콜|Linux의 파일 시스템 콜]] | ||
* [[운영체제 기본/Linux/파일시스템/페이지 캐시|페이지 캐시]] | * [[운영체제 기본/Linux/파일시스템/페이지 캐시|페이지 캐시]] | ||
{{이전 다음 문서 | {{이전 다음 문서 | ||
2026년 11월 1일 (일) 04:03 기준 최신판
mmap()은 프로세스의 가상 주소 구간을 만들고, 그 구간의 접근을 무엇으로 뒷받침할지 정한다. 대상은 파일 데이터만이 아니다. 새로 마련할 익명 메모리, 파일의 페이지 캐시, 장치의 메모리 매핑 입출력(MMIO) 영역을 같은 주소 공간 안에 배치할 수 있다.
Linux v6.12의 공통 매핑·페이지 폴트 경로를 먼저 살펴보고, 각 매핑이 실제 접근을 처리하는 방식을 비교한다. 시스템 콜과 CPU 예외 진입은 x86-64와 RISC-V RV64를 함께 다룬다.
관련 총론
- 가상 메모리: 페이지 테이블·페이지 폴트·쓰기 시 복사.
- 파일과 입출력: 파일 데이터의 버퍼링과 변경의 가시성.
- 장치 제어와 입출력: MMIO와 장치 레지스터 접근.
- 프로세스 간 통신: 공유 매핑을 통한 데이터 교환과 동기화.
문서 구성
- mmap과 주소 공간: 인자, VMA, 매핑 대상의 연결과 수명.
- 페이지 폴트 처리: CPU 예외, 접근 권한 검사, PTE 설치와 명령 재시도.
- 익명 메모리 매핑: 지연 할당, 0 페이지, fork 이후 COW.
- 파일 매핑과 COW: 파일 읽기, MAP_PRIVATE의 쓰기 시 복사, MAP_SHARED의 변경 반영.
- MMIO 장치 매핑: 장치 드라이버, 물리 주소 구간, 메모리 속성과 장치 접근.