[CS] 14. 가상 메모리

eunoia73·2025년 4월 15일
1

TIL

목록 보기
31/32

1. 연속 메모리 할당

연속 메모리 할당 방식 - 프로세스에 연속적인 메모리 공간을 할당하는 방식

스와핑 - 오랫동안 사용되지 않은 프로세스를 임시로 보조기억장치의 스왑 영역으로 쫒아내고, 그렇게 생긴 메모리의 빈 공간에 다른 프로세스를 적재하여 실행하는 방식

* 메모리 할당 방식

최초 적합 - 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
최적 적합 - 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식
최악 적합 - 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식

외부 단편화 - 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상
→ 페이징 기법을 통해 해결 가능

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

가상 메모리 - 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술

페이징 - 프로세스의 물리 주소 공간을 프레임단위로 자르고, 논리 주소 공간을 페이지단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법

페이지 테이블 - 프로세스가 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치되도록 하는 것. 어떤 페이지가 어떤 프레임에 할당되었는지 알려줌

페이지 테이블 베이스 레지스터(PTBR) - 각 프로세스의 페이지 테이블이 적재된 주소를 가리킴

메모리 접근 시간이 두 배로 늘어나기 때문에 TLB(페이지 테이블의 캐시 메모리)를 둠

페이징에서의 주소 변환

페이징 시스템에서의 논리주소는 페이지 번호변위로 구성됨
변위 - 접근하려는 주소가 프레임의 시작 번지에서 얼마나 떨어져있는지에 대한 정보

페이지 테이블 엔트리

  • 유효 비트 - 현재 해당 페이지에 접근 가능한지 여부를 알려줌. 페이지가 메모리에 적재되었는지 여부.
    ** 페이지 폴트 - 유효비트가 0(메모리 적재X)인 페이지에 접근하려했을 때 발생하는 오류
  • 보호 비트 - 페이지 보호 기능을 위해 존재하는 비트. 읽고 쓰기 가능한지 읽기만 가능한 페이지인지 나타냄
  • 참조 비트 - CPU가 이 페이지에 접근한 적이 있는지 여부 나타냄
  • 수정 비트(더티 비트) - 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부를 나타냄. 페이지가 메모리에서 사라질 때 보조기억장치에 쓰기 작업을 해야하는지, 할 필요 없는지 판단 위해 존재
  • 쓰기 시 복사
    프로세스를 복제할 때 자식 프로세스와 부모 프로세스가 동일한 메모리를 할당해야하는데, 초기에는 메모리 효율을 위해 실제로 복사하지 않고 페이지를 공유한다.
    → 쓰기를 하면 그 순간 해당 페이지가 별도의 공간으로 복제된다.

  • 계층적 페이징(다단계 페이지 테이블)
    페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식

3. 페이지 교체와 프레임 할당

요구 페이징 - 페이지가 필요할 때에만 메모리에 적재하는 방법
안정적으로 작동하기 위해 페이지 교체, 프레임 할당을 해결해야한다.

페이지 교체 알고리즘

좋은 페이지 교체 알고리즘이란? → 페이지 폴트를 적게 일으키는 알고리즘
페이지 참조열을 통해 페이지 폴트 횟수를 알 수 있다.

1) FIFO 페이지 교체 알고리즘
가장 먼저 적재된 페이지를 먼저 교체하는 알고리즘
** 2차 기회 페이지 교체 알고리즘
페이지의 참조 비트가 1일 경우 바로 교체하지 않고 참조 비트를 0으로 만든 후 현재 시간을 적재시간으로 설정

2) 최적 페이지 교체 알고리즘
CPU에 의해 참조되는 횟수르르 고려하는 페이지 교체 알고리즘
앞으로의 사용 빈도가 가장 낮은 페이지를 교체하는 알고리즘
→ 페이지 폴트 발생 빈도가 낮지만 실제 구현이 어려움

3) LRU(Least Recently Used) 페이지 교체 알고리즘
가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘

스래싱과 프레임 할당

프로세스가 사용할 수 있는 프레임 수가 적어도 페이지 폴트는 자주 발생한다.
스래싱 - 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제. 빈번한 페이지 교체로 인해 CPU 이용률이 낮아지는 문제

정적 프레임 할당 방식

  • 균등 할당 - 모든 프로세스에 동일한 프레임을 배분하는 방식
  • 비례 할당 - 프로세스 크기에 따라 프레임을 배분하는 방식

동적 프레임 할당 방식

  • 작업 집합 모델 - 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합(작업 집합)을 참조하여 프레임을 할당하는 방식
  • 페이지 폴트 빈도 - 페이지 폴트율에 상한선과 하한선을 정하고 그 내부 범위 안에서만 프레임을 할당하는 방식

[혼자 공부하는 컴퓨터구조 + 운영체제] 책을 읽고 정리한 기록입니다.

0개의 댓글