[운영체제] Physical Memory - Allocation

Judy·2022년 12월 12일
0

운영체제

목록 보기
10/14

물리적인 메모리 관리를 어떻게 할 것인가

Allocation of Physival Memory

메모리는 일반적으로 두 영역으로 나누어 사용

  • OS 상주 영역: 높은 영역, 커널 코드
  • 사용자 프로세스 영역: 낮은 영역, 사용자 코드

사용자 프로세스 영역의 할당 방법

1) Contiguous allocation

  • 연속 할당
  • 프로그램이 메모리에 통째로 올라가는 방법
  • 프로세스가 메모리에 연속적인 공간에 적재
  • Fixed partition allocation, Variable partition allocation

2) Noncontiguous allocation

  • 불연속 할당
  • 하나의 프로세스가 메모리 영역에 분산되어 올라가는 방법
  • 현재 시스템에서 사용하는 방법
  • Paging, Segmentation, Paged Segmentation

Contiguous allocation

1) Fixed partition allocation

  • 고정 분할 방식
  • 사용자의 프로그램이 들어갈 부분을 영구적 분할(partition)로 나눠놓는 방법
  • 균일한 크기인 방식도 있고 여러 크기의 방식도 존재
  • 분할 당 하나의 프로그램을 적재
  • 낭비되는 메모리 조각이 발생 -> 융통성이 없음
    - 외부 조각: 크기가 너무 작아서 프로그램이 들어가지 못하는 공간
    - 내부 조각: 프로그램을 넣었는데 남는 공간

2) Variable partition allocation

  • 가변 분할 방식
  • 프로그램이 들어갈 부분을 나눠놓지 않는 방식
  • 프로그램이 실행될 때마다 차곡차곡 올림
  • 이전 올라간 프로그램이 종료되어 빈 공간이 생겨도 다음 프로그램이 더 크면 사용할 수 없음(외부조각)

Hole

  • 가용 메모리 공간인 다양한 크기의 Hole이 메모리 여러 곳에 흩어져 있게 됨
  • 운영체제는 두 정보를 알고 있어야 함 - 할당된 공간 / 가용 공간(hole)

➡️ 가용 공간(Hole) 중 어디에 프로그램을 넣을까?

Dynamic Storage Allocation Problem

가변 분할 방식에서 크기가 n인 프로그램 할당을 만족하는 가장 적절한 hole을 찾는 문제

(1) First fit

  • 크기가 n이상인 공간 중 최초로 찾아지는 hole에 할당

(2) Best fit

  • 크기가 n이상인 공간 중 가장 작은 hole을 찾아 할당
  • hole이 크기순으로 정렬되지 않은 경우 모든 hole을 탐색해야 함
  • 아주 작은 hole들이 생성됨

(3) Worst fit

  • 가장 큰 hole에 할당
  • 모든 hole을 탐색해야 함
  • 상대적으로 큰 hole들이 생성됨
  • First fit과 Best fit에 비해 속도와 공간 이용 측면에서 비효과적임

Compaction

외부 조각을 해결하는 방법

  • hole들을 한 곳으로 몰아 하나의 큰 hole로 만들기
  • 많은 프로그램을 바인딩해야 하는 비용이 많이 드는 방법
  • 최소한의 메모리 이동을 찾는 것도 매우 복잡한 문제
  • 실행 시간에 동적으로 재배치가 가능한 런타임 바인딩 방식인 경우에만 가능


참고 링크
반효경 교수님 강의

profile
iOS Developer

0개의 댓글