안녕하세요 웹 프론트엔드 개발자 설탕시럽입니다.
운영체제에서 "가상 메모리 관리 - 페이징"에 대해 학습한 내용을 공유하려고 합니다.
가상 메모리
물리 메모리 크기와 상관없이 프로세스에게 충분한 메모리 공간을 제공하는 것처럼 보이게 하는 기술. 가상메모리라는 기술을 통해 프로세스가 올라갈 메모리의 위치를 신경 쓰지 않아도 되며, 스왑영역을 활해서 물리 메모리의 남은 공간보다 더 큰 프로세스를 실행가능하게 해 줍니다.
스왑 영역
스왑영역은 물리 메모리의 공간보다 더 큰 프로세스를 실행하기 위해 저장장치에 위치하게 됩니다. 원래 보류상태의 프로세스가 저장되기 위한 공간이었지만 가상메모리 기술을 활용하기 위해 일반 프로세스도 할당이 가능해집니다. 저장장치에 있지만, 파일관리자, 입출력 관리자가 아닌 메모리 관리자가 관리하며 필요에 따라 물리 메모리와 합쳐서 사용하게 됩니다. 프로그램 입장에서는 프로세스가 올라갈 메모리 위치를 고려하지 않아도, 메모리 관리자가 변환해서 적당한 위치에 + 물리메모리의 크기를 신경 쓰지 않아도 됩니다.
메모리 관리자의 역할
- 동적 주소 변환 : 논리 주소를 물리 주소로 변환
- 요구 페이징 : 스왑 영역의 데이터를 가져올 시기 결정
- 프레임 할당 : 각 프로세스에게 물리 메모리 할당
- 페이징, 세그멘테이션 : 가져온 데이터를 배치
- 페이지 교체 알고리즘 : 물리 메모리 부족시 처리 알고리즘
페이징
고정분할 방식을 이용해서 가상메모리를 관리하는 기법
프로세스가 메모리에 할당될 때 고정된 크기로 나누어서 할당하는 방식을 페이징. 나누어지는 단위를 페이지라고 하며 번호를 매겨서 관리
. 메모리에서도 페이지와 같은 크기로 구분지어서 프레임이라고 명명하며 똑같이 번호를 매겨서 관리하게 됩니다. 페이지와 프레임 둘 다 같은 크기로 나누었기 때문에 페이지는 어떠한 프레임에도 배치될 수 있으며, 배치되어 있는 정보는 페이지 테이블에 저장됩니다.
페이징 기법 주소 변환
가상 주소로 메모리에 접근하기 위해서 페이지 테이블을 활용해서 물리 주소로 변환을 해야 합니다.
1. 가상주소 VA(Virtual Address)는 Page 넘버와 Distance(페이지 처음위치부터 해당 주소까지 거리)를 가지고 있습니다.
2. 할당된 Page 넘버가 몇 번 프레임에 할당되었는지 페이지 테이블을 통해 확인합니다.
3. 받아온 프레임 번호 + Distance는 프로세스가 탑재되어있는 물리 주소 PA(Physical Address)가 됩니다.
16bit 시스템에서의 가상 주소 변환 예시
예를 들어, 16bit 시스템에서 페이지의 크기를 2^10으로 잡았다고 가정해 보겠습니다. 그렇다면 가상주소는 6bit는 페이지 번호, 10bit는 페이지 내에서의 나머지 거리에 대한 정보를 가지게 됩니다. 6bit로 페이지 번호를 구분 짓기 때문에 메모리 내에서 2^6 = 64개의 프레임을 갖게 됩니다.
페이지 테이블은 총 64개의 엔트리를 가지게 되며, 해당 페이지 테이블을 PTAR이 관리하고 가상 주소의 페이지 번호를 PTAR을 통해 프레임 번호로 변환시킵니다.
재배치 레지스터
가상주소 방식 전, 상대 주소가 실제 물리주소로 변환되기 위해서는 재배치 레지스터를 활용했습니다. 재배치 레지스터는 상대 주소를 물리주소로 변환시켜주는 역할을 하기 위해 시작 물리주소를 저장하고 있었으나 가상주소 방식부터 그 역할을 PTBR이 맞게 되었습니다.
Page Table Base Register( PTBR )에서 각 페이지 테이블의 시작주소를 관리하고, 기존의 재배치 레지스터가 물리메모리 주소로 변환하는 과정을 대신하게 됩니다. 물리 메모리의 크기가 작을 때는 프로세스뿐 아니라 페이지 테이블의 일부도 스왑영역으로 옮겨지게 되며, 프로세스는 물리 메모리에 접근하기 위해 page 번호를 PTBR에 접근하여 프레임 번호를 받아 옵니다.
페이지 테이블 매핑 방식
1. 직접 매핑
페이지 테이블 전체가 물리 메모리에 올라가며, 부가 작업 없이 바로 주소변환이 가능하다는 장점이 있습니다. 빠르지만 메모리를 다른 방식에 비해 많이 차지한다는 단점이 있습니다.
2. 연관 매핑
페이지 테이블의 일부분만 물리 메모리에 남기고 나머지는 스왑영역에 저장하는 방식.
물리 메모리의 여유공간이 적을 때 사용하며, 일부만 가져오기 때문에 페이지 번호와 프레임 번호 둘 다 표시해야 합니다.
주소 변환 시 테이블 내 모든 내용을 검색하며 만약 있다면 물리 주소로 변환하지만 (HIT), 만약 없다면 스왑영역으로 가서 찾아야 합니다.(MISS) 검색 실패 시, 스왑영역에서 찾아야 하는 시간 낭비가 있다는 단점이 있습니다.
3. 집합-연관 매핑
페이지 테이블을 n개 씩 자르고, 이를 관리하는 페이지 테이블을 하나 더 생성하게 됩니다. 가상 주소는 관리하는 페이지 테이블에 접근하는 페이지 테이블에 매치할 값을 가지며 우선 관리하는 페이지 테이블에 접근합니다. 만약 자른 페이지 테이블이 물리 메모리에 있다면(HIT) 접근해서 프레임 번호를 받아오고 없다면 스왑영역으로 갑니다.(MISS)
관리하는 페이지 테이블을 디렉터리 테이블이라고 하며, 해당 테이블만 확인해도 스왑영역에 있는지, 물리 메모리에 있는지 확인할 수 있습니다.
4. 역매핑
물리메모리의 프레임번호를 기준으로 테이블을 작성
프로세스 번호와 페이지 번호를 통해 테이블을 찾고, 찾은 값의 인덱스를 프레임 번호로 가져오게 된다. 테이블에 해당 값을 통해 찾을 수 없다면 페이지가 스왑영역에 있다는 뜻이다. 프로세스 수와 상관없이 테이블이 하나만 존재하기 때문에 테이블의 크기는 매우 작지만, 프로세스가 가상메모리에 접근할 때 프로세스 아이디와 페이지 번호를 매우 찾아야 하므로 느리다.
페이지 크기와 기능
메모리가 커지면서 페이지 크기도 커지게 됩니다.
내부단편화 : 페이지가 작을수록 내부단편화가 줄어듦. 메모리가 작다면? 페이지 하나하나가 크면 치명적임
페이지 테이블 크기 : 페이지가 클수록 페이지 테이블 크기가 작아짐
페이지 fault 발생률 : 페이지가 큰 편이 유리, locality 성질과 관련(추후 다룰 예정)
Swapping 시간 : 페이지가 클수록 줄어듦, 하드디스크 seek time과 관련(추후 다룰 예정)
'컴퓨터 기초 > 운영체제' 카테고리의 다른 글
가상 메모리 관리 - 세그멘테이션, 혼용 기법 (0) | 2023.06.04 |
---|