메모리 할당

jm·2022년 12월 7일
0

OS

목록 보기
9/13

Continuous Memory Allocation

  • 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책
    • 프로그램, 데이터, 스택 등을 고려
  • 메모리 구성 정책
    • 메모리에 동시에 올라갈 수 있는 프로세스 수
    • 각 프로세스에게 할당되는 메모리 공간 크기
    • 메모리 분할 방법

Uni-programming

  • 하나의 프로세스만 메모리 상에 존재, 가장 간단한 메모리 관리 기법
  • 문제점1 : 프로그램의 크기 > 메모리 크기, 프로그램을 쪼개야 함(사용자, 개발자의 역할)
  • 해결법1 : Overlay structure
    • 메모리에 현재 필요한 영역만 적재하는 방식
    • 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야함
  • 문제점 2 : 커널 보호
  • 해결법2 : 경계 레지스터(boundary register) 사용, 경계 주소를 적어 놓고 침범하지 않도록 방지

    Uni-Programming의 문제점 : 하나만 올리기 때문에 남아있는 공간이 생김 ➡ 시스템 및 자원의 활용도가 낮음, 시스템 포퍼먼스가 낮음

📌 Fixed partition Multi-programming (FPM)

  • 메모리 공간을 고정된 크기로 분할, 미리 분할되어 있음
  • 각 프로세스는 하나의 partition(분할)에 적재
  • Partition의 수 = Multiprogramming degree의 수
  • Partition(State) table을 만듬 (partion이름, 크기, 프로세스 이름)
  • 경계 레지스터를 사용하여 커널 및 사용자 영역 보호

📌Fragmentation (단편화)

  • 내부 단편화 (Internal fragmentation)

  • Partition 크기 > Process 크기 ➡ 메모리 낭비
  • 외부 단편화 (External fragmentation)

    • 남은 메모리 크기 > process 크기 지만, 연속된 공간이 아니라서 적재 불가능
      ➡ 메모리 낭비
  • 요약 : 고정 된 크기로 메모리 미리 분할, 관리가 간편함, 자원이 낭비 될 수 있음

📌 Vaiable(유동적) partition Multi-programming (VPM)

  • 초기에는 전체가 하나의 영역
  • 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할 됨 ➡ NO internal fragmentation
  • 배치 선택 !

배치 전략 - VPM

  • First-fit (최초 적합)
    • 충분한 크기를 가진 첫 번째 파티션을 선택
    • 간단하고 오버헤드가 적음 ↔ 공간 활용도가 떨어질 수 있음.
  • Best-fit (최적 적합)
    • Process가 들어갈 수 있는 partition 중 가장 작은 곳 선택
    • 탐색시간이 오래걸려서 오버헤드가 크다.(모든 파티션 탐색)
    • 크기가 큰 partition을 유지할 수 있음 ↔ 작은 크기의 partition이 많이 발생함(너무 작은 파티션만 남음)
  • Worst-fit (최악 적합)
    • partition 중 가장 큰 곳 선택
    • 작은 크기의 파티션 발생을 줄일 수 있음! ↔ 큰 크기의 파티션 확보가 어려움
  • Next-fit (순차 최초 적합)
    • 최초적합 전략과 유사
    • state table에서 마지막으로 탐색한 위치부터 탐색
    • 메모리 영역의 사용 빈도 균등화, 오버헤드 작음

Extanal fragmentation 이슈

  • Coalescing holes (공간 통합)
    • Process가 memory를 release하고 나가면 인접한 빈 영역을 하나의 partition으로 통합
    • 오버헤드가 적음
  • Storage Compaction (메모리 압축)
    • 모든 빈 공간을 하나로 통합
    • 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
    • High overhead, 모든 프로세스 중지 후 재비치, 많은 자원을 소비 ➡ 자주❌

정리

uni programming의 문제점을 해결하기 위해 파티션공간을 미리 분할
1. 고정 파티션 분할 ➡ 공간 낭비
2. 동적 파티션 분할 (배치전략, 외부 단편화 이슈 해결)
->📌 성능 이슈(new 생성)가 있을 때 Memory pool을 만들어서 FPM, VPM을 구현함


https://youtu.be/EdTtGv9w2sA [Course] Operating System (CPA310) - 운영체제 강의. HPC Lab. KOREATEC

profile
ㅎㅎ

0개의 댓글