Virtual memory management(가상 메모리 관리)
-
paging(페이징) : 가상 메모리와 물리적 메모리를 페이지(고정 크기의 블록)로 나누는 메모리 관리 방법입니다.
- virtual page(가상 페이지) : 프로세스가 사용하는 가상 주소 공간의 페이지입니다.
- physical frame(물리적 프레임) : 물리적 메모리의 페이지입니다.
- page table & supplementary page table : 가상 주소와 물리적 주소 사이의 매핑을 저장하는 데이터 구조입니다.
-
Memory Management Unit(MMU, 메모리 관리 장치) : 가상 메모리 주소와 물리적 메모리 주소 사이의 반환을 담당합니다. 모든 물리적 메모리 참조는 MMU를 통과합니다.
-
Translation Lookaside Buffer(TLB) : MMU가 가상 메모리 주소를 물리적 메모리 계층으로 매핑하는 데 사용합니다. 페이지 테이블은 항상 물리적 메모리에 있으며, MMU가 직접 물리적 메모리에서 메모리 페이지를 찾아보는 것은 지연을 초래할 수 있습니다. 이 때 TLB가 사용됩니다.
-
MMU와 TLB의 차이점!!
MMU가 가상 주소를 물리적 주소로 변환할 때, TLB를 사용하여 최근 변환 결과를 저장하고 재사용합니다. 이로 인해 주소 변환 속도가 빨라집니다.
따라서 MMU와 TLB의 차이점은 MMU가 가상 메모리 주소와 물리적 메모리 주소 사이의 변환을 담당하는 반면, TLB는 MMU의 성능을 향상시키기 위해 사용되는 캐시라는 점입니다.
Page type
- Uninitialized page : 초기화되지 않은 페이지로, 필요한 페이지를 요청하면 페이지 폴트가 발생합니다. 이 때 해당 페이지를 유형에 맞게 초기화하고 프레임과 연결합니다.
- Lazy initialization : 메모리 로드가 필요한 시점까지 지연시키는 설계 방식입니다.
- Anounymous page : 파일로부터 매핑되지 않은, 커널로부터 할당된 페이지입니다. 스택과 힙과 같은 실행 파일에 사용됩니다.
- stack growth : 스택은 높은 주소에서 낮은 주소로 자라는 대표적인 익명 페이지이다.
- file-backed page : 디스크로부터 파일의 내용이 변화없이 읽어져 와서 따로 변화를 백업해 둘 스왑 파일을 만들지 않아도 되는 페이지입니다.
- mmap syscall : mmap 시스템 호출을 사용하여 파일로부터 매핑된 페이지를 생성합니다.
프레임에 연결된다는 것은?
프레임은 물리적 메모리의 고정 크기의 블록을 의미. 프레임에 연결된다는 것은 가상 메모리 주소가 물리적 메모리의 특정 프레임과 매핑되어 해당 프레임의 데이터에 접근할 수 있게 된다는 것을 의미합니다.
Swap in/out
- page replacement policy : 필요한 페이지가 있으나 물리 메모리가 가득 차있어 메모리 일부를 디스크로 보내 교체하는 정책입니다. 이 때 목표는 지역성(locality)를 고려하여 가장 효율적으로 대체하는 것입니다.
- Swap disk : 하드 디스크의 일부 공간을 RAM처럼 사용하는 것입니다. 이는 시스템의 메모리가 부족할 경우에 하드 디스크의 일부 공간을 활용하여 계속 작업을 도와주는 영역입니다.
reference
참고 블로그(virtual memory 전반적으로 이해하는데 도움됨.)