메모리 할당

신명철·2022년 2월 7일
0

OS

목록 보기
14/27

메모리 할당

메모리는 크게 OS 를 위한 부분사용자를 위한 부분으로 나뉜다. 보통, 여러 개의 사용자 프로세스를 메모리에 상주시키길 원하기 때문에 프로세스들에게 메모리를 할당하는 방법에 대해서 생각을 해봐야 한다.

크게 페이징이나 세그멘테이션과 같은 virtual memory를 이용한 비연속 할당과 프로세스를 떨어뜨리지 않고 연속 할당 하는 방법이 있다.

연속 할당

  • Fixed Partition(FPM)
    • 메모리를 미리 고정된 크기로 분할 함
    • 외부/내부 단편화 발생
    • 메모리 낭비
  • Variable Partition(VPM)
    • 메모리를 요청하면 유동적으로 분할
    • 외부 단편화 발생 -> 공간 통합 -> 오버헤드 작음
    • 외부 단편화 발생 -> 메모리 압축 -> 오버헤드 큼

비연속 할당 -> Virtual Memory 사용

  • Paging
    • 프로그램을 같은 크기의 블록으로 분할
    • 메모리도 Page Frame으로 분할
    • Page Map Table(PMT) -> 프로세스마다 존재/ 커널에 저장 됨
    • TLB -> PMT를 적재하여 효율을 증가 시킴
  • Segmentation
    • VPM처럼 미리 분할하지 않음
    • Paging에 비해 오버헤드가 큼

메모리 보호

프로세스는 상한 레지스터(limit register)재배치 레지스터(base register)를 이용해 자신이 소유하지 않은 메모리에 접근할 수 없게 강제할 수 있다.

각각 할당받은 메모리의 상한과 하한값을 기억하고 있는 레지스터이다. 선택된 프로세스를 디스패처가 메모리에 적재할 때 여기에 정확한 값을 적재한다.

메모리 할당

메모리 할당 기법에는 크게 세가지가 있다.

  • 최초 적합(First Fit)
    • 할당할 수 있는 가용 메모리 공간을 발견하면 바로 할당하는 방법
  • 최적 적합(Best Fit)
    • 가용 메모리 공간과 할당 받아야 할 크기의 차이가 가장 작은 곳에 할당하는 방법
  • 최악 적합(Worst Fit)
    • 가장 큰 가용 공간을 택하는 방법

메모리 단편화

외부 단편화

  • 메모리가 적재되고 삭제되는 것이 반복되다 보면 어떤 가용 공간은 너무 작아져 버린다. 이렇게 메모리 가용 공간이 작은 조각들로 단편화되어서 합치면 프로세스를 할당하기에 충분하지만 실제로는 할당할 수 없는 현상을 말한다.

내부 단편화

  • 프로세스가 필요한 메모리보다 더 많은 메모리 공간이 할당되는 현상을 말한다.
    (e.g 프로세스가 4 kb 를 할당받았지만, 실제로는 1 kb 만 사용하는 경우)
profile
내 머릿속 지우개

0개의 댓글