메모리 관리 기법

숭이·2021년 5월 19일
0

OS

목록 보기
9/11

단편화

  • 외부단편화

    • 총 공간은 여유가 있지만 나뉘어져 있으므로 적재하지 못하는 상태
    • Compaction이라는 압축기법을 통해 분산된 메모리를 큰 블록으로 압축시킨다
      -> 프로세스 주소공간이 동적으로 재배치 되어야 하므로 오버헤드가 크고 비효율적이다.
  • 내부단편화

    • 파티션이 고정되어 있기 때문에 프로세스를 적재했을 때 메모리가 낭비되는 상태

연속 메모리 관리

  • 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되는 방식
  1. 고정 분할기법 : 주기억장치가 고정된 파티션으로 분할
    -> 내부단편화 발생
  2. 동적 분할기법 : 파티션들이 동적으로 생성되며 자신의 크기가 같은 파티션에 적재
    -> 외부단편화 발생

페이징

  • 주 기억장치가 고정된 크기의 조그마한 조각으로 분할되어있고(프레임), 프로세스를 프레임의 크기로 잘게 쪼개서 곳곳에 넣는 방식
  • 페이징을 통해 외부단편화를 해결 할 수 있지만 내부단편화는 존재(프레임의 크기가 작아도 조금의 내부단편화는 존재한다.)
  • 프로세스는 연속적으로 시간에 따라 동작하는데 실제 적재된 곳은 분산되어 있기 때문에 연속적으로 CPU가 인식할 수 있는 기술이 필요!
    -> 페이지 테이블을 사용

세그맨테이션

  • 프로세스를 논리적 내용을 기반으로 나눠 배치하는 방식.
    -> 프로그램을 구성하는 함수, 프로시저, 서브루틴 등 연관된 기승을 수행하는 모듈로 프로세스를 나눔
  • 세그먼트의 크기가 일정하지 않기 때문에 세그먼트 테이블에는 No, base, limit 세개의 값 존재
  • CPU에서 해당 세그먼트의 크기를 넘어서는 주소가 들어오면 인터럽트를 발생시켜 프로세스를 강제종료한다.
  • 기주 기억장치를 나누지 않아 내부단편화는 발생하지 않으나 외부단편화 발생

페이징 Vs 세그맨테이션

  • 페이징은 고정분할방식으로 외부단편화를 극복했지만 내부단편화 존재
  • 세그맨테이션은 가변분할방식으로 내부단편화를 극복하기 위한 방법이지만 외부단편화 존재
  • 세그맨테이션은 보호와 공유에서는 성능이 좋지만 사용도 : 세그맨테이션 < 페이징
    => 메모리의 공간을 예측하기 어렵고 최적의 공간을 찾는 알고리즘이 존재하지 않음
    => 따라서 세그먼트를 페이징 기법으로 나누는 Paged Segmentation이 있음. 하지만 주소변환을 2번해야하는 단점 존재.

0개의 댓글