학습(공부)하는 블로그 :: 9. 가상 메모리
 

 
반응형
블로그 이미지
학습하고 공부한 것을 보고 싶을때 다시 볼려고 요약해서 정리한 블로그입니다. 좋은 정보는 서로 공유합시다. 깨비형
« 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 10:23

9. 가상 메모리

이전 수업 노트/운영체제 | 2026. 6. 22. 10:23 | Posted by 깨비형
반응형

 

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

  • 가상 메모리는 물리 메모리 크기와 상관없이 프로세스에 큰 메모리 공간을 제공하는 기술
  • 페이징은 고정 분할(페이지/프레임), 세그먼테이션은 가변 분할(세그먼트) 기반 관리 기법
  • 매핑(페이지) 테이블로 가상 주소 ↔ 물리 주소를 일대일 연결해 관리
  • ✅ 매핑 방식 4가지 : 직접 · 연관 · 집합-연관 · 역매핑
  • ✅ 두 기법의 단점을 보완한 세그먼테이션-페이징 혼용 기법이 실제로 널리 사용됨

 

 

 

01 가상 메모리(Virtual Memory)란?

물리 메모리의 한계를 신경 쓰지 않게 해주는 기술

 

📖 핵심 개념
크기가 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있는 기술입니다. 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공합니다. 프로세스는 운영체제가 어디 있는지, 물리 메모리 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마음대로 사용할 수 있습니다.

 

가상 메모리의 크기와 주소

 

가상 메모리 시스템의 모든 프로세스는 물리 메모리와 별개로, 자신이 메모리의 어느 위치에 있는지 상관없이 0번지부터 시작하는 연속된 메모리 공간을 가집니다. 가상 주소는 물리 메모리 공간이 아닌 가상의 주소 공간을 가지며, 가상 메모리는 크게 프로세스가 바라보는 영역과 메모리 관리자가 바라보는 영역으로 나뉩니다.

 

💾 스왑 영역도 가상 메모리의 일부
가상 메모리 시스템에서는 물리 메모리 내용 중 일부를 하드디스크의 스왑 영역으로 옮깁니다. 스왑 영역은 하드디스크에 존재하지만 메모리 관리자가 관리하는 영역으로서, 메모리의 일부이자 가상 메모리의 구성 요소 중 하나입니다. 메모리 관리자는 물리 메모리의 부족한 부분을 스왑 영역으로 보충합니다.

 

⬆️ 스왑 아웃

물리 메모리가 꽉 찼을 때
일부 프로세스를 스왑 영역으로 보내는 것
  ⬇️ 스왑 인

몇 개의 프로세스가 작업을 마치면
스왑 영역의 프로세스를 메모리로 가져오는 것

 

 

 

02 가상 메모리의 분할 방식 — 페이징과 세그먼테이션

운영체제 영역을 제외한 메모리를 어떻게 쪼개서 쓸 것인가

 

실제 메모리의 물리 주소 0번지는 운영체제 영역이므로 일반 프로세스가 사용할 수 없습니다. 가상 메모리 시스템에서는 운영체제를 제외한 나머지 영역을 일정한 크기로 나누어 일반 프로세스에 할당합니다.

 

기법 분할 방식
세그먼테이션 가상 메모리 시스템에서 가변 분할 방식을 이용한 메모리 관리 기법
페이징 가상 메모리 시스템에서 고정 분할 방식을 이용한 메모리 관리 기법

 

⚠️ 각 기법의 한계
세그먼테이션 기법은 가변 분할 방식의 단점인 외부 단편화 등의 문제 때문에 단독으로는 잘 사용되지 않습니다. 페이징 기법은 페이지 관리에 어려움이 있어, 실제 가상 메모리 시스템에서는 두 기법의 단점을 보완한 세그먼테이션-페이징 혼용 기법을 주로 사용합니다.

 

가상 메모리 vs 물리 메모리

 

구분 가상 메모리 물리 메모리
최대 크기 CPU의 비트 값에 의존 CPU의 비트 값에 의존
분할 방식 세그먼테이션 · 페이징 · 혼용 기법 가변 분할 · 고정 분할 방식
주소 지정 가상 주소 절대 주소, 상대 주소

 

 

 

03 매핑 테이블 — 가상 주소와 물리 주소를 잇다

가상 주소가 어디에 실제로 존재하는지 알려주는 지도

 

