logo
Published on

OS : 메모리

Authors
  • avatar
    Name
    Bora Choi
    Twitter

메모리(기억장치)의 종류

  • 레지스터
  • 캐시
  • 메인 메모리
  • 보조기억장치

메모리(기억장치) 계층 구조

Block

  • 보조기억장치와 주기억장치 사이의 데이터 전송 단위
  • 1~4KB

Word

  • 주기억장치와 레지스터 사이의 데이터 전송 단위
  • 16~64bits

Address Binding

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

  • binding 시점에 따른 구분

    • complie time binding
    • load time binding
    • run time binding

complie time binding

  • 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우

    • 위치가 변하지 않음
  • 프로그램 전체가 메모리에 올라가야함

    load time binding

  • 메모리 적재 위치를 컴파일 시점에서 모르면, 대체 가능한 상대 주소를 생성

  • 적재 시점(load time)에 시작 주소를 반영하여 사용자 코드 상의 주소를 재설정

  • 프로그램 전체가 메모리에 올라가야 함

    run time binding

  • Address binding 을 수행시간까지 연기

    • 프로세스가 수행 도중 다른 메모리 위치로 이동할 수 있음
  • HW의 도움이 필요

    • MMU:Memory Management Unit
  • 대부분의 OS가 사용

Dynamic Loading

  • 모든 루틴을 교체 가능한 형태로 디스크에 저장
  • 실제 호출 전까지는 루틴을 적재하지 않음
    • 메인 프로그램만 메모리에 적재하여 수행
    • 루틴의 호출 시점에 address binding 수행

장점 : 메모리 공간의 효율적 사용

Swapping

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

Memory Allocation

  • Continuous memory Allocation(연속 할당)
    • Uni-programming
    • multi-programming
      • Fixed partition(FPM)
      • Variable partition(VPM)
  • Non-continuous Memory Allocation(비연속 할당)

Continuous Memory Allocation

  • 프로세스(Context)를 하나의 연속된 메모리 공간에 할당하는 정책
    • 프로그램,데이터, 스택 등
  • 메모리 구성 정책
    • 메모리에 동시에 올라갈 수 있는 프로세스 수
      • Multiprogramming degree
    • 각 프로세스에게 할당되는 메모리 공간 크기
    • 메모리 분할 방법
  • Uni-programming : Multiprogramming degree =1
  • Multi-programming
    • Fixed(static) partition multi-programming(FPM) : 고정분할
    • Variable(dynamic) partition multi-programming(VPM) : 가변분할

Uni-programming

  • 하나의 프로세스만 메모리 상에 존재
  • 가장 간단한 메모리 관리 기법
  1. 프로그램의 크기>메모리 크기

    해결법

    • Overlay structure
      • 메모리에 현재 필요한 영역만 적재
      • 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함
  2. 커널(Kernel) 보호

    해결법

    • 경계 레지스터(Boundary register) 사용
  3. Low System resource utilization/Low system performance

    해결법

    • Multi-programming

Fixed Partition Multiprogramming

  • 메모리 공간을 고정된 크기로 분할
    • 미리 분할 되어있음
  • 각 프로세스는 하나의 partition(분할)에 적재
    • process : partition = 1:1
  • partition의 수 = k
    • multiprogramming degree = k

Fragmentation(단편화)

  • Internal fragmentation
    • 내부단편화
    • partition 크기 > process 크기
      • 메모리가 낭비 됨
  • External fragmentation
    • 외부 단편화
    • (남은 메모리 크기 > prcess 크기 )지만, 연속된 공간이 아님
      • 메모리가 낭비 됨

Variable Partition Multiprogramming

  • 초기에는 전체가 하나의 영역
  • 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할
  • No internal fragrmentation

Placement strategies

  • First fit (최초 적합)

    • 충분한 크기를 가진 첫번째 partition을 선택
    • simple and low overhead
    • 공간 활용률이 떨어질 수 있음
  • Best fit (최적 적합)

    • Process가 들어갈 수 있는 partition 중 가장 작은 곳 선택
    • 탐색시간이 오래걸림
      • 모든 partition을 살펴봐야 함
    • 크기가 큰 partition을 유지할 수 있음
    • 작은 크기의 partition이 많이 발생 (활용하기 너무 작은)
  • Worst fit(최악 적합)

    • Process가 들어갈 수 있는 partition 중 가장 큰 곳 선택
    • 탐색시간이 오래 걸림
      • 모든 partition을 살펴봐야 함
    • 작은 크기의 partition 발생을 줄일 수 있음
    • 큰 크기의 partition 확보가 어려움 ( 큰 프로세스에게 필요한)
  • Next-fit(순차 최초 적합)

    • 최초 적합 전략과 유사
    • State table에서 마지막으로 탐색한 위치부터 탐색
    • 메모리 영역의 사용 빈도 균등화
    • Low overhead

Coalescing holes(공간 통합)

  • 인접한 빈 영역을 하나의 partition으로 통합
    • Process가 memory를 release하고 나가면 수행
    • low overhead

Storage Compaction (메모리 압축)

  • 모든 빈 공간을 하나로 통합
  • 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
  • High overhead
    • 모든 Process 재배치
    • 많은 시스템 자원을 소비