가상메모리, 스와핑, 페이지폴트 그리고 스레싱

이강용·2024년 7월 22일
0

CS

목록 보기
86/109

가상 메모리(Virtual Memory)

  • 물리적인 메모리(램)의 한계를 극복하기 위해 사용되는 기술, 이를 통해 운영 체제는 실제 물리 메모리보다 더 많은 메모리를 사용할 수 있게 해줌

    페이지 : 가상 메모리를 사용하는 최소 크기 단위
    프레임 : 실제 디스크나 메모리를 사용하는 최소 크기 단위

구현

  1. 주소 공간 확장 : 프로세스마다 고유의 가상 주소 공간이 할당되며 이는 물리 메모리와 독립적으로 동작
  2. 페이지 : 가상 메모리는 일정 크기(일반적으로 4KB)의 페이지로 나뉨, 각 페이지는 물리 메모리의 프레임에 매핑
  3. 페이지 테이블 : 운영 체제는 페이지 테이블을 통해 가상 주소를 물리 주소로 변환

페이지 테이블

  • 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있는 페이지 테이블로 관리되며 이 때 속도향상을 위해 캐싱계층인 TLB(Translation Lookaside Buffer)를 씀

페이지 폴트(Page Fault)

  • 프로그램이 가상 메모리 페이지에 접근하려고 할 때, 해당 페이지가 물리 메모리에 존재하지 않음을 나타내는 이벤트, 페이지 폴트가 발생하면 운영 체제는 다음과 같은 작업을 수행함
  1. 페이지 폴트 트랩 : CPU는 페이지 폴트를 감지하고 운영 체제에 트랩을 발생시킴
  2. 페이지 테이블 조회 : 운영 체제는 페이지 테이블을 조회하여 해당 페이지가 디스크에 있는지 확인
  3. 스왑 인 : 디스크에서 해당 페이지를 물리 메모리로 읽어옴
  4. 페이지 테이블 업데이트 : 페이지 테이블을 업데이트하여 새로운 물리 메모리 주소를 매핑

스와핑(Swapping)

  • 가상 메모리 시스템에서 메모리 관리를 위한 기술 중 하나, 스와핑은 사용하지 않는 메모리 페이지를 디스크의 스왑 영역으로 이동시켜 물리 메모리를 해제하는 과정
  • 이를 통해 새로운 페이지를 위한 공간을 확보할 수 있음

구현

  1. 스왑 영역 : 디스크의 특정 영역에 스왑 공간이 할당
  2. 스왑 아웃 : 사용하지 않는 페이지를 스왑 영역으로 이동
  3. 스왑 인 : 필요해진 페이지를 다시 물리 메모리로 불러옴

스레싱(Thrashing)

  • 과도한 페이지 폴트로 인해 시스템 성능이 급격히 저하되는 현상, 이는 대부분의 시간 동안 CPU가 페이지를 스왑 인/아웃하는 데 소모되기 때문에 발생
  1. 원인 : 메모리 부족, 많은 프로세스의 동시 실행, 각 프로세스가 많은 메모리를 필요로 하는 경우
  2. 증상 : 시스템 성능 저하, 높은 디스크 I/O 활동, 느린 응답 시간
  3. 해결 방법
    • 메모리 증설 : 물리 메모리를 추가하여 페이지 폴트 발생을 줄임
    • 프로세스 수 줄이기 : 동시에 실행되는 프로세스의 수를 줄여 메모리 사용량을 감소시킴
    • 페이지 교체 알고리즘 개선 : 효율적인 페이지 교체 알고리즘을 사용하여 스레싱을 방지
    • 작업 세트(Working Set) 관리 : 각 프로세스의 작업 세트를 모니터링하여 필요한 메모리 양을 동적으로 조정, 작업 세트는 프로세스가 일정 기간 동안 자주 참조하는 페이지들의 집합
      • 작업 세트를 적절히 관리하면 필요한 페이지들이 메모리에 유지되어 페이지 폴트를 줄 일 수 있음
    • 페이지 폴트 빈도(PFF, Page Fault Frequency) 모니터링 : 페이지 폴트 빈도를 모니터링하고 일정 기준 이상으로 페이지 폴트가 발생하면 프로세스의 메모리 할당을 조정, 페이지 폴트 빈도가 높으면 메모리 할당을 늘리고, 낮으면 줄이는 방식으로 메모리 사용을 최적화함

가상 메모리의 필요성

1. 주기억장치의 효율적 관리(스와핑) 측면

  • 메모리 절약 및 최적화

    • 가상 메모리는 실제로 필요하지 않은 메모리 공간을 절약하고 동적으로 필요한 만큼만 물리 메모리를 할당함, 이를 통해 메모리 사용의 효율성을 극대화 할 수 있음
  • 스와핑을 통한 메모리 관리

    • 스와핑 : 가상 메모리는 스와핑을 통해 주기억장치의 효율적 관리를 가능하게 함, 사용하지 않는 메모리 페이지를 디스크의 스왑 영역으로 옮겨 물리 메모리를 해제하고, 필요한 페이지를 다시 로드하여 사용
  • 멀티태스킹 지원

    • 여러 프로세스가 동시에 실행될 때 각 프로세스가 필요한 만큼만 메모리를 할당받고 나머지 메모리는 다른 프로세스를 위해 사용, 이는 시스템의 전반적인 성능을 향상시킴

2. 메모리 관리의 단순화 측면

  • 추상화된 주소 공간
    • 가상 메모리는 각 프로세스에게 독립적인 가상 주소 공간을 제공함, 이를 통해 프로세스 간의 메모리 충돌을 방지하고 프로세스가 물리 메모리의 실제 주소를 알 필요 없이 작업을 수행할 수 있게 함
  • 메모리 보호
    • 가상 메모리는 메모리 보호 기능을 제공하여 프로세스가 자신의 메모리 영역을 넘어 다른 프로세스의 메모리에 접근하는 것을 방지, 이는 시스템의 안정성과 보안을 보장함
  • 메모리 할당과 해제의 단순화
    • 가상 메모리는 운영 체제가 메모리를 할당하고 해제하는 과정을 단순화함, 프로세스가 필요로 하는 메모리를 쉽게 할당받고 사용이 끝난 메모리를 쉽게 반환할 수 있음

3. 메모리 용량 및 안정성 보장의 측면

  • 확장된 메모리 용량
    • 가상 메모리는 물리 메모리보다 더 큰 주소 공간을 제공하여 물리 메모리의 한계를 극복, 이는 큰 프로그램이나 많은 데이터를 처리할 수 있게 함
  • 안정성 향상
    • 가상 메모리는 시스템의 안정성을 향상시킴, 메모리 부족으로 인한 프로그램 충돌을 방지하고 중요한 시스템 프로세스와 사용자 프로세스를 분리하여 독립적으로 관리할 수 있게 함
  • 프로그램 호환성
    • 가상 메모리는 프로그램 호환성을 향상시킴, 다양한 하드웨어와 운영 체제 환경에서 동일한 프로그램이 실행될 수 있도록 도와줌
profile
HW + SW = 1

0개의 댓글