[운영체제] 4일차 가상메모리

nearworld·2024년 2월 25일
0

운영체제

목록 보기
4/5

가상메모리

물리 메모리 공간만 사용시 문제점

외부 단편화

  • 프로세스들이 물리 메모리에 연속적으로 이어져있다고 가정
  • 종료된 프로세스가 있는 경우 프로세스들이 차지하는 공간 사이에 빈공간이 생김

해결법

  • 압축 (compaction)
  • 페이징

    대부분의 컴퓨터들이 페이징 기법 사용

  • 세그멘테이션

압축 (compaction)

  • 기억 조각 모음이라고도 부름
  • 흩어져있는 빈공간들을 모아 하나의 연속된 큰 빈공간을 생성
  • 압축하는 동안에는 다른 일을 할 수 없다
  • 시간이 많이 소모된다

페이징

  • 메모리를 균등 분할
  • 연속적인 가상메모리를 사용하여 물리메모리를 불연속적으로 이용가능
  • 페이지 테이블을 이용하여 물리 메모리와 가상 메모리 맵핑
  • 사용하지 않는 페이지는 보조기억장치에 저장

프레임

  • 물리 메모리를 일정 크기 단위로 분할
  • 이 분할된 공간들은 크기가 같다
  • 물리 메모리에 있는 이 분할 공간들을 프레임이라고 부른다

페이지

  • 가상 메모리를 일정 크기로 분할된 공간
  • 프레임과 크기가 같다
  • 보통 4kb 크기
  • 크기가 큰 페이지는 대형 페이지라 부름

PTE

  • Page Table Entry
  • 페이지 테이블 각 행에 대한 명칭

구성

  • 페이지번호 (32비트 기준 20비트)
  • 프레임번호 (32비트 기준 20비트)
  • 유효비트 0 1
  • 보호비트 r w x
  • 참조비트 0 1
  • 수정비트 0 1

페이지 폴트

  • 필요한 데이터가 메모리에 적재되어있지 않고 보조기억장치에 있는 것을 의미

해결방법

  • 스와핑 시도
  • page in: 보조 기억장치에서 메모리로 페이지 이동
  • page out: 사용하지 않고 오래된 페이지를 보조기억장치로 이동

한계

내부 단편화

  • 페이지의 내부에 사용하지 않는 빈공간이 있는 것을 의미
  • 프로세스의 크기가 105MB라 치고 Page의 크기가 10MB 이면 11개 페이지 할당
  • 마지막 페이지의 5MB가 사용하지 않는 빈공간
  • 페이지 크기를 더 작게 하면 해결 가능
  • 너무 작게 하면 페이지 테이블이 메모리 공간을 많이 차지하는 문제 발생
profile
깃허브: https://github.com/nearworld

0개의 댓글