가상 메모리 관리

2025. 12. 1. 13:43·CS/운영체제

페이징과 페이지 테이블

스와핑(swapping) 프로세스를 보조기억장치의 일부 영역으로 쫓아내고 당장 필요한 프로세스를 적재하는 메모리 관리 기법
스왑 아웃(swap-out) 프로세스를 보조기억장치의 일부 영역으로 쫓아내는 것
스왑 인(swap-in) 스왑 아웃된 프로세스를 메모리에 적재하는 것
스왑 영역 스왑 아웃된 프로세스가 적재되는 보조기억장치 영역

 

* 연속 메모리 할당.

    - 이렇게 할당하면 외부 단편화 문제가 발생함. (작업 끝나면 빈 공간이 생기는 메모리 낭비 문제)

 

[Paging]

메모리와 프로세스를 일정한 단위로 자르고.

그 메모리(Frame)에 프로세스(Page)를 할당한다면 외부 단편화 문제가 안 생김. 

 

BUT 페이징을 사용하면. 내부 단편화가 생김.

1개의 프로세스당 1개의 페이지 크기보다 작은 메모리 낭비가 생길 수 있음.

 

CPU 입장에서 순차적으로 실행할 수 없으니, 페이지 주소가 필요함.

-> 페이지 테이블

 

페이지 테이블

- 프레임과 페이지의 매핑 정보를 담고 있는 표 형태의 데이터

- 프로세스마다 페이지 테이블을 갖고 있다.

 

페이지 테이블은 메모리에 있으면 너무 오래걸림.

페이지 테이블의 캐시 메모리 (TLB: Translation Look-aside Buffer)에 저장.

 

* 페이지 테이블 내 정보: 유효 비트(valid bit)

  • 접근하려는 페이지가 보조기억장치에 있을 경우: 페이지 폴트(page fault)
    • 1. 작업 내역 백업
    • 2. 페이지 폴트 루틴 실행 - 접근하려는 페이지 적재
    • 3. 유효 비트 1로 변경
    • 4. 접근하려는 페이지 접근

 

요구 페이징, 스래싱

  • 처음부터 모든 페이지를 적재하지 않고
  • 페이지 폴트가 발생하면 그때 페이지를 적재한다

스래싱

  • 프로세스 실행 시간보다 페이징에 더 많은 시간이 소요되는 문제
  • 지나친 페이지 폴트로 인해 페이지 교체에 너무 많은 시간을 소요하여 저하되는 문제

페이지 폴트를 줄이는 방법: 메모리 크기를 엄청 늘리기 (비현실적)

* 페이지 교체 알고리즘

 

페이지 교체 알고리즘

FIFO 페이지 교체 알고리즘 가장 먼저 메모리에 적재된 페이지부터 페이지-아웃
2차 기회 FIFO 페이지 교체 알고리즘 가장 오래 메모리에 머물렀던 페이지부터 페이지-아웃
최적 페이지 교체 알고리즘  앞으로의 사용 빈도가 가장 낮은 페이지부터 교체하는 알고리즘 (얘는 평가용 Baseline)
LRU 페이지 교체 알고리즘 가장 오랫동안 사용되지 않은 페이지를 교체 해버림.

 

캐시 메모리 정책

*캐시 메모리

- CPU와 메모리 간의 속도 차를 극복하기 위해 탄생.

- CPU와 메모리 사이에 위치, 레지스터보다는 용량이 크고 메모리보다는 빠른 SRAM 기반.

- CPU에서 사용할 법한 정보를 미리 가져와 저장

- 메모리가 대형 마트라면 캐시 메모리는 편의점.

 

캐시 메모리 쓰기 정책

  • 즉시 쓰기(write-through) - 캐시 메모리와 메모리에 동시에 쓰기
  • 메모리를 항상 최신 상태로 유지: 일관성이 깨지는 상황 방지

 

 

'CS > 운영체제' 카테고리의 다른 글

컨테이너  (0) 2025.12.01
파일 시스템  (1) 2025.12.01
동기화와 교착 상태  (0) 2025.12.01
CPU 스케줄링  (0) 2025.11.24
프로세스와 스레드  (0) 2025.11.24
'CS/운영체제' 카테고리의 다른 글
  • 컨테이너
  • 파일 시스템
  • 동기화와 교착 상태
  • CPU 스케줄링
Yun Lab.
Yun Lab.
Yun Lab.
  • Yun Lab.
    윤랩
    Yun Lab.
  • 글쓰기 방명록 관리자
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • CS (13)
        • 컴퓨터구조 (6)
        • 운영체제 (7)
        • 네트워크 (0)
        • 시스템 프로그래밍 (0)
        • 데이터베이스 (0)
      • Git (0)
      • AI Study (6)
        • LLM (0)
        • Machine Learning (6)
      • 자격증 (2)
        • AICE (1)
        • 리눅스마스터 (1)
      • 논문리뷰 (4)
        • NeurIPS (0)
        • ICLR (1)
        • ICML (1)
        • 기타 (2)
      • 코딩테스트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    교착상태
    서포트벡터머신
    도커
    프로세스와 스레드
    머신러닝
    K-최근접이웃
    쿠버네티스
    ICML
    2025ICML
    운영체제
    디시전트리
    multi-agent
    LLM
    의사결정나무
    Machine Learning
    리눅스마스터
    SVM
    ML
    ICLR2025
    명렁어
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
Yun Lab.
가상 메모리 관리
상단으로

티스토리툴바