-
가상 메모리
가상 메모리는 크기가 다른 여러 물리 메모리에서 일관적으로 프로세스를 실행하는 기술이다.
가상 메모리 시스템의 모든 프로세스는 자신이 물리 메모리에 어느 위치에 있는지에 상관없이 0에서부터 시작하는 연속된 메모리 공간을 가진다. 이러한 주소는 가상 주소 또는 논리 주소라 한다.
가상 메모리는 이론상 무한대지만, 실제로는 물리 메모리의 크기와 스왑 영역의 크기의 합로 한정되며, CPU에 비트(32bit/64bit)에 따라 결정된다. 스왑 영역은 하드디스크에 존재하지만 메모리 관리자가 관리하는 영역으로 메모리의 일부로 취급된다.
물리 메모리가 꽉 찬 상태에서 새로운 프로세스를 실행할 때는 일부 기존 프로세스를 스왑 영역으로 보내는데, 이를 스왑 아웃(swap out)이라 한다. 몇 개 프로세스가 작업을 마치면 스왑 영역에서 프로세스를 메모리로 가져오는 것을 스왑 인(swap in)이라 한다.
가상 주소를 물리 주소로 변환하는 작업을 동적 주소 변환(Dynamic Address Translation, DAT)라 하고, 이를 거치면 프로세스가 아무 제약 없이 데이터를 물리 메모리에 배치할 수 있다. 이 과정에서 메모리 관리자는 물리 메모리를 어떤 방법으로 나눌지, 사용자 프로세스를 어디에 배치할지, 부족한 물리 메모리를 어떻게 처리할지 등의 문제를 처리한다.
메모리 분할 방식
가상 메모리 시스템도 일반 프로세스에게 메모리를 할당하기 위해 가변 분할 방식과 고정 분할 방식을 사용하는데, 전자를 세그멘테이션(segmentation), 후자를 페이징(paging)이라 한다. 세그멘테이션은 외부 단편화, 페이징은 페이지 관리의 어려움 등의 문제가 있기 때문에, 보통 가상 메모리 시스템에서는 두 방식을 혼용한다.
매핑 테이블(mapping table)
동적 주소 변환을 위해서, 메모리 관리자는 가상 주소와 물리 주소를 일대일로 매핑할 때 사용할 테이블을 관리한다. 이를 매핑 테이블이라 한다. 세그멘테이션 방식을 사용하면 세그멘테이션 테이블, 페이징을 사용하면 페이징 테이블이라 한다.
Reference
'운영체제' 카테고리의 다른 글
페이징 기법 (0) 2022.07.15 메모리 분할 방식 (0) 2022.07.08 단일 프로그래밍의 메모리 할당 (0) 2022.07.06 메모리 관리 및 메모리 주소 (0) 2022.07.03 교착 상태 - (2) 해결 방법 (0) 2022.06.19