시스템구조

컴퓨터 구조_가상메모리_스레싱(thrashing), 페이지 기반 가상메모리, TLB, FIFO, LRU, MRU, 교체, 적중률

스윙스윙 2021. 9. 29. 18:49

▣ 컴퓨터 구조_가상메모리_스레싱(thrashing), 페이지 기반 가상메모리, TLB

다중 프로그래밍과 가상 메모리 사용 환경에서 프로그램 실행보다 페이지 교체에 더 많은 부하가 발생하는 상태

 

 

■ 스레싱의 주요원인

부적절한
페이지
교체 정책
 Belady’s Anomaly
– Page Miss율 증가
– 페이지 교체 정책 실패
– page 추가 hit rate 감소
– Small Page Size
– 다수 Page 사용
– Paging Overhead 증가
– Paging 시간 > 처리시간
시스템
리소스
부족
– 작은 L2 캐시
– 낮은 메모리용량
– Page Miss Ratio 증가
– 빈번한 Page Fault 발생
– Memory Clock
– Single Core
– Single Channel Memory
– 저성능 CPU/Core 사용
프로그램
메모리
관리 실패
– 과도한 thread()
– 무분별한 fork()
– 과도한 프로세스 발생
– Instance, Method Load
– exit(0) 미사용
– G/C 미수행
– 메모리 누수/관리 실패
– Zombie, 메모리 점유

 

■ 스레싱의 해결방안

- 작업 집합(Working Set Model)

원리 – 지역성 가정을 기반으로 동작 – 지역성 기반
특징 – 과도기, 안정기가 주기적 반복 – 프로세스 변화
장점 – Multi-Programming 정도 높임 – Page Hit rate증가
– CPU 활용률 최적화 – 임계치 극대화
단점 – Working Set 추적관리 복잡 – 크기/구성 변화
– Window 사이즈 설정이 모호함 – 최적값 모름
– 참조 페이지 Queue 유지관리 – 메모리관리 복잡

- 페이지 부재 빈도(Page Fault Frequency)

원리 – 스레싱은 페이지 부재에서 발생 – 부재 비율 조절
특징 – 페이지 부재 비율 높음 – 프레임 할당
– 페이지 부재 비율 낮음 – 프레임 회수
장점 – 페이지 부재 발생 시에만 실행 – Overhead 적음
– 직접 페이지 부재율 조절 가능 – 수동프레임 할당
단점 – 프로세스 중지 과정 발생 – 부재율 증가
– 페이지 참조 신규 지역성 이동 – 작동 어려움

 

 


2018년 93번

정답 : 4번

멀티 프로그래밍 환경에서 CPU 가 프로세스 실행보다 Page 교체에 더 많은 시간을 소비하는 비정상적인 현상 

작업집합 (Working Set) 이나 페이지 부재 빈도 (Page Fault frequency) 조정을 통해 해결한다

 

swap out
메인 메모리 한정된 용량으로 인해 메모리의 정보를 보조기억장치(HDD 등)에 보관하는 영역을 SWAP 영역이라고
하며 MEM ↔ SWAP 영역 간 이동하는 과정을 swapping 이라고 한다.

Swapping은 MEM에서 HDD로 이동하는 swap out과 HDD에서 MEM으로 적재하는 swap in으로 구성되어 있다

 

 


2018년 94번

정답 : 2번

메모리에 액세스하기 위한 주소 정보를 저장하고 있는 페이지 테이블이 하드디스크에 있을 경우 

메모리 접근시간보다 주소탐색 시간에 더 많은 시간이 소요되기 때문에 성능이 저하된다

 

페이지 테이블이 물리 기억장치(주기억장치) 상에 존재하기 때문에, 메모리를 액세스 할 때마다 한 번은 물리 기억장치의 페이지 테이블을 다른 한 번은 가상 기억장치에 필요한 데이터를 총 두 번을 액세스 해야 하기 때문에 액세스 시간을 길어지게 만드는 단점이 생깁니다. 

이 문제를 해결하기 위해 프로세서에 내장된 캐시의 일종인 변환 우선참조 버퍼(Translation Lookaside Buffer/TLB)를 사용합니다.

