학습(공부)하는 블로그 :: 8. 메모리 관리
 

 
반응형
블로그 이미지
학습하고 공부한 것을 보고 싶을때 다시 볼려고 요약해서 정리한 블로그입니다. 좋은 정보는 서로 공유합시다. 깨비형
« 2026/6 »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Archive»


Category»

Notice»

Recent Post»

Recent Comment»

Recent Trackback»

06-22 02:57

8. 메모리 관리

이전 수업 노트/운영체제 | 2026. 6. 21. 11:47 | Posted by 깨비형
반응형

💡 1분 핵심 요약 (TL;DR)

  • 메모리 관리 정책 3가지 : 적재(언제) · 배치(어디) · 재배치(누구를 빼낼지)
  • 절대 주소는 메모리 관리자 관점, 상대 주소는 항상 0번지부터 시작하는 사용자 관점
  • 메모리 오버레이는 모듈 단위 분할 로딩, 스왑은 메모리-디스크 간 프로세스 이동
  • 가변 분할은 외부 단편화, 고정 분할은 내부 단편화가 핵심 문제
  • 메모리 배치 방식 3가지 : 최초 적합 · 최적 적합 · 최악 적합

 

 

 

01 메모리 관리의 개념과 3가지 정책

프로세스의 독점욕과 관리자의 효율성, 그 사이의 균형

 

📖 메모리 관리의 복잡성
메모리의 구조는 1B 크기로 나뉘며, 각 영역은 메모리 주소로 구분(보통 0번지부터 시작)됩니다. CPU는 메모리에 있는 내용을 가져오거나 결과를 저장하기 위해 메모리 주소 레지스터를 사용합니다. 컴퓨터에서 메모리는 유일한 작업 공간이며, 모든 프로그램은 메모리에 올라와야 실행 가능합니다.

· 일괄 처리 시스템 : 한 번에 하나의 프로그램만 실행 → 관리 단순
· 시분할 시스템 : 운영체제 포함 모든 응용 프로그램이 동시에 메모리에 올라옴 → 관리 복잡

 

⚖️ 메모리 관리의 이중성
프로세스 입장에서는 메모리를 독차지하려고 하고, 메모리 관리자 입장에서는 되도록 관리를 효율적으로 하고 싶어합니다. 이 상충하는 두 입장 사이에서 균형을 잡는 것이 메모리 관리의 핵심입니다.

 

메모리 관리 정책 3가지

 

정책 핵심 질문 & 내용
적재 정책 "언제 가져올까?" — 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정.
요청 시 가져오는 것이 일반적이나, 필요할 것으로 예상되는 데이터를 미리 가져오는 방법도 있음
배치 정책 "어디에 놓을까?" — 가져온 프로세스를 메모리의 어떤 위치에 올려놓을지 결정.
같은 크기로 자르는 방식은 페이징, 프로세스 크기에 맞춰 자르는 방식은 세그먼테이션
재배치 정책 "누구를 내보낼까?" — 대치 정책, 교체 정책이라고도 함.
메모리가 충분하지 않을 때 현재 적재된 프로세스 중 제거할 대상을 결정

 

배치 정책의 3가지 방법

 

최초 적합
First Fit
충분히 큰 첫 번째
공백에 배치
최적 적합
Best Fit
가장 작은 크기의
사용 가능 공간에 배치
최악 적합
Worst Fit
가장 큰 사용 가능
공간에 배치

 

🖥️ 메모리 관리자 (Memory Manager)
메모리 관리를 담당하는 하드웨어입니다.
· 사용자가 요청하면 프로세스와 데이터를 메모리로 가져오는 작업
· 가져온 프로세스·데이터를 메모리의 어느 부분에 올려놓을지 결정 (메모리를 어떤 크기로 자를 것인지가 매우 중요)
· 메모리가 가득 찼다면 기존 프로세스를 하드디스크로 옮겨야 새 프로세스를 가져올 수 있음

 

 

 

02 메모리 주소 — 절대 주소와 상대 주소

32bit·64bit CPU의 차이와 두 가지 주소 체계

 

32bit CPU vs 64bit CPU

 

구분 32bit CPU 64bit CPU
처리 단위 한 번에 32bit 처리 한 번에 64bit 처리 (1word = 64bit)
레지스터·대역폭 레지스터·연산장치·대역폭 모두 32bit 32bit CPU의 2배 크기
성능 상대적으로 낮음 처리 속도 빠르고 사용 가능 메모리도 큼

 

📦 메모리 영역의 구분
메모리는 보통 0번지에서 시작하는 운영체제 영역과, 그 이후의 사용자 영역으로 구분됩니다. 운영체제 영역에는 커널 코드가 상주하고, 사용자 영역에는 실행되는 프로그램들이 적재됩니다.

 

절대 주소 vs 상대 주소

 

설치된 메모리의 주소 공간을 하드웨어 관점에서 본 것이 물리 주소 공간(Physical Address Space)이고, 사용자 관점에서 본 것이 논리 주소 공간(Logical Address Space)입니다. 이 둘은 각각 절대 주소와 상대 주소로 구체화됩니다.

 

