Computer Science/운영체제

운영체제 8강 :: 메모리관리자, 메모리분할, 메모리배치

HJPlumtree 2023. 4. 25. 18:36

운영체제에서 기억하고 싶은 내용

 

 

메모리 관리자가 하는 일

메모리 호출

언제 새로운 프로세스 메모리에 둘까

 

메모리 배치

메모리 어디에 둘까

 

메모리 교체

메모리 꽉 찼을 때 어떤 프로세스 제거할까

 

그 외

고정/동적 분할, 고정 유동 적재 영역 등

 

 

단일 프로그램 환경

  • 하나의 프로세스가 메모리를 전용으로 사용하는거
  • 연속된 블록으로 메모리에 할당

 

문제점

  • 메모리 용량을 초과하는 프로세스 실행 못한다
  • 지속적이지 않은 프로세스도 적재되어 있어 메모리 낭비 심하다
  • 주변장치 등 자원 낭비 심하다

 

 

다중 프로그래밍 환경

  • 우리가 사용하는 거
  • 여러 개의 프로세스가 메모리에 동시에 적재
  • CPU 연산과 입출력 동시에 사용
    => CPU 이용도와 시스템 처리량 증가

 

메모리 분할의 고민이 생겼지

 

메모리 고정 분할

메모리를 여러 개의 고정된 크기고 나눈다

다 같은 크기라는 의미는 아님

 

프로세스 배치 방법 1

분할 영역마다 큐를 두고, 큐에 들어온 프로세스는 해당 분할 영역에 적재

 

프로세스 배치 방법 2

하나의 큐만 두고, 어느 분할 영역에든 적재

 

고정 분할의 문제점 - 내부 단편화

분할 영역보다 프로세스 크기가 작으면 남는 메모리가 발생

 

 

메모리 동적 분할

분할 경계가 고정되지 않는다

각 프로세스에 필요한 메모리 할당

 

외부 단편화

작은 크기의 공백이 메모리 공간에 흩어져서 생긴다

 

외부 단편화 해결 방법 1 - 통합

인접된 공백을 더 큰 하나의 공백으로 만들자

 

외부 단편화 해결 방법 2 - 집약

모든 공백을 하나로 모으자

그럴려면 기존 배치된 프로세스를 옮기는 비용 든다

 

 

메모리 보호

프로세스가 다른 할당 영역을 침범하지 않아야 한다

 

 

메모리 배치 기법

새로 반입된 프로그램/데이터를 어디에 배치할건가?

 

최초 적합

프로세스가 적재될 수 있는 빈 공간 중에 제일 먼저 발견할 곳에 할당

 

후속 적합

앞선 탐색이 끝난 다음 부분부터 탐색해서 발견된 빈 공간에 할당

 

최적 적합

빈 공간이 가장 적은 곳을 선택

큰 빈 공간을 최대한 많이 남겨 놓을 수 있는 방법

 

최악 적합

빈 공간 중 가장 큰 곳에 선택

사용하지 못하는 너무 작은 자투리를 안만들려는 방법