usadev0813/Daily_CS

페이징과 세그멘테이션을 사용하는 이유와 차이점에 대해 알려주세요

Opened this issue · 0 comments

두 기법 모두 운영체제에서 메모리를 더 효율적으로 관리하고 프로세스 간의 충돌을 방지하기 위해 사용되는 기법이다.

페이징

  • 프로세스의 주소 공간을 고정된 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 할당하는 방식
  • 메모리는 Frame이라는 고정크기로 분할되고, 프로세스는 Page라는 고정크기로 분할됨
  • 페이지와 프레임은 크기가 같음
  • 페이지와 프레임을 대응시키는 Page mapping 과정이 필요하며 paging table을 생성해야 함
  • 연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제 해결
  • 페이지 테이블에는 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장

! 프로세스의 크기가 페이지 크기의 배수가 아닐 경우 마지막 페이지에 내부 단편화가 발생하고 페이지의 크기가 클수록 내부 단편화가 커짐
(페이지 단위를 작게하면 내부 단편화 문제도 해결할 수 있겠지만 page mapping 과정이 많아지므로 효율이 떨어짐)

세그멘테이션

  • 프로세스를 서로 크기가 다른 논리적인 블록 단위인 세그먼트로 분할하여 메모리에 할당
  • 각 세그먼트는 연속적인 공간에 저장
  • 세그먼트들의 크기가 서로 다르기 때문에 프로세스가 메모리에 적재될 때 빈 공간을 찾아 할당하는 기법
  • 페이징과 마찬가지로 mapping을 위한 segment table 필요

! 프로세스가 필요한 메모리 공간만큼 메모리를 할당해주기 때문에 내부 단편화 문제는 발생하지 않지만, 중간에 메모리를 해제하면 생기는 외부 단편화 문제가 발생할 수 있음

차이점

  • paging은 고정 크기를 가짐
  • segmentation은 가변 크기를 가짐
  • paging은 내부 단편화 발생 가능, segmentation은 외부 단편화 발생 가능