본문 바로가기

Computer Science/Operating System

[Operating System] Paging

728x90
반응형

Paging

페이징은 외부 단편화에서 고안된 개념이다. 구체적으로 보면 더 근본적인 문제점을 해결한 방법이다. 외부 단편화가 발생하는 이유는 각 프로세스의 크기가 다르며 이로인해 생기는 hole도 제각각이기 때문이다. 페이징은 프로세스의 크기를 페이지를 통해 같은 크기로 만들어서 메모리에 배치하는 개념이다. 

왼쪽은 프로세스를 여러 개의 페이지로 나눈 모습이다. 그리고 이를 오른쪽에 있는 메모리에 배치한다. 모든 페이지의 크기는 같기 때문에 절대 외부 단편화가 일어나지 않는다. 즉 페이지란 프로세스를 일정한 크기의 페이지로 잘라서 메모리에 적재하는 방식이다.

 

Internal Fragmentation 내부 단편화

안타깝게도 페이징에서도 단편화가 일어난다. 메모리의 크기가 10이고 페이지 하나의 크기가 2라면 모든 페이지가 메모리에 알맞게 들어가므로 이때는 내부 단편화가 일어나지 않는다. 하지만 페이지 하나의 크기가 3이라면 페이지와 메모리의 크기가 알맞지 않게되고 1이라는 남는 메모리 공간이 생긴다. 이러한 현상을 내부 단편화라고 한다.

 

물론 외부 단편화보다 발생하는 양이 훨씬 적으며 페이징은 메모리를 100%에 가장 가깝게 사용할 수 있는 방법이다.

 

Page와 Frame

대상에 따라 구분짓기 위해 명칭을 달리한 것일 뿐이다.

  • page : 논리 주소 공간을 동일한 크기로 나눈 것
  • frame : 물리 메모리를 동일한 크기로 나눈 것

 

Page Table

위에 있는 사진을 보면 물리 메모리에 있는 frame들의 위치와 순서가 중구난방인 것을 볼 수 있다. 이는 프로세스를 연속적으로 할당시킬 필요가 없으며 페이징을 통해 메모리를 효율적으로 관리하기 위함이다. 그러나 프로세스를 정상적으로 동작시키려면 각 페이지(프레임)들의 위치를 알아야한다. page와 frame을 매핑시켜주어 프로세스를 정상적으로 실행할 수 있게 해주는 것이 Page mapping Table이다. 

 

다양한 종류의 페이지 테이블이 존재한다. 다음 포스팅에서 하나씩 다뤄보도록 하자.

728x90
반응형