📖 핵심 개념
가상 메모리 시스템에서 가상 주소는 실제 물리 주소나 스왑 영역 중 한 곳에 위치하며, 메모리 관리자는 가상 주소와 물리 주소를 일대일 매핑 테이블로 관리합니다. 이를 통해 가상 주소가 물리 메모리의 어느 위치에 있는지 알 수 있습니다.

· 페이징 기법의 매핑 테이블 → 페이지 테이블 (또는 페이징 매핑 테이블)
· 세그먼테이션 기법의 매핑 테이블 → 세그먼테이션 테이블 (또는 세그먼테이션 매핑 테이블)

 

 

 

04 페이징 기법 — 페이지와 프레임

같은 크기 블록으로 나누어 어디든 끼워 넣을 수 있게 한다

 

📖 핵심 개념
고정 분할 방식을 이용한 가상 메모리 관리 기법입니다. 물리 주소 공간을 같은 크기의 블록(pages)으로 분할합니다. 가상 주소는 프로세스 입장에서 바라본 메모리 공간으로 항상 0번지부터 시작하며, 분할된 각 영역을 페이지라 하고 번호를 매겨 관리합니다.

 

📄 페이지 (Page)

가상 주소의 분할된 영역
(프로그램의 분할된 block)
  🗂️ 프레임 (Frame)

물리 메모리의 분할된 영역
(페이지와 구분하기 위한 명칭, 번호로 관리)

 

 

✓ 핵심 특징
페이지와 프레임의 크기가 같기 때문에, 페이지는 어떤 프레임에도 자유롭게 배치될 수 있습니다. 어떤 페이지가 어떤 프레임에 있는지에 대한 매핑 정보는 페이지 테이블에 담겨 있습니다.

 

페이지 테이블의 구조

 

📋 단순한 한 줄 구조
페이지 테이블은 하나의 열로 구성됩니다. 모든 페이지의 정보를 순서대로 가지고 있어 위에서부터 차례대로 프레임 번호를 가지고 있으므로 추가 열이 필요 없습니다. 물리 메모리에 해당 페이지가 없을 때는 invalid로 표시하는데, 이는 해당 페이지가 스왑 영역에 있다는 의미입니다.

페이지 테이블의 각 행에는 프레임 번호 외에도 해당 페이지가 현재 물리 메모리에 있는지를 나타내는 유효-무효 비트(Valid-Invalid Bit)가 존재합니다. 물리 메모리에 있으면 유효(Valid), 스왑 영역에 있으면 무효(Invalid)로 표시합니다.

 

⚡ 페이지 부재 (Page Fault)
프로세스가 무효(invalid)로 표시된 페이지에 접근하려고 하면 페이지 부재 인터럽트가 발생합니다. 이때 운영체제는 CPU의 동작을 잠시 멈추고 스왑 영역(하드디스크)에서 해당 페이지를 찾아 물리 메모리의 빈 프레임으로 가져옵니다(스왑 인). 가상 메모리 시스템을 이해할 때 반드시 등장하는 핵심 개념입니다.

 

 

 

05 페이지 테이블 관리와 4가지 매핑 방식

테이블이 너무 커지면 어떻게 효율적으로 검색할까

 

⚠️ 페이지 테이블 관리의 어려움
여러 개의 프로세스가 존재하고 프로세스마다 페이지 테이블이 하나씩 있기 때문에 관리가 복잡합니다. 페이지 테이블은 메모리 관리자가 자주 사용하는 자료구조이므로 빨리 접근할 수 있어야 하며, 운영체제 영역의 일부분에 모아 놓습니다.

전체 페이지 테이블의 크기는 프로세스 수에 비례해서 커지며, 실행 중인 프로세스가 많아지면 페이지 테이블도 커져서 실제 사용 가능한 메모리 영역이 줄어듭니다.

 

페이지 테이블 매핑 방식 4가지

 

① 직접 매핑 (Direct Mapping)
페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식입니다. 별다른 부가 작업 없이 바로 주소 변환이 가능하다는 의미에서 직접 매핑이라 부릅니다. 가장 단순한 방식으로, 물리 메모리가 충분할 때 사용하며 주소 변환 속도가 빠릅니다.

 

