가상 메모리

taeyul_de·2025년 2월 25일
0

물리 주소와 논리 주소

  1. 논리 주소(Logical Address)
    CPU가 생성한 주소로 가상주소 라고도 불린다.
    프로세스는 메모리 할당 시 실제 물리주소를 직접 알지 못한다.
    이 논리 주소는 CPU 내부의 레지스터에서 생성된다.
  2. 물리주소(Physical Address)
    실제 RAM에서 데이터가 저장되는 위치의 주소
    논리 주소와 달리, 메모리 컨트롤러가 실제 메모리 접근에 사용된다.

주소 변환 과정 (MMU의 역할)

MMU (Memory Management Unit) 는 논리 주소를 물리 주소로 변환하는 장치다.

동적/정적 주소 바인딩

  • 정적 바인딩 : 컴파일 시 주소 결정 (물리적 이동 불가능)
  • 동적 바인딩 : 실행 시 주소 결정 (가상 메모리 구현 가능)
    가상 메모리 -> 동적 주소 바인딩이 필수다.

스와핑과 연속 메모리 할당

스와핑은 프로세스를 메모리에서 디스크로 내보냈다가 필요 시 다시 불러오는 것이다.
스와핑을 사용하는 이유는 메모리 공간 확보CPU 유휴 방지 로 사용한다.

스와핑 과정

  1. 메모리에 공간 부족 -> 실행 중인 프로세스 중 비활성 상태 찾음
  2. 해당 프로세스를 디스크에 저장
  3. 새 프로세스가 메모리에 올라감
  4. 이전 프로세스 필요 시 다시 메모리로 불러오기

스레싱

스와핑이 지나치게 자주 발생하면 시스템 성능이 급격하게 저하된다.

연속 메모리 할당 (Contiquous Memory Allocation)

프로세스가 메모리에 연속된 블록으로 할당받는 방식이다.
주소 계산이 간단해 빠른 접근이 가능하고 하드웨어 구현이 쉽지만
메모리의 빈 공간이 작은 조각들로 흩어져 큰 프로세스 수용이 불가하고 내부 단편화로
할당된 메모리보다 작은 프로세스가 공간 낭비.


페이징을 통한 가상 메모리 관리

페이징 기법이란 가상 메모리와 물리 메모리를 같은 크기의 블록으로 나누어 관리하는 방법이다.

  • 가상 메모리 = 페이지(Page)
  • 물리 메모리 = 프레임(Frame)
    페이지와 프레임 크기가 같아서, 페이지가 프레임에 딱 맞게 들어간다.

페이징 과정

  1. 가상 주소 = 페이지 번호 + 오프셋 -> 페이지 테이블 확인 = 해당 페이지의 물리적 프레임 찾기.
    -> 물리 주소 = 프레임 번호 + 오프셋

페이지 테이블과 주소 변환

페이지 테이블 (Page Table)
페이지 번호와 해당 프레임 번호를 매핑
프로세스 마다 자신만의 페이지 테이블을 가진다

페이지부재(Page Fault)

CPU가 참조하려는 페이지가 메모리에 없을 때 발생한다.


페이지 교체 알고리즘

페이지 교체가 왜 필요할까?

메모리 공간이 가득 찼는데 새로운 페이지가 필요하면 기존 페이지 중 하나를 제거해야 한다. 여기서
어떤 페이지를 제거할지 결정하는게 페이지 교체 알고리즘.

교체 알고리즘 종류

  1. FIFO (Forst In First Out)
    가장 먼저 들어온 페이지 제거
    단순하지만, Belady의 이상현상 발생 가능
  2. LRU (Least Recently Used)
    가장 오래 사용되지 않은 페이지 제거
    과거 사용 패턴 기반이라 현실적이지만, 최근 사용 기록 관비 비용이 크다.
  3. Optimal (최적 교체)
    앞으로 가장 오랫동안 사용되지 않을 페이지 제거
    이론적으로 최적
    미래참조를 예측할 수 없어 실전 사용불가
  4. Second Chance (Clock Algorithm)
    FIFO 개선 버전
    각 페이지에 참조 비트가 1이면 다시 기회 부여
    참조 비트가 0이면 제거
profile
이래서 되겠나 싶은 개발지망생

0개의 댓글