페이징(Paging) 기법

  • 프로세스의 주소 공간을 동일한 사이즈의 페이지 단위로 나누어 메모리에 불연속적으로 저장하는 기법.
  • 페이징 기법에서는 물리적 메모리를 페이지 크기와 동일한 크기의 프레임(frame)으로 미리 나누어둔다
    메모리에 올리는 단위가 동일한 크기의 페이지 단위이므로, 메모리를 같은 크기로 분할해두면, 빈 프레임이 있을때 언제든지 사용가능함!
    -> 연속할당기법에서 발생했던 동저 메모리 할당 문제가 발생하지 않는다.
  • 페이징기법에서는 하나의 프로세스라 하더라도, 페이지 단위로 물리적 메모리에 올리는 위치가 상이하므로 논리적 주소를 물리적 주소로 변환하는 작업이 필요하다. (이 작업은 페이지 단위로 이루어진다.)
    즉, 특정 프로세스의 몇번째 페이지가 물리적 메모리의 몇번째 프레임에 들어있는지에 대한, 페이지별 주소 변환 정보를 유지하고 있어야 한다.
    따라서, 페이징 기법에서는 모든 프로세스가 각각 주소 변환을 위한 페이지 테이블을 가진다.

세그멘테이션(Segmentation) 기법

  • 프로세스의 주소 공간을 의미 단위인 세그먼트(segment)로 나누어 물리적 메모리에 올리는 기법.
  • 하나의 프로세스를 구성하는 주소 공간을 일반적으로 코드(code), 스택(stack), 데이터(data) 등의 의미있는 단위로 나누어 볼 수 있다.
    세그먼트는 이와 같이 주소 공간을 기능 단위 도는 의미 단위로 나눈것을 뜻함.
    프로세스의 주소공간 전체를 크게 하나의 세그먼트로 볼 수 있고, 일반적으로는 코드, 데이터, 스택 등의 기능단위로 세그먼트를 정의하게 된다. 많게는 프로그램을 구성하는 함수 하나하나를 각각 세그먼트로 정의할수도 있다.
  • 세그먼트는 특정 크기 단위로 나눈것이 아니라, 의미를 가질 수 있는 논리적인 단위(logical unit)로 나누어지기 때문에 크기가 균일하지 않다. 따라서, 크기가 균일하지 않는 세그먼트들을 메모리에 적재하는 부가적인 메모리 관리 오버헤드가 생긴다.
  • 세그먼트는 의미 단위로 나누어져있기 때문에, 공유와 보안의 측면에서 페이징 기법에 비해 훨씬 효과적이다.
    주소 공간의 일부를 공유하거나 특정 주소 공간에 읽기 전용 등의 접근 권한 제어를 하고자 할 경우, 이는 어떤 의미 있는 단위로 이루어지지 단순히 크기 단위로 수행하는 일이 아니기 때문이다.
  • 세그멘테이션 기법에서는 프로그램을 의미 단위로 나누게 된다. 그리고 그 크기가 균일하지 않기 때문에 물리적 메모리 관리에서 외부 조각이 발생하게 되며, 세그먼트를 어느 가용 공간에 할당할 것인지를 결정하는 문제가 발생한다.
  • 세그먼트를 첫 번째 가용 고간에 할당하는 최초 적합(first fit)방식과 세그먼ㅌ의 크기보다 크거나 같은 가용 공간 중 가장 작은 공간에 할당하는 최적 적합(best fit)방식이 있다.

페이지드 세그먼테이션(Segmentation With Paging) 기법

  • 페이지드 세그먼테이션 기법은 페이징기법과 세그먼테이션 기법의 장점만을 취한 기법이다.
    세그멘테이션 기법에서처럼 프로그램을 의미 단위의 세그먼트로 나눈다. 단, 세그먼트가 임의의 길이를 가질 수 있는 것이 아니라 반드시 동일한 크기의 페이지드르이 집합으로 구성되어야 한다.
    그리고, 물리적 메몰에 적재하는 단위는 페이지 단위로 한다.
  • 페이지드 세그먼테이션 기법에서는 하나의 세그먼트 크기를 페이지 크기의 배수가 되게 함으로써, 세그먼테이션 기법에서 발생하는 외부 조각의 문제점을 해결하며, 동시에 세그먼트 단위로 프로세스간의 공유나 프로세스 내의 접근 권한 보호가 이루어지도록 함으로써 페이징 기법의 약점을 해소한다.
  • 페이지드 세그먼테이션 기법에서는 주소 변환을 위해, 외부의 세그먼트 테이블과 내부의 페이지 테이블 두 단계의 테이블을 이용한다.

출저