-
가상 메모리 (기초)대학/운영체제 2023. 6. 4. 23:13
물리 메모리의 크기와 상관없이 프로세스에 거대한 메모리 공간을 제공하는 기술로,
가상 메모리를 이용하면 프로세스는 운영체제가 어디에 있는지, 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고
메모리를 마음대로 사용할 수 있게 된다.
가상 메모리의 크기는 실제 메모리의 크기와 스왑 영역의 크기를 합친 만큼이 되는데,
가상 메모리 공간에 접근하기 위해서는 동적 주소 변환이 필요하다.
즉, 가상 주소를 실제 주소로 변환해야 데이터를 물리 메모리에 저장할 수 있는 것이다.
가상 메모리의 메모리 분할 방식은
물리 메모리에서 가변 분할 방식을 채택한 것 처럼 세그먼테이션 방식을 채택하는 경우와,
고정 분할 방식을 채택한 것 처럼 페이징을 채택하는 경우가 있다.
버디 시스템처럼 두 단점을 보완한 세그먼테이션-페이징 혼합 기법도 있다.
매핑 테이블
실제 물리 메모리의 주소를 가상 메모리 주소와 치환, 계산하기 위해,
그리고 어떤 데이터가 물리 메모리에 있는지, 스왑 영역에 있는지 알기 위해
매핑 테이블을 두어 메모리 주소를 관리해야 한다.
페이징 기법
위에서 언급한 듯, 고정 분할 방식을 이용한 가상 메모리 관리 기법으로,
물리 주소 공간을 같은 크기로 나누어 사용한다.
가상 주소의 분할된 각 영억을 페이지 라고 하며, 물리 메모리의 각 영역은 프레임 이라고 한다.
페이지와 프레임의 크기는 같기 때문에 페이지는 어떤 프레임에도 배치될 수 있다.
그리고 그 연결 정보가 페이지 테이블에 담겨있게 된다.
(단, 페이지가 스왑 영역에 있는 경우에는 invalid 값이 위치에 저장된다)
페이징 기법에서는 가상 주소를 VA = <P, D>로 표현한다.
- VA: Vertual Address
- P: Page
- D: Distance
페이징 기법의 주소 변환은 VA = <P, D>를 PA = <F, D>로 변환하는 것을 의미한다.
- PA: Physical Address
- F: Frame
- D: DIstance
주소 변환 방법은 다음과 같다.
- F = PageTable(P)
- D = D
즉, 페이지 테이블을 이용해서 페이지를 프레임으로 변환하는 것이다.
D를 그대로 쓸 수 있는 이유은 위에서 언급했 듯, 페이지와 프레임의 크기가 같기 때문이다.