가상메모리

솔다·2022년 12월 2일
0

1. 가상주소, 물리주소

컴퓨터 시스템의 메인 메모리는 M개의 연속적인 물리메모리에 대응되는 물리 주소 PA를 가진다.

페이지와 프레임에 대해서 알아야 한다.
페이지(Page)는 가상 메모리를 일정한 크기로 나눈 블록
프레임(Frame)은 물리 메모리를 일정한 크기로 나눈 블록이다.
이 두개는 동일한 크기로 되어있는데, 같은 크기로 하게되면 페이지에 대응되는 프레임을 좀 더 쉽게 찾을 수 있다.

CPU가 메모리에 접근하기 위한 방식이 두 가지가 있다. 아래의 그림을 보자.

(1) 물리 주소 방식

CPU가 직접 물리 주소를 가지고 접근하는 방식으로 Cray 슈퍼컴퓨터같은 시스템은 이 방식을 여전히 사용한다.

(2) 가상 주소 방식

CPU가 가상 주소 VA를 생성해서 메인 메모리에 접근하는 방식이다. CPU 칩 내에 있는 메모리 관리 유닛(MMU) 이라고 불리는 전용 하드웨어는 VA(virtual adress)를 PA로 번역한다. 이 작업을 '주소 번역' 이라고 한다.

2. 캐싱 도구로서의 VM

VM 시스템은 가상 메모리를 규정된 사이즈 블록 단위로 분할하여 관리한다. 분할된 블록은 가상 페이지라 부른다.

가상 페이지는 분류를 세 가지로 할 수 있다.
1. Unallocated: 할당되지 않은 페이지.
2. Cached: 물리 메모리에 캐쉬되어 할당된 페이지.
3. Uncached: 물리 메모리에 캐시되지 않은 할당된 페이지.

아래의 그림을 보면 쉽게 이해할 수 있다.

SRAM과 DRAM 은 cache miss 시에 처리하는 부담이 다르다. DRAM의 캐시 미스는 디스크에서 처리 되며, 디스크 섹터에서 바이트를 읽는 비용은 DRAM 보다 100,000배 더 느리다. 캐시 미스의 경우에는 운영체제가 이를 처리하게 되는데, SRAM에 비교했을 때 훨씬 복잡한 교체 알고리즘으로 작동한다.

이를 관리하기 위해서 운영체제 소프트웨어와 MMU 내의 주소 번영 하드웨어, 가상페이지를 물리페이지로 매핑하는 페이지 테이블이라고 알려진 물리 메모리에 저장된 자료구조의 조합으로 제공된다. 아래의 그림에 페이지 테이블의 기본 구조를 보여준다.

페이지 테이블은 페이지 테이블 엔트리(PTE)의 배열이다. 가상 주소공간의 각 페이지는 페이지 테이블 내에 고정된 오프셋 위치에 PTE를 갖는다. 편의상 각 PTE가 한 개의 유효비트(valid)를 가지고 있다고 할때, 유효비트가 세팅되어 있지 않았고 Null값이라면, 현재 할당되지 않은 페이지이다.

또한 페이지 테이블은 각 프로세스 마다 하나씩 개별적으로 가지고 있는 정보이다.

3. 메모리 관리 도구로서의 VM

운영체제는 프로세스마다 별도의 페이지 테이블 PTE를 제공한다. 그리고 다수의 가상 페이지가 동일한 물리 페이지에 매핑될 수도 있다.

VM을 사용해서 생기는 효과는 다음과 같다.
1. 링킹이 단순해진다.
2. 로딩이 단순해진다.
3. 공유가 단순해진다.
4. 메모리 할당이 단순해진다.

4. 메모리 보호 도구로서의 VM

사용자 프로세스는 read-only code section을 수정할 수 없어야 한다.

커널의 코드와 데이터 구조를 읽거나 쓸 수 없어야 한다. 명시적 허용이 없다면, 다른 프로세스의 사적 메모리를 읽거나 쓸 수 없어야 한다. 이는 PTE에 허가 비트를 추가하면 간단하게 해결할 수 있다.

출처

"https://charles098.tistory.com/106"
"Computer Systems A Programmer’s Perspective (3rd Edition)"

0개의 댓글