OS

[쉽게 배우는 운영체제] 7. 물리 메모리 관리

noahkim_ 2024. 12. 12. 19:20

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다


1. 개요

메모리 관리의 복잡성

CPU
  • 메모리의 내용을 가져오거나, 작업 결과를 메모리에 저장하기 위해 MAR을 사용함
  • MAR에 필요한 메모리 주소를 넣으면 데이터를 가져오거나 기록할 수 있음

 

시분할 시스템
  • 모든 응용 프로그램이 메모리에 올라와 실행되므로 메모리 관리가 복잡함

 

이러한 복잡한 메모리 관리는 메모리 관리 시스템(MMS)에서 담당함

 

메모리 관리의 이중성

  • 프로세스 입장에서는 메모리를 독차지하려 하고, 메모리 관리자 입장에서는 되도록 효율적으로 쓰고싶어 하는 것

 

메모리 관리자

  • 메모리가 부족할 경우, 새로운 공간을 확보하기 위해 옆의 프로세스를 밀어냄
  • 더 큰 공간으로 해당 프로세스를 옮겨줌
  • 빈 공간이 생기면 합쳐서 하나의 큰 공간을 만듬

 

fetch
  • 프로세스와 데이터를 메모리에 로드

 

placement
  • 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정
  • 어떻게 메모리 구역을 나누어 할당할지에 따라 메모리 관리의 복잡성이 달라짐
  • 정책
    • paging: 메모리를 같은 크기로 자르는 것
    • segmentation: 프로세스의 크기에 맞게 자르는 것

 

replacement
  • 꽉 차있는 메모리에 새로운 프로세스를 가져오기 위해 오래된 프로세스를 내보내는 작업
  • 정책
    • replacement algorithm: 메모리가 꽉 찼을 때, 어떤 프로세스를 내보낼지 결정하는 정책

 

2. 메모리 주소

32bit CPU vs 64bit CPU

  • 레지스터의 크기
    • 한번에 다룰 수 있는 데이터의 최대 크기를 의미함
    • 메모리 주소 공간 크기가 결정됨

 

메모리 영역의 구분

운영체제 영역과 사용자 영역으로 나누어 관리함

운영체제 영역은 침범하지 못하도록 보호함

이를 위해 CPU의 경계 레지스터가 이를 담당함

 

절대 주소 vs 상대 주소

절대 주소
  • 물리적인 공간 (하드웨어 입장에서 바라본 주소 공간)
  • RAM 에 꽂힌 실제 주소
  • 메모리 관리자가 사용함
  • 사용자 입장에서 불편하고 위험함 (매번 운영체제 영역을 확인해야 함)

 

상대 주소
  • 논리주소 공간 (사용자 프로세스 입장에서 바라본 주소 공간)
  • 사용자 영역이 시작되는 번지를 0번지로 변경하여 사용하는 주소 지정 방식
  • 작업할 경우, 절대 주소로 변환 과정을 거침
    • 메모리 관리자의 재배치 레지스터가 이를 담당함

 

3. 메모리 할당 (단일 프로그래밍 환경)

메모리 오버레이

  • 메모리 크기보다 프로그램 크기가 더 클 경우, 적당한 크기로 잘라서 가져오는 기법
  • 프로그램을 몇 개의 모듈로 나누고, 필요할 때마다 모듈을 메모리에 가져와 사용
    • PC에서 어떤 모듈을 가져오거나 내보낼지 결정함

 

장점
  • 한정된 메모리에서 메모리보다 큰 프로그램의 실행이 가능함
  • 프로그램 전체가 아니라 일부만 메모리에 올라와도 실행이 가능함

 

스왑 영역

  • 메모리가 모자라서 잠시 내쫓은 프로세스들을 모아두는 공간
  • 저장장치에 있음
  • 메모리 관리자가 관리함

 

스왑 인
  • 스왑 영역에서 메모리로 데이터를 가져오는 작업

 

스왑 아웃
  • 메모리에서 스왑 영역으로 데이터를 내보내는 작업

 

4. 메모리 할당 (다중 프로그래밍 환경)

한 번에 여러 프로세스가 실행되는 구조의 메모리 관리

메모리 분할 방식에 따라 나뉨

 

가변 분할 방식 (세그멘테이션 기법)

  • 연속 메모리 할당
  • 프로세스의 크기에 따라 메모리를 나눔

 

메모리 배치 방식
  • 최초 배치
    • 빈 공간에 배치할 때, 적자 가능한 공간을 찾다 첫번째로 발견한 공간에 프로세스 배치 (단편화 고려 X)
  • 최적 배치
    • 메모리의 빈 공간을 모두 확인한 후, 가장 작은 공간에 프로세스 배치
  • 최악 배치
    • 메모리의 빈 공간을 모두 확인한 후, 가장 큰 공간에 프로세스 배치

 

단점
  • 관리 복잡
    • 부가적인 작업 필요 (메모리 통합)
  • 외부 단편화
    • 연속된 메모리가 확보되지 않아 배치할 수 없어 낭비되는 부분이 발생하는 현상
    • 이를 해결하기 위해 메모리 배치 방식이나 조각 모음을 사용함

 

조각 모음
  • 서로 떨어져 있는 여러 개의 빈 공간을 합치는 작업
  • 이동할 프로세스의 동작이 일시 정지되고, 적당한 위치로 재배치됨
  • 재배치 후, 프로세스가 다시 시작됨

 

고정 분할 방식 (페이징)

  • 프로세스의 크기와 상관없이 메모리를 같은 크기로 나누는 것

 

장점
  • 관리 쉬움
  • 조각 모음 할 필요 없음

 

단점
  • 비연속 메모리 할당
  • 내부 단편화 발생 (낭비되는 메모리 발생)
    • 일정하게 나뉜 메모리의 크기보다 작은 프로세스가 배치될 경우 낭비되는 공간 발생
    • 조각 모음을 할 수 없고, 남은 공간을 다른 프로세스에 배정할 수 없음