본문 바로가기
ComputerScience/OS

메모리 할당 기법, 페이징

by whitele 2021. 12. 12.
반응형

메모리 관리

 프로세스의 수행을 위해서 메인 메모리에 파일들을 적재해야 합니다. 이를 위한 기법들이 존재하고 각 방법들의 장단점이 존재합니다. 프로세스의 실행을 위해 메모리에는 연산자와 피연산자를 적재하고 필요에 따라 보조 저장장치에서 불러오기도 합니다. 

 

주소 공간

 

현재 대부분의 운영체제에서 인식하는 메모리는 선형적이지만 실제 메모리 상에서는 전혀 다르게 할당되어 있습니다. 메모리 관리 장치(MMU)에 의해 가상 논리 주소와 물리 주소 간에 변환을 수행합니다.

CPU와 메모리

 

단편화

 메모리 할당과 제거가 일어나다 보면 메모리 공간들이 여러 작은 조각들로 나뉠 가능성이 높아집니다. 이 작은 공간들을 모으면 하나의 큰 메모리가 되어 사용할 수 있지만 나뉘게 되면 버려지는 공간이 됩니다. 

외부 단편화

 선형적으로 프로세스에게 필요한 만큼 할당하게 되면 할당된 메모리 간에 빈 공간이 발생할 수 있습니다. 이것을 외부 단편화라고 합니다.

외부 단편화

내부 단편화

 외부 단편화를 해결하기 위해 일정한 크기만큼 메모리를 할당하게 할 수 있습니다. 예를 들어 메모리 블록이 5이고 42 크기의 메모리를 요청할 경우 45의 메모리를 할당하게 됩니다. 외부 단편화는 발생하지 않지만 3만큼의 낭비되는 공간이 발생합니다. 이것을 내부 단편화라고 합니다.

내부 단편화

 

페이징

 주기억장치에는 프레임이라 부르는 동일한 크기의 블록으로 나눕니다. 실제 물리 메모리를 지칭하는 용어로 페이징과는 다릅니다. 가상 메모리인 페이지는 프레임과 동일한 크기입니다.

 물리 메모리 : 프레임

 가상 메모리 : 페이지

페이징의 주소는 P(p, d)입니다. 페이지 번호 p (주소)와 그 주소부터의 d, 오프셋(offset, 위치)으로 구성됩니다.

 

페이지 주소

 페이지 번호는 페이지 테이블에 저장되며 페이지 테이블에는 페이지 번호와 물리 주소가 있는 프레임 번호가 담겨있습니다. 페이지 테이블에서 프레임으로 바꾼 뒤 변위를 합하면 실제 물리 주소가 나옵니다. 

 

 페이지는 외부 단편화가 발생하지 않지만 반대로 내부 단편화가 발생합니다. 할당이 정수배로 할당되기 때문에 페이지 테이블 중 마지막 페이지 공간은 모두 할당되지 않습니다. 

 만약 한 번에 할당하는 페이지 크기가 매우 크다면 더더욱 남는 공간이 발생하게 됩니다. 그렇다고 페이지의 크기가 너무 작다면 페이지 테이블의 크기가 너무 커지게 됩니다. 때문에 적당한 페이지 크기를 지정해야 합니다. 위 사진과 같이 프로세스가 10의 크기를 할당받으려고 할 때 페이지 크기가 4인 경우 2만큼의 내부 단편화가 발생하지만 페이지 크기가 8인 경우 6 만큼 내부 단편화가 발생하게 됩니다.

 보통은 4KB를 지원하며 운영체제와 램에 따라 다를 수 있습니다. 

 

TLB transation look-aside buffers

 페이징을 할 때 페이지 테이블을 참조하여 페이징을 수행하게 됩니다. 메인 메모리에 저장하게 되면 메모리 액세스 시간이 느려 지연이 발생할 수 있습니다. 때문에 TLB라는 특수 하드웨어 캐시가 사용됩니다.  명령어 파이프라인에 일부로 동작하여 매우 빠르게 동작하며 이 때문에 TLB는 작은 크기를 유지하게 됩니다. 여러 단계를 나누어서 TLB 항목의 개수를 늘릴 수 있습니다.

 

페이징 계층

 저장공간의 증가는 페이지 테이블 크기의 증가로 이어집니다. 그렇게 되면 해당 페이지를 찾는데도 시간이 걸리게 됩니다. 그 해결방안의 하나로 계층적 페이지 테이블을 사용하는 것입니다. 2단계의 페이지 테이블을 예로 들면 다음과 같습니다. 2개의 페이지 번호를 가지고 마지막의 오프셋을 가집니다.

계층적 페이지

 

728x90
반응형

댓글