가상 메모리

woga·2020년 11월 17일
0

운영체제

목록 보기
5/10

가상 메모리란?

가상 메모리란 어떤 프로세스를 실행할 때 프로세스 전체가 메모리에 적재되지 않고도 실행이 가능하도록 하는 기법입니다.

장점
어떤 프로세스가 차지하는 메모리가 전체 메모리 용량보다 크더라도 지금 현재 필요한 부분만 메모리에 적재되면 실행이 가능하다. 즉, 물리 메모리 용량을 초과하는 프로그램도 동작 시킬 수 있다.

메모리 관리 기법의 하나로, 기계에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다.

물리 주소 공간 : 물리 주소의 범위, 실제 메모리 상에서 유효한 주소를 물리 주소(실 주소)라고 한다.

가상 주소 공간: 가상으로 주어진 주소를 가상 주소(논리 주소)라고 하며, 이 가상 주소의 범위

실제 물리 메모리 구성 : 페이지 프레임

가상 주소 공간(논리적인 페이지) -> 물리 주소 (물리적인 페이지 프레임) : 메모리 관리 장치(MMU)에서 담당

가상 메모리는 크게 세그먼트 방식와 페이징 방식 2가지로 나뉜다.


세그먼테이션 기법

메모리를 서로 크기가 다른 논리적인 블록 단위인 '세그먼트'로 분할하고 메모리를 할당하여 물리 주소를 논리 주소로 변환하는 것을 말한다.

미리 분할 x 메모리 사용할 시점엠 할당된다.

세그먼트란?
서로 다른 크기를 가지는 논리적인 블록이 연속적인 공간에 배치되어 있는 것.

기본적인 메모리 레이아웃 속 커널 - 스택 - 공유라이브러리 - 힙- BSS-데이터-코드로 각각 나누어진 영역을 세그먼트 라고 한다.
이렇게 영역별로 쪼개는 걸 -> 세그먼테이션

서로 다른 크기의 논리적 단위인 세그먼트로 분할 사용자가 두 개의 주소로 지정한다. -> 세그먼트 번호 + 변위

세그먼트 테이블(사용자가 정의한 주소를 실제 주소로 맵핑하는 정보, 페이지 테이블도 있다) 에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장해놓는다.

단점 : 외부 단편화 발생 가능성이 있다. (분할된 크기보다 프로그램 크기가 더 큰 경우)


페이징 기법

하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법이다. 외부 단편화와 압축 작업을 해소하기 위해 생긴 방법론

세그먼테이션과 가상 메모리를 고정된 크기로 나누어 메모리를 관리하는 것이다.

세그먼테이션은 왜 나누나?
외부 단편화가 발생할 경우, 이를 해결하기 위해 세그먼트를 다시 페이징하기 때문이다.

즉, 커다란 크기의 작업을 고정된 일정한 크기로 나누어 잘게 쪼개어 처리하는 것. 이렇게 되면 불연속적인 메모리 요청 등에 유연하게 처리할 수 있다.

이 때문에 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없어 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단편화를 해결할 수 있는 큰 장점이 있다.

하나의 프로세스가 사용하는 공간은 여러개의 페이지로 나뉘어서 관리되고(논리 메모리에서), 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 mapping 되어 저장된다.

페이지 : 잘게 쪼개어진 고정된 크기의 블록

프레임 : 물리 메모리를 페이지와 같은 크기로 나누는 블록 단위

단점 : 내부 단편화 발생 가능성이 있다. (분할된 크기보다 프로그램 크기다 더 작은 경우)

페이지 크기가 1024 B이고 프로세스 A가 3172 B의 메모리를 요구한다면 3개의 페이지 프레임( 1024 * 3 = 3072)하고도 100B가 남기 때문에 총 4개의 프레임이 필요하다.
결과적으로, 4번째 페이지 프레임에는 924B 여유 공간이 남게 되어 내부 단편화 문제가 발생한다.

profile
와니와니와니와니 당근당근

0개의 댓글