구분 절대 주소 상대 주소
관점 메모리 관리자 입장 사용자 프로세스 입장
주소 시작 물리 주소 0번지부터 시작 물리 주소와 관계없이 항상 0번지부터
주소 공간 물리 주소(실제 주소) 공간 논리 주소 공간
실체 램 메모리의 실제 주소.
메모리 주소 레지스터가 사용
사용자 영역 시작 번지를 0번지로
재지정한 주소. 프로그래머가 사용하는 공간

 

 

✓ 상대 주소가 편리한 이유
프로세스 입장에서 상대 주소가 사용할 수 없는 영역의 위치를 알 필요가 없고, 주소가 항상 0번지부터 시작하기 때문에 프로그래밍이 편리합니다. 프로그래머는 실제 물리 메모리의 위치를 신경 쓰지 않고 코드를 작성할 수 있습니다.

 

💡 주소 변환의 비밀 — MMU (Memory Management Unit)
CPU가 논리 주소(상대 주소)를 읽으려 할 때, 하드웨어 장치인 MMU베이스 레지스터(Base Register)에 저장된 실제 메모리 시작 주소를 더해 순식간에 물리 주소(절대 주소)로 변환해 줍니다. 덕분에 사용자는 주소 변환 과정을 전혀 신경 쓸 필요가 없습니다.

 

 

 

03 단일 프로그래밍 환경의 메모리 할당 — 오버레이 & 스왑

한정된 메모리에서 더 큰 프로그램을 실행하는 두 가지 기법

 

메모리 오버레이 (Memory Overlay)

 

📖 핵심 개념
프로그램의 크기가 실제(물리) 메모리보다 클 때, 전체 프로그램을 가져오는 대신 적당한 크기로 잘라서 가져오는 기법입니다. '겹겹이 쌓다', '중첩시키다'라는 뜻처럼, 하나의 메모리에 여러 프로그램을 겹겹이 쌓아 놓고 실행합니다.

· 프로그램을 몇 개의 모듈로 나누고, 필요할 때마다 모듈을 메모리에 가져와 사용
· 한정된 메모리에서 메모리보다 큰 프로그램 실행 가능
· 프로그램 전체가 아니라 일부만 메모리에 올라와도 실행 가능하다는 의미를 시사

 

스왑 (Swap)

 

📖 핵심 개념
메모리가 모자라서 쫓겨난 프로세스는 저장장치의 특별한 공간에 모아두는데, 이 영역을 스왑 영역(Swap Area)이라 부릅니다. 사용자는 실제 메모리 크기와 스왑 영역 크기를 합쳐서 전체 메모리로 인식하고 사용합니다.

 

⬇️ 스왑 인 (Swap-in)

스왑 영역에서 메모리로
데이터를 가져오는 작업
  ⬆️ 스왑 아웃 (Swap-out)

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

 

 

💡 절전 모드와 스왑의 관계
절전 모드를 사용하면 CPU와 메모리의 전력 공급이 끊기기 때문에 메모리에 있는 내용이 사라집니다. 원래 작업으로 복귀시키려면 현재 메모리의 데이터를 어딘가에 옮겨야 하는데, 이때 옮겨가는 곳이 바로 스왑 영역입니다.

 

✓ 두 기법이 공통적으로 의미하는 것
메모리 오버레이와 스왑 모두 한정된 메모리에서 메모리보다 큰 프로그램의 실행이 가능하다는 점, 그리고 프로그램은 개념적으로 한 덩어리이지만 일부분만으로도 실행할 수 있으며 메모리를 여러 조각으로 나누어 여러 프로세스에 할당할 수 있다는 의미를 공유합니다.

 

 

 

04 다중 프로그래밍 환경의 메모리 할당 — 가변 분할 vs 고정 분할

여러 프로세스를 동시에 실행할 때 메모리를 나누는 두 가지 방식

 

구분 가변 분할 방식 고정 분할 방식
분할 기준 프로세스 크기에 따라 메모리를 나눔 프로세스 크기와 상관없이 같은 크기로 나눔
배치 방식 한 프로세스가 연속된 공간에 배치
→ 연속 메모리 할당
큰 프로세스는 여러 조각으로 분산 배치
→ 비연속 메모리 할당
장점 프로세스를 한 덩어리로 처리하여
연속된 공간에 배치 가능
일정한 크기로 나누어 관리하므로
메모리 관리가 쉬움
단점 메모리 통합 등 부가 작업이 필요해
관리가 복잡
쓸모없는 공간으로 메모리 낭비 발생
(작은 프로세스가 올라올 때 특히)
핵심 문제 외부 단편화 내부 단편화

 

 

 

 

05 가변 분할 방식 — 외부 단편화와 조각 모음

최초·최적·최악 배치와 조각 모음으로 단편화에 대응한다

 

