메모리 할당

이태곤·2023년 9월 11일
2

Operating System

목록 보기
5/13
post-thumbnail

1. 연속 메모리 할당

  • 프로그램에 필요한 메모리를 연속적인 주소 공간에 할당하는 방식으로, 사용 가능한 메모리가 모두 연속적인 위치에 있다.
  • 고정분할방식: 메모리를 미리 일정한 크기의 프레임으로 나누어 관리하는 방식
    • 물리적 메모리가 이미 나누어져 있으므로 동시에 메모리에 적재할 수 있는 프로세스 수가 정해져 있다.
    • 분할된 크기에 의해 수행 가능한 프로세스의 크기 또한 제한 된다.
    • 내부단편화 발생: 프로세스의 크기보다 분할 된 프레임의 크기가 클 경우 해당 분할에 프로세스를 적재하고 남는 내부 조각
      → 단편화는 추후에 메모리가 남아있음에도 불구하고 필요한 프로그램에 할당하지 못하는 현상이 발생할 수 있다.
  • 가변분할방식: 매 시점 프로그램의 크기에 맞춰 필요한 메모리를 동적으로 할당하는 방식
    • 외부단편화 발생: 프로그램의 크기보다 분할된 크기가 작아 메모리 공간이 비었음에도 프로그램을 적재하지 못하는 경우
      → 작은 메모리들의 합인 총 메모리 공간은 충분하지만 연속적으로 할당 가능한 공간은 부족하여 할당할 수 없는 상황
    • 외부 단편화를 최소화하고 메모리 할당을 효율적으로 관리하기 위해 최초적합, 최적적합, 최악적합과 같은 메모리 할당 알고리즘을 사용
      • 최초적합: 위쪽 또는 아래쪽부터 탐색을 시작해 홀을 찾으면 즉시 할당
      • 최적적합: 필요한 메모리 크기 이상인 공간 중에서 가장 작은 홀부터 할당
      • 최악적합: 필요한 메모리 크기와 가장 차이가 많이 나는 홀부터 할당

2. 불연속 메모리 할당

  • 프로그램이 필요로 하는 메모리를 여러 개의 분산된 위치에 할당하는 메모리 관리 방식으로 현대 운영체제에서 사용하는 방법이다.

  • Paging: 프로세스의 주소 공간을 동일한 크기의 페이지로 나누어 물리적 메모리의 서로 다른 공간에 할당하는 메모리 관리 기법

    • 물리적 메모리를 페이지와 동일한 크기의 프레임으로 미리 나누어 둔다.
      → 빈 프레임이 있으면 어떤 위치에서든 프레임을 할당할 수 있으므로 외부 단편화를 해결
    • 프로그램의 크기가 페이지의 배수가 아닐 수 있으므로 내부 단편화 발생 가능성이 있다.
    • 페이지 테이블을 사용하여 주소 변환을 수행
  • Segmentation: 프로세스의 주소 공간을 의미 단위인 Segment로 나누어 물리적 메모리의 서로 다른 공간에 할당하는 메모리 관리 기법

    • 프로세스는 스택, 힙, 데이터, 코드 영역을 구분할 수 있는데 보통 해당 기능 단위로 세그먼트를 정의한다.
      → Segment의 크기가 균일하지 않아 외부 단편화가 발생할 수 있다.
    • 각각의 Segment를 메모리에 할당 하게 될 때, segment table을 활용한다.
      → segment table: 각 세그먼트에 대한 번호, 시작 주소, 크기 및 기타 필요한 관련 정보를 entry로 가진다.
  • Paged segmentation: 프로세스의 주소공간을 Segment 단위로 나누지만 모두 같은 크기로 나눈다.
    → 두 단계 주소 변환: 세그먼트 번호로 페이지 테이블을 찾고 페이지 내의 오프셋을 사용하여 실제 물리 주소를 계산해야 하므로, 주소 변환을 위한 시간을 더 많이 필요로 하며 성능 저하가 발생할 수 있다.

0개의 댓글