Data Engineering/혼공컴운
혼자 공부하는 컴퓨터구조 + 운영체제 14장 정리
potatode
2025. 4. 1. 20:37
14. 가상 메모리
14-1. 연속 메모리 할당
: 프로세스에 연속적인 메모리 공간을 할당하는 방식
스와핑
: 사용하지 않는 프로세스들을 보조기억장치로 쫓아내고, 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식
- 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역
- 스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
- 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨지는 것
- 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스 동시 실행 가능
메모리 할당
- 비어있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식
- 최초 적합
- 검색 최소화 가능
- 빠른 할당 가능
- : 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스 배치하는 방식
- 최적 적합
- : 빈 공간을 모두 검색 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스 배치
- 최악 적합
- : 빈 공간을 모두 검색 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스 배치
외부 단편화
: 메모리 사이에 빈 공간이 생기지만, 그 공간보다 큰 프로세스를 적재하기 어려운 상황으로 메모리 낭비가 되는 현상
- 해결방법
- 압축
- : 빈 공간을 하나로 모으는 방식
- 페이징 기법
14-2. 페이징을 통한 가상 메모리 관리
페이징이란
: 논리 주소 공간을 페이지라는 일정한 단위로 자름
- 프레임(메모리 물리 주소 공간)이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법
- 페이지 아웃
- : 메모리에 적재될 필요가 없는 페이지들은 보조 기억 장치로 스왑 아웃
- 페이지 인
- : 실행에 필요한 페이지들은 메모리로 스왑 인
⇒ 한 프로세스 실행을 위해 프로세스 전체가 메모리에 적재될 필요가 없다.
페이지 테이블
: 페이지 번호와 프레임 번호를 짝지어주는 일종의 이정표
- 현재 어떤 페이지가 어떤 프레임에 할당되어있는지 알려줌
- CPU 내의 페이지 테이블 베이스 레지스터는 각 프로세스의 페이지 테이블이 적재되니 주소를 가리킴
- TLB : 페이지 테이블의 캐시 메모리
- 페이지 테이블의 일부 내용 저장
- TLB 히트 : 논리주소에 대한 페이지가 TLB에 있을 경우
- TLB 미스 : 없는 경우
페이징에서의 주소 변환
- 페이징 시스템에서는 모든 논리 주소가 기본적으로 페이지 번호와 변위로 이루어짐
- 변위 : 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보
페이지 테이블 엔트리
: 페이지 테이블의 각각의 행들
- 유효 비트 : 해당 페이지에 접근 가능한지 여부
- 유효비트가 0인 메모리에 적재 되어있지 않은 페이지로 접근하면
- ⇒ 페이지 폴트 발생 = 예외
- 보호 비트 : 페이지 보호 기능을 위해 존재하는 비트
- 읽기, 쓰기, 실행의 권한 조합
- 참조 비트 : CPU가 이 페이지에 접근한 적이 있는지 여부 나타냄
- 수정 비트 : 페이지에 데이터를 쓴 적이 있는지 수정여부
- 더티 비트
14-3. 페이지 교체와 프레임 할당
요구 페이징
: 프로세스를 메모리에 적재할 때 필요한 페이지만을 메모리에 적재하는 기법
- 실행에 요구되는 페이지만 적재
- 필요한 해결요소
- 페이지 교체
- : 쫓아낼 페이지를 결정하는 방법
- 프레임 할당
페이지 교체 알고리즘
- 좋은 페이지 교체 알고리즘 : 페이지 폴트를 적게 일으키는 알고리즘
- 알고리즘 평가 방법 : 페이지 폴트 횟수
- 페이지 참조열을 통해 페이지 폴트 횟수 알 수 있음
- 페이지 참조열 : CPU가 참조하는 페이지들 중 연속되는 페이지를 생략한 페이지열
- 생략하는 이유 : 중복된 페이지를 참조하는 행위는 페이지 폴트를 발생시키지 않기 때문
- 페이지 참조열 : CPU가 참조하는 페이지들 중 연속되는 페이지를 생략한 페이지열
- FIFO 페이지 교체 알고리즘
- 아이디어와 구현은 간단하지만, 마냥 좋은 기법이 아님
- 프로그램 실행 내내 필요할 수 있음
- 아이디어와 구현은 간단하지만, 마냥 좋은 기법이 아님
- : 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식
- 최적 페이지 교체 알고리즘
- 가장 낮은 페이지 폴트율을 보장하는 알고리즘
- 단점 : 구현이 어려움
- 앞으로 오랫동안 사용되지 않을 페이지 예측이 어려움
- 그래서 보통 성능 평가 목적으로 사용
- : CPU에 참조되는 횟수를 고려하는 페이지 교체 알고리즘
- LRU 페이지 교체 알고리즘
- : 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘
스래싱과 프레임 할당
- 사용할 수 있는 프레임 수가 적어도 페이지 폴트는 자주 발생
- 스래싱 : 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
- 멀티프로그래밍의 정도 : 메모리에서 동시 실행되는 프로세스의 수
- 정도가 높음 → 많은 프로세스 동시 실행 중
- 멀티프로그래밍 정도가 높음 ≠ CPU 이용률 증가
- 스래싱 발생 이유 : 각 프로세스가 필요로 하는 최소 프레임수가 보장되지 않음
- 프레임 할당 방식
- 균등 할당
- 비례 할당 : 크기에 따라 프레임 할당
- 프레임 결정 방식
- 작업 집합 모델
- 프로세스가 일정 기간 동안 참조한 페이지 집합을 기억
- 작업 집합 : 실행 중인 프로세스가 일정 시간동안 참조한 페이지의 집합
- 페이지 폴트 빈도
- : 페이지 폴트율에 상한선, 하한선을 정하고, 이 범위 안에서만 프레임 할당
- 작업 집합 모델
반응형