가상 메모리의 핵심은 '메모리에 하나의 프로세스가 다 올라오지 않아도 실행할 수 있다' 는 것이다.
먼저 프로그램은 HDD와 같은 저장장치에 저장되어 실행하기 위해 RAM과 같은 메모리에 올라온다.
이것이 프로세스를 실행하기 위한 방법인데 RAM의 크기가 프로세스의 크기보다 작다면 실행할 수 없을까? 그러면 우리는 RAM의 용량에따라 실행할 수 있는 파일이 한정될까?
답은 아니다. 이러한 문제를 해결하기 위한 개념이 바로 가상메모리이다. 가상메모리는 프로그램이 저장되어있는 HDD에서 RAM으로 프로세스의 일부분만 가져온다.
RAM은 이전에 배웠던 메모리 오버레이를 이용하여 일부분의 프로세스만 가지고 프로세스를 실행할 수 있다. 이렇게 일부를 하드디스크에 남기고 필요한 부분만 사용한다면 여러개의 프로세스를 실행해도 메모리의 용량이 충분할 것이다.
1. 가상 메모리의 개요
1-1 가상 메모리 시스템
1) 가상 메모리
- 물리 메모리의 크기와 상관없이 무한의 메모리 공간을 가짐 ( 실제로는 물리메모리 + 스왑영역)
- 가상 메모리의 주소는 메모리의 어느 위치에 있던 0번지부터 시작하는 연속된 메모리 공간을 가짐
- 물리 메모리의 주소가 아닌 가상의 메모리에 주소를 가짐
- 가상 주소를 물리 주소로 변환할 수 있음
- 세그먼테이션 : 물리 메모리에서의 가변 분할 방식
- 페이징 : 물리 메모리에서의 고정 분할
2. 페이징 기법
2-1 페이징 기법의 구현
페이징 기법 : 고정 분할 방식을 이용한 가상 메모리 관리 기법
페이지 : 가상주소의 분할된 영역
프레임 : 물리주소의 분할된 영역
※ 물리메모리와 가상메모리의 나눈 영역의 크기는 같다
2-2 페이징 기법의 주소 변환
1) 주소 변환 과정
1. 가상주소의 페이지 위치를 찾는다 ex) 가상주소 30번지는 페이지 3의 0번째
2. 페이지 테이블을 이용해 해당 페이지가 몇 번 프레임에 있는지 확인한다 ex) 페이지 3은 프레임 1이다
3. 해당 프레임을 찾았으면 처음 몇 번째 위치와 같은 곳을 찾는다 ex) 페이지 3의 0번째에서 0번째에 해당
2) 정형화된 주소 변환
VA=<P,D> → PA=<F,D>
가상주소 = <페이지,거리>
실제주소 = <프레임,거리>
2-3 페이지 테이블 관리
→ 여러개의 프로세스가 물리 메모리에 올라와 실행되고 있기 때문에 관리자는 페이지 테이블을 이용해 프로세스의 가상주소를 물리주소로 계속 변환해 주어야 함
→ 빠른 접근을 위해 페이지 테이블은 물리메모리의 운영체제 영역에 속함
→ 하나의 프로세스는 하나의 페이지 테이블을 가짐
→ 페이지 테이블의 크기도 작지 않기 때문에 스왑영역으로 옮겨지기도 함
→ 페이지 테이블의 시작 주소를 페이지 테이블 기준 레지스터에 보관
페이지 테이블의 구성
- 페이지 번호
- 프레임 번호
- 페이지 테이블 엔트리
2-4 페이지 테이블 매핑 방식
- 직접매핑 : 페이지 전체가 물리 메모리에 존재
→ 물리 메모리의 용량이 충분할 때 사용 / 주소 변환이 빠름
- 연관매핑 : 페이지 전체를 스왑영역에 존재
→ 물리 메모리의 공간이 부족할 때 스왑영역에 보관하고 무작위로 테이블을 가져와 물리 메모리로 보관
→ TLB 히트 : 무작위로 가져온 테이블이 사용됬을 때
→ TLB 미스 : 무작위로 가져온 테이블에 필요한 테이블이 없을 때
- 집합-연관매핑 : 페이지 전체를 스왑영역에 보관하나 연속적인 테이블을 물리 메모리에 가져옴
→ 연관매핑의 단점을 보완한 매핑방법
→ VA = <P1,D> 가 아닌 VA = <P1,P2,D> 로 주소를 세분화
- 역매핑
→ 물리 메모리의 프레임 번호를 기준으로 테이블을 구성
→ 테이블이 하나만 존재하기 때문에 매우 가벼움
→ 테이블이 <프레임번호, 프로세스 아이디, 페이지 번호> 로 구성
→ 페이지를 다 검색한 후에 저장장치에 접근하기 때문에 시간 낭비
'OS > 쉽게 배우는 운영체제' 카테고리의 다른 글
가상 메모리 관리 (1) (0) | 2022.03.23 |
---|---|
가상 메모리의 기초(2) (0) | 2022.03.21 |
메모리 관리 (2) (0) | 2022.03.11 |
메모리 관리 (1) (0) | 2022.03.10 |
교착 상태 (2) | 2022.03.08 |
댓글