운영체제 기본/가상 메모리: 두 판 사이의 차이
총론 보강: 주소·매핑의 수명, 파일 매핑의 독립 참조와 공유 |
문체 정리: 독서 지시와 반복적 요약 제거 |
||
| 25번째 줄: | 25번째 줄: | ||
사적 파일 매핑의 쓰기는 원래 파일이나 다른 매핑에 자신의 변경을 전달하지 않는다. 공유 파일 매핑은 다른 참여자에게 변경을 전달하는 경로가 되지만, 갱신 순서까지 정해 주지는 않는다. 자료구조를 함께 바꾸려면 동기화가 필요하다. 사적 매핑 역시 원본 파일의 이후 변경까지 차단한 고정 스냅샷을 뜻하지는 않는다. | 사적 파일 매핑의 쓰기는 원래 파일이나 다른 매핑에 자신의 변경을 전달하지 않는다. 공유 파일 매핑은 다른 참여자에게 변경을 전달하는 경로가 되지만, 갱신 순서까지 정해 주지는 않는다. 자료구조를 함께 바꾸려면 동기화가 필요하다. 사적 매핑 역시 원본 파일의 이후 변경까지 차단한 고정 스냅샷을 뜻하지는 않는다. | ||
주소 공간의 논리적 독립성과 실제 물리 페이지의 공유도 양립할 수 있다. 따라서 “매핑된 범위는 얼마나 큰가”, “현재 물리 메모리에 얼마나 올라와 있는가”, “다른 프로세스와 공유하는 부분은 무엇인가”를 구분해야 한다 | 주소 공간의 논리적 독립성과 실제 물리 페이지의 공유도 양립할 수 있다. 따라서 “매핑된 범위는 얼마나 큰가”, “현재 물리 메모리에 얼마나 올라와 있는가”, “다른 프로세스와 공유하는 부분은 무엇인가”를 구분해야 한다. | ||
참고: [https://man7.org/linux/man-pages/man2/mmap.2.html mmap(2)], [https://man7.org/linux/man-pages/man2/fork.2.html fork(2)]. | 참고: [https://man7.org/linux/man-pages/man2/mmap.2.html mmap(2)], [https://man7.org/linux/man-pages/man2/fork.2.html fork(2)]. | ||
| 38번째 줄: | 38번째 줄: | ||
<code>VmSize</code>는 가상 메모리 크기이고, <code>VmRSS</code>는 RAM에 상주하는 메모리를 살펴보는 지표다. 가상 주소 공간에 잡힌 영역이 모두 RAM을 점유하는 것은 아니므로 두 값은 다를 수 있다. | <code>VmSize</code>는 가상 메모리 크기이고, <code>VmRSS</code>는 RAM에 상주하는 메모리를 살펴보는 지표다. 가상 주소 공간에 잡힌 영역이 모두 RAM을 점유하는 것은 아니므로 두 값은 다를 수 있다. | ||
<code>VmRSS</code>를 “이 프로세스만 독점하는 정확한 RAM 사용량”으로 해석하는 것도 틀리다. 공유 페이지가 포함될 수 있고 이 인터페이스의 계측 자체에도 정확도 제약이 있다. 여러 프로세스의 RSS를 단순히 더하면 공유 메모리를 중복해서 셀 수 있다 | <code>VmRSS</code>를 “이 프로세스만 독점하는 정확한 RAM 사용량”으로 해석하는 것도 틀리다. 공유 페이지가 포함될 수 있고 이 인터페이스의 계측 자체에도 정확도 제약이 있다. 여러 프로세스의 RSS를 단순히 더하면 공유 메모리를 중복해서 셀 수 있다. | ||
== 참고 문헌 == | == 참고 문헌 == | ||