가상 메모리

이태곤·2023년 9월 1일
0

Operating System

목록 보기
4/13
post-thumbnail

1. 가상 메모리 (Virtual Memory)

  • 운영체제에서 사용되는 메모리 관리 기법으로, 실제로 사용 가능한 Physical Memory를 추상화하여 사용자 및 프로세스들에게 매우 큰 메모리를 가진것처럼 메모리 공간을 제공하는 것

  • Virtual address: 가상 메모리의 주소

  • Physical address: 시스템의 실제 메모리 주소

  • 페이지: 가상 메모리를 사용하는 최소 크기 단위

  • 프레임: 디스크나 메모리를 사용하는 최소 크기 단위

  • MMU(Memory Management Unit): 페이지 단위로 가상 주소를 실제 물리 주소로 변환하는 역할

  • 페이지 테이블: 가상 메모리와 물리 메모리 간의 매핑 정보를 저장하는 테이블이며, (Memory Management Unit, MMU)에 의해 관리된다.

  • TLB (Translation Lookaside Buffer): 페이지 테이블을 더 효율적으로 활용하기 위해서 메모리와 CPU 사이에 있는 캐시 계층으로, 주소 변환 정보를 일시적으로 저장하고 검색하는 데 사용된다.
    → 주소 변환 작업의 속도 향상

  • 과정

    1. CPU가 가상 주소를 가지고 있을 때, 해당 가상 주소에 대응하는 실제 주소를 찾기 위해 TLB를 참조
    2. 만약 TLB에서 매핑 정보를 찾을 수 없으면 TLB miss가 발생하고, 페이지 테이블을 참조
    3. Page table에서도 매핑 정보를 찾을 수 없으면 page fault 발생
      • 페이지 폴트(page fault)가 발생하면 운영 체제는 페이지 폴트를 처리하고 필요한 페이지를 메모리로 로드하기 위해 트랩을 발생
      • Page fault: 가상 메모리 관리에서 발생하는 현상으로, 페이지 테이블에 있는 페이지 번호에 해당하는 페이지가 실제 물리 메모리에 로드되어 있지 않을 때 발생
    4. page fault가 발생하면 Swapping을 통해 해당 페이지를 디스크로부터 가져오고, 현재 물리 메모리에 비어 있는 프레임에 로드
      • Swapping: 현재 메모리에 로드된 일부 프로세스나 데이터를 하드 디스크의 스왑 파일로 이동하여 메모리 공간을 확보한 후, 필요한 프로세스나 데이터를 하드 디스크로부터 다시 메모리로 로드하는 과정
  • 가상 메모리의 필요성

    1. 주기억 장치의 효율적 관리: 당장 실행에 필요한 페이지만 램에 유지하고, 자주 사용되지 않는 데이터들은 디스크 영역으로 swapping out 함으로써 램을 효과적으로 관리
      → 요구페이징 기법 (Demand Paging): 주기억 장치인 램에 실제 필요한 페이지만 올리는 메모리 관리 기술로, 메모리 효율성을 향상시키며 더 많은 프로그램을 동시에 실행할 수 있게된다.
    2. 메모리 용량 및 안정성 보장: 가상 메모리를 사용하여 마치 무한한 메모리 공간을 제공하므로, 프로세스 간 충돌과 침범을 피할 수 있으며, 메모리 용량을 효과적으로 확장하여 안정성을 보장한다.

2. 스레싱 (Thrashing)

  • 페이지 폴트율이 높은 상태를 말한다.

  • 스레싱 과정

    1. 여러 프로세스가 메모리에 동시에 로드되고 각 프로세스가 많은 페이지를 필요로 하는 경우, 메모리에 올려야 할 페이지 수가 증가하게 되므로 페이지 부재율이 증가
    2. swapping으로 인해 CPU Utilization↓
    3. 운영 체제는 CPU 활용도가 감소하여 한가하다고 판단할 수 있으며, 이로 인해 메모리에 더 많은 프로세스를 로드
    4. CPU Utilization은 계속해서 감소
  • 해결방법

    1. 메모리 크기 증가
    2. HDD → SSD: 조금 더 빠른 하드웨어로 교체
    3. Working Set: 프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어 미리 메모리에 로드 시키는 방법
    4. PFF (Page Fault Frequency): 페이지폴트의 상한선과 하한선을 만들고, 상한선 도달시에 프레임을 늘리고 하한선 도달시에 프레임을 줄이는 방법

0개의 댓글