전체 목록
운영체제Medium#084

가상 메모리(Virtual Memory)란 무엇이며, 페이징(Paging)은 어떻게 동작하나요?

#OS#가상메모리#페이징#메모리관리

답변 포인트

물리 메모리보다 큰 프로그램을 실행할 수 있는 이유를 생각해보세요.

정답 및 해설

빠른 요약

가상 메모리는 실제 물리 메모리보다 큰 주소 공간을 프로세스에 제공하는 기술입니다. 동작 원리: - 프로세스의 주소 공간을 일정 크기의 페이지(Page)로 나눔 - 물리 메모리(프레임)와 페이지 테이블로 매핑 - 현재 필요한 페이지만 물리 메모리에 로드 (요구 페이징) Page Fault: - 필요한 페이지가 물리 메모리에 없을 때 발생 - OS가 디스크에서 해당 페이지를 메모리로 로드 장점: 메모리 효율 향상, 프로세스 간 격리 단점: 페이지 폴트 시 디스크 I/O로 성능 저하 가능

가상 메모리(Virtual Memory)는 프로세스에게 실제 물리 메모리(RAM)보다 더 큰 주소 공간을 제공하는 메모리 관리 기술입니다. 각 프로세스는 독립된 가상 주소 공간을 가지므로 서로의 메모리 영역에 접근할 수 없어 보안과 격리성이 보장됩니다. 실제로 필요한 페이지만 물리 메모리에 적재하고 나머지는 디스크에 보관함으로써 메모리를 효율적으로 활용합니다.

가상 메모리의 필요성

운영체제
    :
1.   :     RAM  
2.  :     
3.  :       
4.   :      

   :
- 32 : 4GB    (  )
- 64 :  TB   
-    
-     

페이징(Paging) 기본 개념

주요 용어

운영체제
 

 Page 0  Page 1  Page 2  Page 3  Page 4  Page 5   

  4KB      4KB      4KB      4KB      4KB      4KB

  (RAM)

 Frame 0  Frame 1  Frame 2  Frame 3   

   4KB      4KB       4KB      4KB

 ( )

 Swap Page  Swap Page  Swap Page  Swap Page  ...   


Page:       ( 4KB)
Frame:   Page   
Page Table:         

페이지 테이블(Page Table)

구조와 주소 변환

운영체제
   (32, 4KB ):

     (VPN)      
      (20)              (12)    

  2^20 = 1M           2^12 = 4KB

  :
 : VPN=5, Offset=100
    
     Page Table 
Page Table:
  VPN 0  Frame 3 (  )
  VPN 1  Frame 7 (  )
  VPN 2  Disk    (  , Present bit=0)
  VPN 5  Frame 2 (  )
    
    
 : Frame=2, Offset=100
  = Frame × Page + Offset
          = 2 × 4096 + 100
          = 8292

페이지 테이블 엔트리 구조

운영체제
 PTE (Page Table Entry)  :

 Present Dirty  Accessed Protection Frame Number   
  (P)     (D)      (A)    (R/W/X)                  


Present bit (P): 1 =   , 0 =  
Dirty bit (D): 1 =   (     )
Accessed bit (A):    (   )
Protection: // 

TLB (Translation Lookaside Buffer)

페이지 테이블 조회의 성능 문제

운영체제
TLB   :
1.   VPN 
2.    (  1)
3.   
4.    (  1)
  2   (2 )

TLB를 사용한 성능 최적화

운영체제
TLB:       
     CPU  ,   ( )
      64~1024 

TLB Hit ( 99%):
     TLB         
   1  

TLB Miss:
     TLB        TLB 
        
   2  

:
      = hit_rate × TLB_time + miss_rate × (TLB_time + PT_access_time)
  = 0.99 × 1ns + 0.01 × (1ns + 100ns)  2ns (vs 200ns for two memory accesses)

페이지 폴트 (Page Fault)

발생 과정

운영체제
   
        
        
TLB 
        
  TLB Hit?
  
  YES         NO
             
     
          
           Present bit = 1?
           
           YES         NO
                      
               !
                   
                       
                   OS  
                       
                    
                       
                    
                       
                    
                       
                   

페이지 폴트 처리 과정 상세

운영체제
1. CPU    
2.     (PCB)
3. OS    
4.     
   -   SIGSEGV (Segmentation Fault) 
5. ( )  
6.    
   -       
7.    TLB 
8.  

Java에서의 페이지 폴트 영향

Java
// 대용량 배열 초기화 시 페이지 폴트 발생
public class PageFaultExample {

    // 처음 접근 시 페이지 폴트 발생 → 점차 빨라짐
    public static void main(String[] args) {
        int size = 1024 * 1024; // 1M int = 4MB
        int[] largeArray = new int[size]; // 메모리 할당만, 아직 물리 페이지 미할당

        long start = System.nanoTime();
        for (int i = 0; i < size; i++) {
            largeArray[i] = i; // 처음 접근 시 페이지 폴트 발생
        }
        System.out.println("소요 시간: " + (System.nanoTime() - start) + "ns");

        // 두 번째 실행: 페이지가 이미 메모리에 있으므로 훨씬 빠름
        start = System.nanoTime();
        for (int i = 0; i < size; i++) {
            largeArray[i] = i * 2;
        }
        System.out.println("두 번째 소요 시간: " + (System.nanoTime() - start) + "ns");
    }
}

페이지 교체 알고리즘

물리 메모리가 가득 찼을 때, 어떤 페이지를 내보낼지 결정합니다.

주요 알고리즘

운영체제
1. OPT (Optimal,  ):
         
          ,   

2. FIFO (First In First Out):
       
    Belady's Anomaly:       

3. LRU (Least Recently Used):   
        
    (Locality)  ,  
     :       

4. LFU (Least Frequently Used):
        
            

5. Clock (NRU - Not Recently Used): Linux  LRU
    Reference bit ,     
    LRU ,  

LRU 알고리즘 예시

운영체제
  3,   : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3

  |          | 

  7   | [7, -, -]         | 
  0   | [7, 0, -]         | 
  1   | [7, 0, 1]         | 
  2   | [2, 0, 1]         |  (7  -   )
  0   | [2, 0, 1]         | (0 )
  3   | [2, 0, 3]         |  (1 )
  0   | [2, 0, 3]         | (0 )
  4   | [4, 0, 3]         |  (2 )
  ...

       

가상 메모리와 스와핑

운영체제
   :
1.     (victim page) 
2. Dirty bit = 1 () 
3.   
4.   

(Thrashing):
-       
-     
- CPU  
- :    ,  (Working Set) 

요약 표

개념설명역할
가상 주소프로세스가 사용하는 논리적 주소프로세스 격리, 큰 주소 공간 제공
물리 주소실제 RAM의 주소실제 데이터 저장 위치
페이지 (Page)가상 메모리의 고정 크기 단위 (4KB)가상 메모리 분할
프레임 (Frame)물리 메모리의 고정 크기 단위 (4KB)물리 메모리 분할
페이지 테이블VPN → Frame 번호 매핑주소 변환
TLB페이지 테이블 캐시 (하드웨어)주소 변환 속도 향상
페이지 폴트요청 페이지가 물리 메모리에 없음OS가 디스크에서 로드
스왑 영역디스크의 임시 메모리 공간물리 메모리 확장
페이지 교체 알고리즘기준구현 복잡도성능
OPT미래 최장 미사용불가 (이론)최적
FIFO가장 오래 적재됨낮음낮음
LRU가장 오래 미사용높음우수
LFU참조 횟수 최소중간중간
ClockNRU 근사낮음LRU와 유사

관련 질문

같은 카테고리/태그 기준