오뚝이개발자

[OS]CH8. 메모리 관리(Memory management) 본문

CS 기초/OS

[OS]CH8. 메모리 관리(Memory management)

땅어 2020. 10. 19. 16:36
728x90
300x250

 

본 글은 HPC Lab의 youtube 강의를 듣고 요약한 것입니다. 모든 이미지 출처 역시 HPC Lab의 pdf 수업자료입니다.

 

메모리의 종류


레지스터-캐시-메인메모리(주기억장치)-하드디스크(보조기억장치)

메모리 계층구조

 

Block과 Word


Block : 주기억장치-보조기억장치 사이의 데이터 전송 단위

Word : 주기억장치-레지스터 사이의 데이터 전송 단위(일반적으로 32bit, 64bit 컴퓨터는 이 word를 말한다)

 

Address binding이란?


프로그램의 논리 주소를 물리 주소로 매핑(mapping)하는 작업

Binding 시점에 따라 세 가지로 구분

  • Compile time binding
  • Load time binding
  • Run time binding
    • Address binding을 프로그램 수행시간까지 연기
    • HW 도움 필요
      • MMU : Memory Management Unit
    • 대부분의 OS가 사용

user program processing with address binding
Load time binding 예시
Run time binding 도식화

 

Dynamic Loading


  • 모든 routine(function)을 교체 가능한 형태로 디스크에 저장
  • 실제 호출 전까지는 루틴을 적재하지 않음
    • 메인 프로그램만 메모리에 적재하여 수행
    • 루틴의 호출 시점에 address binding 수행
  • 장점 : 메모리 공간의 효율적 사용(사용할 것만 메모리에 올리므로)

P의 여러 routine 중 실제 호출되는 것만 적재

 

Swapping


  • swap-out : 프로세서 할당이 끝나고 완료된 프로세스는 swap-device로 보냄
  • swap-in : 새롭게 시작하는 프로세스 메모리에 적재

 

Memory allocation


하나의 프로세스가 메모리에 적재된 형태가 연속적/비연속적인지에 따라 구분

Continuous memory allocation : 프로그램을 하나의 연속된 메모리 공간에 적재(메모리에 동시에 올라갈 수 있는 프로세스 수 = multi-programming degree)

Non-continuous memory allocation : 프로그램을 여러 부분으로 나누어 실행 시 필요한 부분만 메모리에 적재

  • Continuous memory allocation
    • Uni-programming(multiprogramming degree가 1인 경우)
    • Multi-programming
      • FPM(Fixed partition) 혹은 SPM(Static partition)
      • VPM(Variable partition) 혹은 DPM(Dynamic partition)
  • Non-continuous memory allocation(Virtual storage)
    • Paging system
    • Segmentation system
    • Hybrid(Paging + Segmentation) system

 

Fragmentation(단편화)


Internal fragmentation(내부 단편화) : Partition 크기 > Process 크기

External fragmentation(외부 단편화) : 남은 메모리 크기 > Process 크기지만, 연속된 공간 X

 

Uni-Programming


  • 메모리 상에 하나의 프로세스만 존재(가장 간단)
  • 문제점
    • 프로그램의 크기 > 메모리 크기인 경우 문제!(overlay structure로 필요한 영역만 적재해 해결)
    • 커널 보호(boundary register 사용으로 해결)
  • 단점
    • losw resource utilization(프로그램 하나만 적재하고 남은 공간 waste) -> multi-programming으로 해결

uni-programming
boundary register

 

Multiprogramming - FPM


메모리 공간을 고정된 크기로 분할

  • 각 프로세스는 하나의 partition에 적재(Process:Partition=1:1)
  • Partition의 수 = K라면 multiprogramming degree=K
  • Internal/External fragmentation

FPM의 예시

  • 역시 커널 및 각 파티션 간의 영역 보호 문제가 존재->boundary register로 해결

 

Multiprogramming - VPM


프로세스를 처리하는 과정에서 메모리 공간이 (필요한만큼) 동적으로 분할

  • Internal fragmentation X
  • External fragmentation O

 

배치전략(Placement strategies)


First-fit(최초적합)

  • 충분한 크기를 가진 첫 번째 partition 선택
  • simple & low overhead
  • 공간활용율이 떨어질 수 있음

First-fit

Best-fit(최적접합)

  • 프로세스가 들어갈 수 있는 partition 중 가장 작은 곳 선택
  • 탐색시간 overhead(모든 partition 살펴봐야 함)
  • 크기가 큰 partition을 유지할 수 있음
  • But 작은 크기의 partition이 많이 발생(활용하기엔 너무 작은)

Worst-fit(최악적합)

  • 프로세스가 들어갈 수 있는 partition 중 가장 큰 곳 선택
  • 탐색시간 overhead
  • 작은 크기의 partition 발생을 줄일 수 있음
  • But 큰 크기의 partition 확보 어려움(큰 프로세스에게 필요한)

Next-fit(순차최초적합)

  • First-fit과 유사
  • State table에서 마지막으로 탐색한 위치부터 탐색
  • 메모리 영역을 고르게 사용할 수 있음
  • Low overhead

Next-fit

 

External Fragmentation 해결법


  1. Coalescing holes(공간 통합)
  2. Storage compaction(메모리 압축)

 

Coalescing holes


  • 인접한 빈 영역을 하나의 partition으로 통합
  • 수행 시기 : 프로세스가 memory를 release하고 나가면 수행

Coalescing holes

 

Storage compaction


  • 모든 빈 공간을 하나로 통합
  • 수행 시기 : 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
  • High overhead : 모든 프로세스 재배치(프로세스 중지) -> 자주 하면 X, 가끔씩 O

Storage compaction

 

728x90
300x250
Comments