CS\OS

[OS] Memory Management (2)

maedyoung 2025. 5. 5. 19:55
Contiguous Memory Allocation

연속 메모리 할당은 위와 같이 빈 공간에 연속적으로 메모리를 할당하는 방식이다. 하지만 이 문제는 외부 단편화가 발생하는 문제 점이 있다.

외부 단편화란 위와 같이 프로세스가 제거되고 할당되는 과정에서 조금씩 단편화가 발생하여 메모리 공간은 조금씩 남아있으나 연속적으로 할당할 공간이 없어 프로세스를 할당하지 못하는 상황을 말한다. 이런 경우를 해결하기 위해서 두가지의 접근 방법이 있다.

 

Compaction

 

메모리를 정리하면서 빈 공간을 하나의 큰 블록으로 만드는 방식으로 이 방식은 프로그램이 실행중일 때에도 주소를 변경 할 수 있어야 하며 이 경우 메모리가 해제될때마다 계속해서 이동이 발생하기 때문에 성능저하가 심해 쓰이지 않는다.

Paging

 

페이징이란 불연속적으로 주소를 할당하는 방법으로 자주 등장하는 페이지와 프레임이라는 용어가 있다.

Page = 가상 메모리를 일정한 크기로 나눈 블록 

Frame = 물리 메모리를 일정한 크기로 나눈 블록 이며 Page의 크기와 Frame의 크기는 같다.

위 그림처럼 virtual address space에 저장된 page가 MMU를 통해 physical address space에 frame번호로 변환한다.

Page 0은 Frame 1에 page 1은 Frame 4에 할당되어 있다.

이와 같은 방식으로 논리적 주소가 물리적 주소로 변환이 이루어 지는데 이때

p = page number로 이 값은 페이지 테이블의 인덱스 역할을 한다.

d = page offset으로 해당 page가 위치하는 offset을 말한다.

그림과 같이 Virtual address table에서 page number가 2임을 알 수 있고 이는 page table에서 110값을 physical address의 상위 비트에 저장하고 하위 비트는 virtual address table의 하위 bit(page offset)을 그대로 가져온다.

'CS\OS' 카테고리의 다른 글

[OS] Memory Management (1)  (0) 2025.05.05