반응형
페이지 테이블 엔트리(PTE, Page Table Entry)
페이지 테이블의 각각 행동들을 페이지 테이블 엔트리라고 한다.
- 유효비트(valid bit) : 현재 해당 페이지에 접근 가능한지 여부.
- 보호비트(protection bit) : 페이지에 접근할 권한을 제한하는 비트(rwx순으로 2bit으로).
- 참조비트(reference bit) : CPU가 해당 페이지에 접근한 적이 있는지 여부.
- 수정비트(modified bit) : 해당 페이지에 데이터가 수정된 적이 있는지 여부. 스왑 아웃 될 때 보조기억 장치에 기록하기 위해 사용.
페이지폴트 (Page fault)와 스와핑
스왑 영역(Swap Space)? 프로세스의 가상 메모리 공간 전체를 위해 예약된 디스크 공간
스와핑? 메모리의 당장 사용하지 않는 영역을 하드 디시크로 옮기고 하드디스크의 일부부분을 "마치 메모리처럼" 불러와 쓰는 것
MMU(Memory Management Unit)? 컴퓨터 시스템에서 메모리 접근을 관리하고 가상 메모리와 물리적 메모리 간의 매핑을 처리하는 하드웨어 컴포넌트
가상 메모리는 작은 메모리를 매우 큰 메모리로 보이게 끔 하는 것. 때문에 가상메모리서 참조하려는 메모리 영역이 실제에는 없을 수도 있음.(접근 불가 -> 유효비트 0)
그럴 때 접근하려고 하면 페이지 폴트 예외가 발생한다. 이 경우 보통 스와핑이 일어나게 된다.
페이지 폴트 과정
- invalid 페이지에 접근하면 MMU가 trap을 발생시켜 운영체제에게 알림
- 운영체제는 CPU의 동작을 멈춤. CPU 내 기존 작업 내역 백업
- 운영체제는 요구된 페이지를 가상메모리에서 찾음
- 해당 페이지를 물리적 메모리에 비어있는 프레임에 로드
- 페이지 테이블 최신화. 유효비트 1로 변경
- CPU 다시 시작
-> 이제 CPU는 해당 페이지에 접근 가능!
스레싱(Thrashing)
스레싱은 페이지 폴트율이 높다는 것을 의미한다.
페이지 폴트 발생
↓
CPU 이용률 낮아짐
↓
운영체제는 CPU가용성을 높이기 위해 더 많은 프로세스를 메모리에 올리게 됨
이런 악순환이 반복되며 메모리에 너무 많은 프로세스가 동시에 올라가게 되면 스와핑이 많이 일어나서 발생하게 된다.
하드웨어적 해결 방법
1. 메모리 늘리기: 더 많은 RAM을 추가
2. 빠른 디스크 사용 : HDD를 사용하고 있다면 SDD로 교체
3. TLB 크기 증가
등등 ...
소프트웨어적 해결 방법
- 워킹 셋 모델 (Working Set Model)
프로세스의 과거 사용 이력을 기반으로 많이 사용하는 페이지 집합을 만들어 한꺼번에 미리 메모리 로드 하는것. - PFF(Page Fault Frequency) 기법
페이지 폴트가 발생하는 빈도를 모니터링하고 시스템의 메모리 관리 정책을 동적으로 조정. 상한선과 하한선을 정하고 상한선에 도달하면 프레임 늘리고 하한선에 도달하면 프레임을 줄이는 방식. - 페이지 교체 알고리즘 최적화
LRU(Least Recently Used), LFU(Least Frequently Used), FIFO(First In First Out) 등의 페이지 교체 알고리즘을 사용하여 페이지 교체 효율을 높임
등등 ...
728x90
반응형
'Computer Science > Operating System' 카테고리의 다른 글
프로세스 메모리 구조, 프로세스/스레드 차이 (0) | 2024.10.22 |
---|---|
프로그램 컴파일 과정 - C, C++/Java ( Interpreter / JIT ) (0) | 2024.10.18 |
페이지 교체 알고리즘 - FIFO, LRU, LFU, MFU, NUR, OPT(오프라인 알고리즘) (0) | 2024.10.17 |
가상메모리(1) - 페이지테이블, TLB (0) | 2024.10.16 |
시스템 콜(System Call), 사용자 모드(User mode), 커널 모드(Kernel mode), modebit (4) | 2024.10.05 |