② 연관 매핑 (Associative Mapping)
페이지 테이블 전체를 스왑 영역에서 관리하는 방식입니다. 물리 메모리 여유 공간이 작을 때 사용하며, 일부만 무작위로 물리 메모리에 가져오기 때문에 페이지 번호와 프레임 번호 둘 다 표시합니다.
· 원하는 프레임 번호를 얻지 못하면 스왑 영역의 페이지 테이블을 다시 검색해야 함
· 검색이 실패하면 시간을 낭비하게 되어 직접 매핑보다 속도가 느림

 

💡 실제 컴퓨터의 해결책 — TLB (Translation Lookaside Buffer)
페이지 테이블을 메모리에 두면 속도가 느려지는 문제를 해결하기 위해, CPU 내부에 TLB라는 고속 연관 캐시 메모리를 둡니다. 자주 사용하는 페이지 테이블의 일부를 TLB에 보관하여 주소 변환 속도를 비약적으로 높이는 방식을 현대 운영체제에서 기본적으로 사용합니다. 위에서 설명한 연관 매핑은 이 TLB 하드웨어의 동작을 이해하기 위한 이론적 배경이라 할 수 있습니다.

 

③ 집합-연관 매핑 (Set-Associative Mapping)
연관 매핑의 문제를 개선한 방식입니다. 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리 메모리에 가져옵니다. 디렉터리 매핑이라고도 하며, 관련 있는 테이블을 덩어리로 모아 놓은 형태입니다.
· 페이지 테이블을 같은 크기의 여러 묶음으로 나눔
· 각 묶음의 시작 주소를 가진 디렉터리 테이블을 새로 만들어 관리

 

④ 역매핑 (Inverted Mapping)
다른 세 방식과 반대로, 물리 메모리의 프레임 번호를 기준으로 테이블을 구성합니다. 어떤 프레임에 어떤 프로세스의 어떤 페이지가 올라와 있는지 표시합니다.
· 프로세스 수와 상관없이 테이블이 하나만 존재하므로 크기가 매우 작음
· 단, 가상 메모리 접근 시 프로세스 아이디와 페이지 번호를 모두 찾아야 하는 단점

 

매핑 방식 위치 특징
직접 매핑 테이블 전체 물리 메모리 가장 단순, 속도 빠름
연관 매핑 테이블 전체 스왑 영역 검색 실패 시 속도 느림
집합-연관 매핑 스왑 영역 + 디렉터리 테이블 연관 매핑 개선, 묶음 단위 검색
역매핑 프레임 번호 기준 하나의 테이블 테이블 크기 매우 작음

 

 

 

 

06 세그먼테이션 기법 — 논리 단위로 나누다

프로세스 관점을 그대로 반영하는 가변 크기 분할

 

📖 핵심 개념
가변 분할 방식을 이용한 가상 메모리 관리 기법입니다. 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용하며, 같은 크기가 아니라 block의 크기로 나누어 서로 다를 수 있습니다. 프로세스 관점을 지원해 메모리를 크기가 변할 수 있는 세그먼트로 나누는 시스템을 세그먼테이션 시스템이라 합니다.

· 논리적 크기가 다르므로 메모리를 미리 분할하지 않음
· 논리적으로 나누어서 세그먼트 공유 및 보호가 용이
· 크기가 다르기 때문에 메모리 관리 및 오버헤드가 큼, 외부 단편화 발생 가능

 

세그먼테이션 메모리 관리의 장단점

 

✅ 장점

· 융통성 있는 보호, 내부 단편화 없음
· 공유 기능이 간단
· 작은 세그먼트 테이블은 메모리관리장치에 적합
· 전체 프로그램보다 세그먼트 대치가 쉬워 오버헤드가 적음
  ❌ 단점

· 세그먼트는 가변 길이라 클 수 있어 외부 단편화 발생
· 충분히 큰 영역을 찾을 수 있으나 관리 알고리즘이 비쌈
· 크기가 동일하지 않아 스와핑에 적합하지 않음

 

페이징 시스템 vs 세그먼테이션 시스템

 

구분 페이징 시스템 세그먼테이션 시스템
크기 동일 → 간단, 오버헤드 적음 가변 → 관리 오버헤드 큼
공유·보호 논리적 분할 없음 → 복잡 논리적 분할 → 간단

 

 

