-
728x90
1. 페이징 기법의 구현
페이징 기법은 고정 분할 방식을 이용한 가상 메모리 관리 기법이다. 균일하게 나뉜 각 영역을
페이지
라고 부르며 번호를 매겨 관리한다. 물리 메모리도 같은 크기의 영역으로 균일하게 나눠 관리하는데, 이 영역은프레임
이라고 한다. 마찬가지로 번호를 매겨 관리한다.페이지 테이블은 하나의 열로 구성된다. 각 행이 페이지의 번호를 나타내기 때문에 추가적인 열이 필요하지 않다. 각 열에는 해당 페이지가 위치한 프레임의 번호가 들어 있다. 페이지가 스왑 영역에 있는 경우는
invalid
로 나타낸다.2. 페이징 기법의 주소 변환
페이징 기법의 주소 변환 과정은 다음과 같다.
- 가상 주소가 어느 페이지의 어느 위치에 있는지 찾는다.
- 페이지 테이블을 이용해 어느 프레임의 어느 위치에 있는지 찾는다.
이를 기호로 나타내면 다음과 같다.
VA = <P, D>
=>PA = <F, D>
D의 값은 동일하다.
페이지 크기 = 프레임 크기
이기 때문이다.- VA : 가상 메모리 주소
- P : 페이지 번호.
가상 주소 / 페이지 크기
의 몫 - D : 페이지(프레임)의 처음 위치에서 해당 주소까지의 거리.
가상 주소 / 페이지 크기
의 나머지 - PA : 물리 메모리 주소
- F : 프레임 번호
3. 페이지 테이블 관리
페이지 테이블은 각 프로세스마다 하나씩 가진다. 메모리 관리자는 모든 테이블에 빠르게 접근 가능해야 하므로 모든 페이지 테이블은 운영체제의 한 영역에 모아서 관리한다.
메모리 관리자는 각 테이블의 시작 주소를 저장하고 있는
페이지 테이블 기준 레지스터
를 이용해 각 페이지 테이블에 빠르게 접근이 가능하다. 이 레지스터는 각 프로세스의 프로세스 제어 블록에 저장되는 데이터다.프로세스의 개수가 많아질수록 관리해야 하는 페이지 테이블도 많아진다. 이는 메모리 용량 부족으로 이어질 수 있기 때문에 페이지 테이블의 일부는 스왑 영역에서 관리되기도 한다.
4. 페이지 테이블 매핑 방식
직접 매핑
페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식.
연관 매핑
페이지 테이블 전체를 스왑 영역에서 관리하는 방식. 이 중 일부만 물리 메모리에 가지고 있다. 일부 내용만 무작위로 뽑았기 때문에 페이지 테이블의 행과 페이지 번호가 일치하지 않는다. 따라서 필요한 열의 개수가 2개이다.
물리 메모리의 페이지 테이블을 모두 검색한 후 페이지를 찾지 못하면 스왑 영역에 있는 페이지 테이블을 검색한다. 모두 검색해야 하므로 시간을 낭비하게 된다.
집합-연관 매핑
연관 매핑과 관리하는 방식은 비슷하지만 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 일부를 물리 메모리에 가져온다. 그리고 이 집합들을 관리하는 집합 테이블을 하나 더 생성한다.
집합 테이블에는 해당 집합이 위치한 주소가 들어 있다. 스왑 영역에 있을 경우엔
I
로 표시한다. 이를 통해 연관 매핑에서처럼 모든 테이블을 검사할 필요가 없어 시간이 단축된다.역매핑
물리 메모리의 프레임 번호를 기준으로 테이블을 구성한다. 프로세스의 개수와 상관없이 1개의 테이블만을 가지기 때문에 테이블의 크기가 다른 방법에 비해 매우 작다.
하지만 프로세스가 가상 메모리에 접근할 때 프로세스 아이디와 페이지 번호를 모두 찾아야 한다. 해당 페이지가 물리 메모리에 올라와 있는지를 알기 위해선 테이블의 모든 값을 조회해야 하기 때문이다. 스왑 영역에 있다는 것도 모든 값을 조회하고 난 이후에 알 수 있기 때문에 속도가 아주 느리다.
728x90'운영체제' 카테고리의 다른 글
28. 세그먼테이션 페이징 혼용 기법 (0) 2021.09.23 27. 세그먼테이션 기법 (0) 2021.09.23 25. 가상 메모리의 개요 (0) 2021.09.22 24. 컴파일과 메모리 관리 (0) 2021.09.22 23. 다중 프로그래밍 환경에서의 메모리 할당 (0) 2021.09.22 댓글