본문 바로가기
운영체제

페이징(Paging)과 세그맨테이션(Segmentation)이란

by 정구지개발자 2023. 12. 27.
728x90

논리적 주소(logical address)

process가 memory에 적재되기 위한 독자적인 주소 공간을 말한다. 이 떄 논리적 주소는 각 process마다 독립적으로 할당되며, 0번부터 시작된다.

 

물리적 주소(physical address)

process가 실제로 메모리에 적재되는 위치를 말한다.

 

주소 바인딩(address binding)

cpu가 기계어 명령을 수행하기 위해 process의 논리적 주소가 실제 물리적 메모리의 어느 위치에 매핑되어있는지 확인 하는 과정을 말한다.

 

페이징(Paging)

process의 메모리 공간을 일정한 크기의 page단위로 나누어 물리적 메모리의 서로 다른 위치에 page를 저장하는 메모리 관리 기법 이 떄 물리적 메모리를 page와 같은 크기의 frame으로 미리 나누어둔다. 주소바인딩을 위해 모든 프로세스가 각각의 주소변환을 위한 page table을 갖는다.

 

페이징 기법사용시 발생할  수 있는 문제점

메모리 단편화문제-> 물리적 메모리 공간이 작은 조각으로 나눠져서 메모리가 충분히 존재함에도 할당이 불가능한 상태를 보고 메모리 단편화가 발생했다고 말한다.-> 외부단편화 문제가아니라 내부 단편화 문제가 발생할 가능성이 높다.

 

내부단편화문제-> 메모리를 할당할 떄 프로세스가 필요한 양보다 더큰 메모리가 할당되어 프로세스에서 사용하는 메모리 공간이 낭비되는 상황 

ex) 최소 page단위가 10k 일 떄 프로세스는 7k만 필요하지만 할당은 10k로 받기 떄문에 3k가 낭비된다.

 

외부단편화문제->메모리가 할당되고 해제되는 작업이 반복적으로 일어날 떄, 할당된 메모리와 메모리 사이에 사용하지 않는 작은 메모리가 생긴다. 이떄 작은 메모리들의 합인 총 메모리 공간은 충분하지만 실제 할당 가능한 공간은 부족하여 할당할 수 없는 상황.

ex) process 1 porcess  2 process 3을 6k씩 할당하면서 중간중간 2k 1k 3k 같은 작은 메모리 공간이 생겼다고 했을 때, 총 남는` 공간은 6k이므로 process 4를 할당 할수 있어야 하지만 분할하여 할당할 수 없으므로 process4를 할당할 수 없는 상황을 말한다.

 

선행 페이징

프로세스가 생성되자마자 필요한 페이지들을 모두 메모리에 올려 놓는 기법. 데이터를 조회할 떄는 모든 페이지가 전부 있으니 편하겟지만 쓰이지 않는 페이지들도 포함 되어있기 때문에 비효율적이다.

 

요구페이징(demand paging)

프로그램 실행 시 프로세스를 구성하는 모든 페이지를 한꺼번에 메모리에 올리는 것이 아니라 당장 사용될 페이지만을 올리는 방식. 따라서 특정 페이지에 대한 cpu요청이 들어온 뒤 해당 페이지를 메모리에 적재한다.

 

장점

1. 필요한 페이지만 메모리에 적재하기 때문에 메모리 사용량이 감소

2. 시스템이 더 많은 프로세스를 수용할 수 있게 해준다.

3. 물리적 메모리의 제약을 벗어날 수 있다.

 

페이지 폴트(Page Fault)

요구 페이징 기법에서 발생하는 현상으로 프로세스가 실행 중에 필요한 페이지가 물리 메모리에 없을 때 발생한다.

즉 페이지 폴트는 운영체제에서 찾아야할 페이지가 없으니 물리 메모리에 업데이트 시켜달라고 요청하는 인터럽트이다. 이 떄 필요한 페이지가 물리 메모리에 있고 없고를 판단하는 기준을 valid bit라고 한다. 이게 0일 때는 물리 메모리에 데이터가 없다고 에러를 발생시킨다. 필요한 페이지를 디스크에서 가져와 물리 메모리 (ram)에 업데이트 하면 valid bit가 1이라고 업데이트 된다. 

 

 

 

세그맨테이션(Segmentation)

process가 할당받은 메모리 공간을 논리적 의미 단위(segment)로 나누어, 연속되지 않는 물리 메모리 공간에 할당될 수 있도록 하는 메모리 관리 기법이다. process의 메모리 영역 중 code data heap stack등의 기능단위로 segment를 정의한다. 주소 바인딩을 위해 모든 프로세스가 각각의 주소 변환을 위한 segment table을 갖는다.

 

세그맨테이션 기법 사용시 메모리 단편화 문제

->내부 단편화 문제가 발생하지 않는다. 그러나 서로다른 크기의 segment들이 메모리에 적재되고 제거되는 일이 반복되면 외부 단편화 문제가 발생할 가능성이 있다.

728x90

댓글