[OS] 메모리 관리

Manx·2022년 6월 7일
0

운영체제

목록 보기
8/12

메모리 관리

메모리란 ?

  • 데이터를 프로세서에서 연산하기 전에 일시적으로 저장하는 저장공간
  • 일반적으로 메모리는 메인 메모리를 의미한다.

    auxiliary storage = HDD
    Block : 보조기억장치와 주기억장치 사이의 데이터 전송 단위 ( 1~4 KB )
    Word : 주기억장치와 레지스터 사이의 데이터 전송 단위 (16 ~ 64 bits)

메모리의 프로그램 적재 방법

  • 연속 메모리 적재 방법 (프로세스 전체를 연속적으로 올린다.)
  • 비연속(분산) 메모리 적재 방법 (연산에 필요한 부분을 비연속적으로 올려 사용한다.)

배치 정책 : 프로세스를 메모리 어느 위치에 저장할 것인지 결정
대치 정책 : 메모리가 꽉 찼을 경우 어떤 프로세스를 제거할지


Memory Mapping

Address Binding : 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업

Binding 시점에 따른 구분

Compile time binding (컴파일 시)

  • 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우
  • 적재될 위치가 변하지 않음
  • 프로그램 전체가 메모리에 올라가야 한다.

Load time binding (프로세스를 로드할 시)

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

    실제 메모리의 주소가 400번대 부터 할당해야 하니 360에 400을 더해 Branch 760이 된다.

Run time binding (프로세스를 실행할 시)

  • Address binding을 수행시간까지 연기한다.
  • 프로세스가 수행 도중 다른 메모리위치로 이동할 수 있다.
  • H/W의 도움이 필요하다 (MMU : Memory Management Unit)

연속 메모리 할당

프로세스 (context)를 하나의 연속된 메모리 공간에 할당하는 정책이다.

구성

  • 메모리에 동시에 올라갈 수 있는 프로세스 수
  • 각 프로세스에게 할당되는 메모리 공간 크기
  • 메모리 분할 방법

단일 프로그래밍 환경 (Uni programming)

  • 하나의 프로세스만 메모리 상에 존재
  • 가장 간단하지만 자원 낭비가 매우 심하다.

다중 프로그래밍 환경 (Multi-programming)

  • 고정 분할 할당 : 메모리 공간을 고정된 크기로 분할해 사용한다.
  • 각 프로세스는 하나의 partition(분할)에 적재한다.
  • Partition 수 = K (Multiprogramming degree)

단점

Internal Fragmentation (내부 단편화)
Partition의 크기 > Process 크기 일 경우 남은 Partition이 낭비되기 때문에 메모리가 낭비된다.

External fragmentation (외부 단편화)
남은 메모리 크기 > Process 크기 이지만, 연속된 공간이 아니라 메모리가 낭비된다.)


가변 분할 방법 (Variable Partition)

  • 고정된 경계를 없애고 각 프로세스가 필요한 만큼 메모리를 할당한다.

    마찬가지로, 작업이 진행될 수록 내부 단편화가 발생한다.

1. 최초 적합 방법

충분한 크기를 가진 첫 번째 partition을 선택한다.

  • simple and low overhead
  • 공간 활용률이 떨어진다.

2. 최적 적합 방법

프로세스가 들어갈 수 있는 partition 중 가장 작은 곳을 선택한다.

  • 단점 : 작은 크기의 partition이 많이 발생하고, 탐색 시간이 오래 걸린다.
  • 장점 : 크기가 큰 partition은 잘 이용하지 않으므로 큰 상태로 유지할 수 있다.

-> 위의 그림에서 16KB를 사용하는 것이 아닌 14KB를 선택함

3. 최악 적합 방법

프로세스가 들어갈 수 있는 partition 중 가장 큰 곳을 선택한다.

  • 단점 : 큰 크기의 partition을 확보할 수 없다, 탐색 시간이 오래 걸린다.
  • 장점 : 작은 크기의 partition 발생을 줄일 수 있다.

-> 위의 그림에서 30KB를 선택


가변 분할 방법의 메모리 단편화 문제 해결 방법

1. 메모리 통합 방법

  • 작업이 끝났을 경우 인접한 빈 공간과 하나로 합침

2. 메모리 압축 방법

  • 메모리의 내용을 적절히 움직여 사용 가능 공간을 큰 블록 하나로 만든다.
    -> 빈 공간들을 합친다.
  • 단점 : 메모리를 압축하는 동안 시스템은 모든 일을 중지해야 한다. (시스템 자원의 소모가 크다)

Address Mapping이 컴파일이나 적재할 때 실행된다면 압축을 수행할 수 없다. 대체로 동적일 때만 가능하다.


Reference

운영체제:그림으로 배우는 구조와 원리 - 한빛 아카데미

profile
백엔드 개발자

0개의 댓글