TLB도 캐시의 일종이기 때문에 연관 액세스 방식을 사용하며, CPU가 생성한 가상 주소에 대한 페이지 정보가 변환 우선참조 버퍼 안에 존재한다면, 시간을 지체하지 않고 바로 물리 주소를 생성합니다.존재하지 않는다면 페이지 테이블을 참조하는데 이때, 테이블에서 적중(hit)하면 TLB를 갱신하는 작업을 거칩니다.

페이지 테이블에서 page fault가 발생할 경우에는 OS에서 그 처리를 담당하는데요.
특히, MMU(Memory Management Unit)가 가상 기억장치 운영을 지원합니다.

MMU는 논리 주소를 물리 주소로 변환, 고정/동적 분할, 페이징, 세그먼테이션 등의 작업을 담당합니다.

 


2019년 85번

정답 : 3번

페이지 적중률은 MRU(Most Recently Used)가 가장 높음

FIFO(First In First Out) 가장 처음 입력된 페이지가 교체 대상임. 가장 오래 있었던 페이지를 교체함
5입력 : 페이지 포함
3입력 : 페이지 포함
2입력 : 페이지 포함
8입력 : 페이지 부재 발생, 가장 오래 있었던 5를 대체
2입력 : 페이지 이미 존재
5입력 : 페이지 부재 발생, 가장 오래 있었던 3을 대체
3입력 : 페이지 부재 발생, 가장 오래 있었던 2를 대체
2입력 : 페이지 부재 발생, 가장 오래 있었던 8을 대체
LRU(Least Recently Used) 가장 오랜 기간 동안 참조되지 않은 페이지가 교체 대상임
5입력 : 페이지 포함
3입력 : 페이지 포함
2입력 : 페이지 포함
8입력 : 페이지 부재 발생, 가장 참조되지 않던 5를 대체
2입력 : 페이지 이미 존재
5입력 : 페이지 부재 발생, 가장 참조되지 않던 3를 대체
3입력 : 페이지 부재 발생, 가장 참조되지 않던 8를 대체
2입력 : 페이지 이미 존재
MRU(Most Recently Used) 가장 최근에 사용된 페이지가 교체 대상임. 휘발성 메모리를 이용해야하는 특수한 상황에 주로 사용됨
5입력 : 페이지 포함 
3입력 : 페이지 포함
2입력 : 페이지 포함
8입력 : 페이지 부재 발생, 가장 최근에 참조된 2를 대체
2입력 : 페이지 부재 발생, 가장 최근에 참조된 8를 대체
5입력 : 페이지 이미 존재
3입력 : 페이지 이미 존재
2입력 : 페이지 이미 존재

 

 

반입정책(fetch policy) 언제 어느 페이지(또는 세그먼트)를 디스크에서 주기억장치로 가져올 것인가?
* 요구반입(demand fetch) 기법 : 실행중인 프로세스에 의해 호출된 페이지만 가져옴, 요구페이징, 새로운 페이지가 필요할 때마다 오버헤드가 발생
* 예상반입(anticipatory) : 프로세스에 의해 요구될 페이지를 미리 적재함, 요구를 예측하기 어려우므로 실제 구현 힘듬
배치정책(placement policy) 페이지를 주기억 장치의 어느 곳에 적재해야 하는가?
페이징 기법의 경우는 모든 페이지 프레임의 크기는 같기 때문에 사용 가능한 페이지 프레임을 찾아 배치하면 그만이지만,  세그먼테이션은 동적분할 방식처럼 최초, 최적, 최악 기법을 적용
교체정책(replacement, swapping policy) 페이지 부재 발생시, 주 기억장소에 적재 공간 없으면, 어떤 페이지프레임을 디스크로 내보낼지 선택
배당정책(allocation policy) 각각의 실행 프로세스에게 얼마만큼의 주기억 장소를 할당할 것인가?

 


2019년 88번

정답 : 2번

페이징을 사용하는 가상 메모리 시스템에서 TLB(Translation Lookaside Buffer)의 개념을 묻고 있음

TLB(Translation Lookaside Buffer)는 페이지 테이블 전용 캐시임. 빠른 메모리 버퍼로서 중간에 들어가 속도를 향상시켜주는 기능을 함. 전용 고속 메모리인 associative memory로 만들어짐.

TLB는 캐시이기 때문에 당연히 캐시 미스가 발생함. 이를 해결하기 위한 방법 중 PTBR이라는 Register를 사용하는 방법임