Paging

OH JU HYEON·2022년 7월 15일
1

CS

목록 보기
9/11
post-thumbnail

Paging

Paging이란?

페이징은 프로세스가 할당 받은 메모리 공간을 일정한 페이지 단위로 나눠 물리 메모리에서 연속되지 않는 서로 다른 위치에 저장하는 메모리 관리 방법이다.

페이징 설명에 필요한 용어

페이징을 설명하면서 자주 나오는 용어를 먼저 간단히 정리해 본다.

  1. 논리적 주소, Logical Address : 프로세스가 메모리에 적재되기 생성되는 독자적인 주소 공간이다. 논리적 주소는 각 프로세스마다 독립적으로 0번째 주소부터 할당이 된다.
  2. 물리적 주소, Physical Address : 실제로 메모리에 적재되는 위치 주소를 말한다.
  3. 주소 바인딩, Address Binding : CPU가 기계어 명령을 수행하기 위해 프로세스의 논리적 주소가 실제 물리적 메모리의 어느 위치에 매핑되는지 확인하는 과정을 말한다.

Paging에 대해서..

먼저, 논리적 메모리 상으로는 붙어서 저장이 되어 있다고 하지만 물리적 메모리에서는 붙어 있지 않고 제 각각 저장이 되어 있게 된다. 그 상태에서 주소 바인딩을 위해 모든 프로세스가 주소 변환을 위해 페이지 테이블을 갖게 된다.

Page numFrame num
010
130
220

페이지 테이블은 이렇게 논리적 메모리 주소값(Page num)과 물리적 메모리 주소값(Frame num)을 가지고 있게 된다.

페이징 기법에서는 Page 단위로 메모리 적재가 되기 때문에 물리적 메모리를 페이지와 같은 크기의 프레임으로 미리 나눠둔다. 이렇게 미리 분할하게 되면 메모리 할당이 빠르게 이뤄지게 된다 .

쉽게 말하면 차곡차곡 쌓이는 논리적 메모리가 있고, 메모리 위치에 상관 없이 막 쌓이는(가운데 빈 공간이 있어도)물리적 메모리가 있다. 그리고 논리적 메모리와 물리적 메모리 주소를 매핑시키는 페이지 테이블이 있는 것이다.

Paging의 문제

물리적 메모리 공간을 작은 페이지 단위로 나눴지만 일부분이 애매하게 나눠 메모리가 남은에도 불구하고 할당이 불가능한 상태가 될 수가 있는데 이런 상태를 메모리 단편화라고 한다.

페이징은 내부 단편화가 발생할 수 있다.

메모리 단편화에는 프로세스가 필요한 양보다 더 큰 메모리가 할당 되서 메모리 공간이 낭비되는 내부 단편화가 있고, 메모리에 비어있는 공간 크기가 작아 빈 공간이데 활용하지 못 하는 외부 단편화가 있다.

내부 단편화

페이징은 메모리의 크기를 Page 단위로 미리 나눠 놓는다. 하지만 미리 나눠 놓은 메모리를 모두 사용하지 못 한 경우 내부 단편화라고 한다.

예를 들면 Page의 단위를 10으로 메모리를 나눠두었고 각 Page에 프로세스를 받는다고 했을 때 프로세스가 10이 딱 들어오면 베스트지만 만약 프로세스의 크기가 7이 들어왔다고 가정하게 되면 3만큼의 메모리가 낭비되는 것이다. 이것이 내부 단편화이다.

즉, 준비된 메모리의 크기(사전에 Page 단위로 메모리 크기를 조절한다.)를 들어온 프로세스가 다 채우지 못 한 상태를 말한다.

외부 단편화

외부 단편화는 Segmentation에서 발생하는 문제인데 내부 단편화랑은 조금 다르다.

쉽게 말 하면 메모리에 비어있는 공간 크기가 작아 빈 공간인데 활용하지 못 하는 것이다.

조금 더 설명을 하자면 세그먼테이션은 필요한 메모리만큼 물리적 메모리를 할당해 주는데 10이 메모리에 들어왔다 나가면 10만큼의 자리가 생기게 된다. 이때 다음 프로세스의 크기가 6이 들어왔다. 그럼 남은 10의 자리에서 6만큼 내어주고 메모리의 크기는 4만큼 남게 된다. 하지만 이때 딱 4나 4 이하의 크기를 가진 프로세스가 들어오는 것이 아니라 4보다 큰 5가 들어왔다고 가정하면 준비된 메모리의 크기보다 더 큰 프로세스가 들어왔으므로 남은 4의 메모리 공간은 활용하지 못 하게 되고 이것을 외부 단편화라고 한다.

더 자세한 설명은 이 다음에 세그먼테이션을 학습하게 되면 설명하고 링크를 첨부해 두겠다.

profile
읽기만 해도 이해가 되는 글을 쓰기 위해 노력합니다.

0개의 댓글