가상메모리

zzzzzang_gu·2023년 3월 21일
0

cs이론

목록 보기
9/13

가상 메모리 (Virtual Memory System)

리눅스를 예로 하나의 프로세스당 4GB가 부여된다 하지만 통상 메모리는 8GB,16GB인데 많이 부족해보인다.
가상 메모리는 메모리 용량 부족 이슈, 프로세스 메모리 영역간에 침법이슈등 여러 프로세스를 동시에 실행하기 위해 필요하다. 만약 하나의 프로세스만 실행 가능한 시스템 (배치 처리 시스템)일 경우 필요 없다.

가상 메모리 : 메모리가 실제 메모리보다 많아 보이게 하는 기술

프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고 쓸때만 물리 주소로 바꿔주는 아이디어.

  • virtual address (가상주소) : 프로세스가 참조하는 주소
  • physical address (물리주소) : 실제 메모리 주소

MMU (Memory Management Unit)

cpu에서 코드 실행시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소로 변환해주는 하드웨어 장치


페이징 시스템 (Paging System)

  • 크기가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리
  • 하드웨어 지원이 필요하다.
  • 페이지 테이블 ?
    - 구조 : page또는 pageframe : 고정된 크기의 block(4kb)
    - 가상 주소 v 는 p, d / p- 가상 메모리 위치, d - p안에서 참조하는 위치

다중 단계 페이징 시스템

페이지를 비트로 구분해 단계를 나눈다.

page table에는 가상 주소와 물리 주소간 매핑 정보가 있다.
페이징 정보를 단계를 나누어 생성해 필요없는 페이지는 생성하지 않으며, 공간 절약이 가능하다.

MMU와 TLB

TLB : 페이지 정보 캐쉬

MMU가 물리 주소를 확인하기 위해 메모리를 갔다와야 하는데 TLB를 이용해 최근 접근한 가상주소에 물리주소가 저장되어 있어 시간 절약이 가능하다.


요구 페이징 (Demand Paging, Demaded Paging)

프로세스 모든 데이터를 메모리에 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재함, 선행 페이징의 반대 개념이다. 언제 필요한건지는 페이지 폴트에 의해 결정

선행 페이징 : 미리 프로세스 관련 모든 데이터를 메모리에 올려놓고 실행하는 개념

페이지 폴트

  • 어떤 페이지가 실제 물리 메모리에 없을 때 일어나는 인터럽트
  • 운영체제가 page fault가 일어나면, 해당 페이지를 물리 메모리에 올림

인터럽트 : 미리 정의되어 각각 번호와 실행코드를 가르키는 주소가 기록되어 있음

  • 컴퓨터 부팅시 IDT에 기록

페이지 교체 정책

특정 페이지를 물리 메모리에 올려야 하는데 물리 메모리가 다 찼다면 기존 페이지 중 하나를 물리 메모리에서 자장 매체로 내리고 새로운 페이지를 해당 물리 메모리 공간에 올린다.

  • FIFO 알고리즘 : 가장 먼저 들어온 페이지를 내림
  • OPT 알고리즘 : 앞으로 오랫동안 사용할 일 없는 페이지를 교체 (예측?불가능)
  • LRV 알고리즘 : 가장 오래전 사용된 페이지 교체 - 메모리 지역성 기반
  • LFU 알고리즘 : 가장 적게 사용된 페이지 교체
  • NUR 알고리즘 : LRV와 비슷, 읽었는지, 썻는지 순서를 매겨 교체

쓰레싱 (Thrashing)

반복적으로 페이지 폴트가 발생해서, 과도하게 페이지 교체 작업이 일어나, 실제로는 아무일도 하지 못하는 현상

profile
프론트엔드 개발자가 되겠습니다🔥

0개의 댓글