본문 바로가기
Computer Science/운영체제

메모리 관리기법, 페이징과 세그멘테이션

by sy.cho__ 2017. 10. 9.


메모리의 용량은 한정적이므로 여러 응용 프로그램의 사용을 위해

효율적인 메모리 관리 기법이 필요합니다.


메모리 관리기법을 효율적으로 사용하여 외부 및 내부 단편화를 해결할 수 있습니다. 


메모리 관리기법은 여러가지 있는데 그 중 가장 많이 쓰이는 것은 가상 메모리관리 기법입니다. 

이와 관련된 페이징 , 세그멘테이션기법을 살보겠습니다. 


Paging(페이징)


물리메모리를 사용할 때, 페이지를 고정크기의 프레임단위로 나눕니다.

논리메모리도 같은 프레임단위인 페이지로 나누어 프레임과 페이지를 대응하게 하여

연속적인 물리메모리가 아니더라도 원하는 크기의 프레임을 사용할 수 있도록 하는 기능입니다. 


프레임(Frame) : 물리 메모리를 일정한 크기로 나눈 블록

페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록



물리메모리(프레임)와 가상메모리(페이지)를 대응하기 위해 page mapping 과정이 필요합니다. 

이를 위해 Paging table을 설정해야 합니다.


페이징 기법을 사용하면 연속적이지 않은 공간도 활용할 수 있기 때문에 외부단편화(External fragmentation)을 해결할 수 있고,

코드를 쉽게 공유할 수 있다는 장점이 있습니다. 


그리고 페이지 단위를 작게하면 내부 단편화(Internal fragmentation) 역시 해결할 수 있지만

(페이지에 공간을 할당한 후, 남는 공간이 적어지기 때문에)

그 만큼, page mapping 과정이 증가하므로 서로  trade off 관계에 있습니다.




Segmentation(세그멘테이션)



페이징 기법에서는 가상메모리를 같은 크기의 단위로 분할했으나 

세크멘테이션 기법에서는 가상메모리를 서로 크기가 다른 논리적 단위인 세그먼트(Segment)로 분할하고 

메모리를 할당하며 주소 변환을 하게 됩니다. 

(각각의 세그먼트들은 연속적인 공간에 저장되어있습니다)


세그먼트들의 크기가 서로 다르기 때문에 메모리를 페이징 기법처럼 미리 분할해 둘 수 없고,

메모리에 적재될 때 빈 공간을 찾아 할당하는 사용자 관점의 가상메모리 관리 기법입니다.


페이징기법과 마찬가지로 mapping을 위해 세그먼트 테이블을 필요로 합니다.


이 기법은 하나의 세그먼트 단위로 통제가 가능한 장점이 있습니다.

부단편화가 발생하지 않습니다.


그러나 서로 다른 크기의 세그먼트들에 대해 필요시에 메모리에 올리고 필요없을 경우

내리는 작업을 반복하다보면 외부 단편화가 생기는 문제점이 있습니다.

반응형