본문 바로가기

Computer Science/Operating System

[Operating System] Contiguous allocation 연속메모리 할당

728x90
반응형

Contiguous allocation

연속메모리 할당이란 가상주소를 물리주소로 변환하는 방법 중 하나이다. 가상주소와 물리주소의 시작점은 다를지라도 데이터를 이루는 주소들의 상대 위치는 같기 때문에 물리주소를 가상주소의 순서와 같도록 배치하는 기법이다. 즉 가상주소와 물리주소의 시작점만 다를뿐 데이터의 offset은 같도록 매핑하는 것이 Contiguous allocation이다.

 

MMU의 memory protection

contiguous allocation을 사용하면 물리메모리의 크기를 넘어가는 경우가 발생한다. 예를 들어 물리메모리의 크기가 1000이고 가상주소의 offset이 500일 때 물리주소의 시작점이 700이라면 물리주소에서 offset은 1200이 된다. 하지만 물리메모리의 크기는 1000이므로 1200은 존재하지 않는 물리주소이다. 이렇게 잘못된 메모리를 참조하지 않도록 막아주는 것이 memory protection이다.

 

MMU에서 memory protection 역할을 하는 것이 limit register이다. limit register에 등록된 크기보다 더 큰 메모리 영역을 참조하려고 하면 MMU는 memory protection fault를 발생시켜서 접근하지 못하도록 한다.

 

contiguous allocation은 만들기가 매우 쉽다. 더해주고 memory protection fault를 체크할 때 limit register와 비교만 해주면 되기 때문이다. 그러나 현재 시스템에서는 사용하지 않는다. 메모리를 효율적으로 사용할 수 없다는 단점이 있기 때문이다. 그리고 이 단점은 Fragmentation(단편화)와 paging이 나오게 되는 계기가 된다.

728x90
반응형