[운영체제] 메모리 할당 기법

김진웅·2023년 12월 23일

Operating System

목록 보기
3/3
post-thumbnail

메모리 할당(memory allocation)


  • 운영체제가 새 프로세스를 실행시키거나 실행 중인 프로세스가 메모리를 필요로 할 때, 물리 메모리를 프로세스에게 할당함

  • 프로세스의 실행은 할당된 물리 메모리에서 이루어짐

    • 프로세스의 코드(함수), 변수, 스택, 동적 할당 공간 액세스 등




메모리 할당(memory allocation) 기법




  • 연속 메모리 할당

    • 프로세스별로 연속된 한 덩어리의 메모리 할당
    • 고정 크기 할당
      • 메모리를 고정 크기의 파티션으로 나누고 프로세스당 하나의 파티션 할당
      • 파티션의 크기는 모두 같거나 다를 수 있음
      • 메모리가 파티션들로 미리 나누어져 있기 때문에 고정 크기 할당이라고 부름
    • 가변 크기 할당
      • 메모리를 가변 크기의 파티션으로 나누고 프로세스당 하나의 파티션 할당
      • 각 프로세스의 크기에 맞게 파티션을 동적 할당함

  • 분할 메모리 할당

    • 프로세스에게 여러 덩어리의 메모리 할당
    • 고정 크기 할당
      • 고정 크기의 덩어리 메모리를 여러 개 분산 할당.
      • 대표적으로 페이징(paging) 기법이 있음
    • 가변 크기 할당
      • 가변 크기의 덩어리 메모리를 여러 개 분산 할당
      • 대표적으로 세그먼테이션(segmentation) 기법이 있음




단편화(fragmentation)


  • 단편화(fragmentation)

    • 프로세스에게 할당할 수 없는 조각 메모리들이 생기는 현상, 조각 메모리를 홀(hole)이라고 부름

  • 내부 단편화(internal fragmentation)

    • 할당된 메모리 내부에 사용할 수 없는 홀이 생기는 현상

    • 할당받은 파티션의 크기보다 작은 프로세스를 적재하는 경우, 파티션 내부에 홀 발생


  • 외부 단편화(external fragmentation)
    • 할당된 메모리들 사이에 사용할 수 없는 홀이 생기는 현상

    • 가변 크기의 파티션이 생기고 반환되는 여러 번의 과정에서 여러 개의 작은 홀 생성

    • 홀이 적재하려는 프로세스의 크기보다 작으면 할당이 불가능함




세그먼테이션(segmentation) 기법


  • 세그먼트(segment)

    • 프로그램을 구성하는 논리적 단위, 세그먼트마다 크기 다름

  • 세그먼테이션 기법
    • 프로세스를 논리 세그먼트들로 나누고, 각 논리 세그먼트를 물리 메모리(물리 세그먼트)에 할당하는 메모리 관리 기법

    • 분할 메모리 할당 방식 중 가변 크기 할당 기법

    • 각 논리 세그먼트는 물리 세그먼트에 매핑

    • 외부 단편화가 발생함(내부 단편화 발생 x)

      • 세그먼트들의 크기가 같지 않기 때문에 세그먼트와 세그먼트 사이에 발생하는 작은 크기의 홀




페이징(paging) 기법


  • 페이지와 프레임

    • 프로세스의 주소 공간을 0번지부터 동일한 크기의 페이지(page)로 나눔
    • 물리 메모리 역시 0번지부터 페이지 크기로 나누고, 프레임(frame)이라고 부름
    • 페이지 테이블
      • 각 페이지에 대해 페이지 번호와 프레임 번호를 1:1로 저장하는 테이블
      • 프로세스마다 존재

  • 페이징 기법

    • 프로세스의 주소 공간과 물리 메모리를 페이지 단위로 분할하고, 프로세스의 각 페이지를 물리 메모리의 프레임에 분산 할당하여 관리하는 기법

    • 내부 단편화 발생(외부 단편화 x)





출처

명품 운영체제 (저자 황기태)

profile
IT Velog

2개의 댓글

comment-user-thumbnail
2024년 2월 5일

깔끔하네요. 잘 읽었습니다~

1개의 답글