📋 세그먼테이션 테이블
세그먼트의 크기를 나타내는 limit와 물리 메모리상의 시작 주소를 나타내는 address가 있습니다. 각 세그먼트가 주어진 영역을 넘어가면 안 되기 때문에, 크기 정보에는 'size' 대신 제한을 뜻하는 'limit'를 사용합니다. 세그먼테이션 기법에서도 물리 메모리가 부족할 때는 스왑 영역을 사용합니다.

 

 

 

07 세그먼테이션-페이징 혼용 기법

두 기법의 장점만 취해 단점을 상쇄시키다

 

📖 핵심 개념
페이징과 세그먼테이션의 장점만 취한 가상 메모리 기법입니다.
· 페이징은 내부 단편화가 발생할 수 있으나, 메모리를 효율적으로 사용하고 작업 크기가 동일해 다양한 알고리즘 개발이 가능
· 세그먼테이션은 외부 단편화가 발생할 수 있으나, 가변적인 데이터 구조와 모듈 처리, 공유와 보호 지원이 편리
외부 단편화 문제를 제거하면서 할당 과정을 쉽게 해결

 

프로그램 분할 방법 3단계

 

순서 내용
1 논리 단위의 세그먼트로 분할
2 각 세그먼트를 고정된 크기의 페이지들로 분할
3 실제 페이지 단위로 메모리에 적재

 

 

⚠️ 혼용 기법의 트레이드오프
논리적 분할과 고정 크기 분할을 결합해 메모리 할당 관리 오버헤드는 작아지지만, 전체 테이블의 수가 증가해 메모리 소모가 큽니다. 주소 매핑 과정도 복잡해지며 성능이 저하될 수 있습니다.

 

메모리 접근 권한

 

메모리 접근 권한은 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한으로, 읽기·쓰기·실행 권한을 복합적으로 사용합니다.

 

구분 읽기 쓰기 실행 비고
모드 0 × × × 접근 불가
모드 1 × × 실행만 가능
모드 4 × × 읽기 전용
모드 5 × 읽고 실행 가능
모드 6 × 읽고 쓰기 가능
모드 7 제한 없음

 

📝 코드 영역

자기 자신을 수정하는 프로그램은 없으므로 읽기 및 실행 권한을 가짐
  💾 데이터 영역

일반 변수 → 읽기·쓰기 권한
상수 변수 → 읽기 권한만

 

⚠️ 권한 비트의 트레이드오프
페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에는 권한 비트가 추가됩니다. 메모리 관리자는 주소 변환이 이루어질 때마다 이 비트를 이용해 유효한 접근인지 확인합니다. 하지만 권한 비트가 추가되면 페이지 테이블 크기가 커져 메모리 낭비가 발생하므로, 반복되는 권한 비트를 줄이는 것이 중요합니다.

 

 

 

📌 핵심 정리

· 가상 메모리 : 물리 메모리 크기와 무관하게 큰 메모리 공간을 제공하는 기술 (스왑 영역 포함)
· 페이징 : 고정 분할, 페이지=가상 / 프레임=물리, 내부 단편화 발생
· 유효-무효 비트 : 페이지가 물리 메모리(Valid)에 있는지 스왑 영역(Invalid)에 있는지 표시
· 페이지 부재(Page Fault) : 무효 페이지 접근 시 발생하는 인터럽트 → 스왑 인으로 해결
· 세그먼테이션 : 가변 분할, 논리적 단위(세그먼트), 외부 단편화 발생
· 매핑 테이블 : 가상 주소 ↔ 물리 주소를 일대일 연결 (페이지 테이블 / 세그먼테이션 테이블)
· 매핑 방식 4가지 : 직접(빠름) · 연관(스왑영역) · 집합-연관(디렉터리) · 역매핑(작은 크기)
· TLB : CPU 내부 고속 캐시로 페이지 테이블 일부를 보관, 연관 매핑 이론을 실제 하드웨어로 구현
· 혼용 기법 : 세그먼트로 나눈 뒤 페이지로 재분할 — 외부 단편화 제거, 테이블 수 증가가 트레이드오프
· 접근 권한 : 읽기·쓰기·실행 조합(모드 0~7), 코드 영역은 읽기+실행, 데이터 영역은 가변

 

 

태그 : 가상메모리란페이징 세그먼테이션 차이페이지 프레임이란페이지 테이블 매핑방식직접매핑 연관매핑역매핑이란세그먼테이션-페이징 혼용기법메모리 접근권한운영체제 가상메모리운영체제 가상메모리 정리

반응형

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

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