⚠️ 외부 단편화 (External Fragmentation)
가변 분할 방식에서 발생하는 작은 빈 공간을 외부 단편화라고 합니다. 메모리에 올라오는 프로세스는 차례대로 배치되어 공간 사용에 문제가 없지만, 작은 프로세스가 작업을 마치고 나가면 그 자리가 조각으로 남아 쓸모없어집니다. 이를 해결하기 위해 메모리 배치 방식이나 조각 모음을 사용합니다.

 

메모리 배치 방식 3가지

 

① 최초 배치 (First Fit)
단편화를 고려하지 않는 방법입니다. 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치합니다.

 

② 최적 배치 (Best Fit)
메모리의 빈 공간을 모두 확인한 후, 적당한 크기 가운데 가장 작은 공간에 프로세스를 배치합니다.

 

③ 최악 배치 (Worst Fit)
최적 배치와 정반대로, 빈 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치합니다.

※ 역설적 장점 : 빈 공간을 가장 크게 남기기 때문에, 남은 자투리 공간을 다른 프로세스가 알차게 활용할 수 있도록 유도하는 효과가 있습니다. 반면 최적 배치는 딱 맞는 공간에 채우다 보니 쓸모없는 아주 작은 자투리 공간을 많이 남기기 쉽습니다.

 

조각 모음 (Compaction)

 

📖 핵심 개념
단편화가 발생하면 이미 배치된 프로세스를 옆으로 옮겨 흩어진 빈 공간들을 하나의 큰 덩어리로 만드는 작업입니다. 서로 떨어져 있는 여러 개의 빈 공간을 합치는 작업이라고도 표현합니다.

 

순서 내용
1 조각 모음을 하기 위해 이동할 프로세스의 동작을 멈춤
2 프로세스를 적당한 위치로 이동
3 프로세스가 이동하기 때문에 프로세스의 주소값이 바뀜
4 작업을 마친 후 프로세스를 다시 시작

 

 

 

 

06 고정 분할 방식 — 내부 단편화

관리는 쉽지만 피할 수 없는 공간 낭비 문제

 

📖 핵심 개념
연속 메모리 할당에서, 메모리를 여러 개의 고정된 크기로 분할하고 분할된 각 메모리는 프로세스(작업, job) 하나를 실행합니다. 프로세스의 크기에 상관없이 메모리가 같은 크기로 나뉘며, 큰 프로세스가 올라오면 여러 조각으로 나누어 배치됩니다.

 

⚠️ 내부 단편화 (Internal Fragmentation)
일정하게 나뉜 메모리의 크기보다 작은 프로세스가 배치될 경우 낭비되는 공간이 생기는 현상입니다. 각 메모리 조각에 프로세스를 배치하고 남는 공간이 곧 내부 단편화입니다.

· 내부 단편화는 조각 모음으로 해결할 수 없음
· 남는 공간을 다른 프로세스에 배정할 수도 없음
· 내부 단편화를 줄이기 위해 메모리 크기를 신중하게 결정해서 나누어야 함

 

💡 현대 운영체제로의 진화
본문에서 다룬 단순한 고정 분할 방식은 오늘날의 페이징(Paging) 기법으로, 가변 분할 방식은 세그먼테이션(Segmentation) 기법으로 발전하여 현대 가상 메모리 관리의 핵심 근간이 됩니다.

 

 

 

📌 핵심 정리

· 메모리 관리 정책 : 적재(언제 가져올지) · 배치(어디에 놓을지) · 재배치(누구를 뺄지)
· 배치 방법 : 최초 적합 · 최적 적합 · 최악 적합
· 절대 주소 : 메모리 관리자 관점, 물리 주소 0번지부터 시작
· 상대 주소 : 사용자 프로세스 관점, 항상 0번지부터 시작 (편리함) — MMU가 베이스 레지스터로 실시간 변환
· 메모리 오버레이 : 프로그램을 모듈로 나눠 필요할 때만 메모리에 적재
· 스왑 : 메모리-디스크 간 프로세스 이동 (스왑 인/스왑 아웃)
· 가변 분할 : 프로세스 크기대로 분할, 연속 할당, 외부 단편화 발생
· 고정 분할 : 동일 크기로 분할, 비연속 할당, 내부 단편화 발생 (조각 모음 불가)
· 조각 모음 : 외부 단편화 해결책. 프로세스 이동 → 주소값 변경 → 재시작
· 최악 적합의 역설 : 큰 공간을 남겨 다른 프로세스가 활용하기 쉽게 함
· 발전 방향 : 고정 분할 → 페이징, 가변 분할 → 세그먼테이션 (현대 가상 메모리의 근간)

 

 

태그 : 운영체제 메모리관리절대주소 상대주소 차이메모리 오버레이란스왑인 스왑아웃가변분할 고정분할 차이외부단편화 내부단편화최초적합 최적적합 최악적합조각모음이란메모리 관리 정책운영체제 메모리 정리

반응형

'이전 수업 노트 > 운영체제' 카테고리의 다른 글

7. 교착상태  (0) 2026.06.20
6. 프로세서 동기화  (0) 2026.06.19
5. 스케줄링 알고리즘  (0) 2026.06.14
4. 스레드와 CPU 스케줄링  (0) 2026.04.11
3. 프로세스  (0) 2026.03.29
: