- 코드가 메모리에 한꺼번에 적재되지만, 모든 코드부분이 사용되지는 않음
- CPU 활용도를 높여야 한다.
Virual Memory : 원하는 만큼 메인메모리에 적재하고 실행하겠다.
- 전부 다 메모리에 안 올라가 있어도 실행이 가능하게 해준다,
- 프로그램이 물리적 메모리에 제약을 받지 않는다.
- 프로세스가 파일과 라이브러리를 서로 공유하게 할 수 있다.
- 가상메모리는 실행 도중에도 하드 디스크에 접근해 해당 페이지를 로드한다. Partially loaded!!!
Swapping
- 하드디스크에서 메인메모리로 데이터를 불러오거나 다시 swap out 시키는 것
Demand Paging
- 초기에 필요한 것들만 메모리에 load하고 실행 시 필요한 페이지를 로드하는 것
방법
- 프로세스를 실행하고 싶으면 메모리로 읽어들인다
- 이때, 전체 프로세스를 읽어오지 않고, 필요하지 않은 페이지는 메모리에 로드하지 않는다.
- 이 역할을 lazy swapper가 수행한다.
장점
- 적은 입출력 요청
- 빠른 응답
- 프로세스 수 증가
Page Fault
프로세스가 페이지에 접근하고자 할 때,
- 참조비트가 1인지 확인한다.
- 만약 참조비트가 0이라면 OS 인터럽트가 발생하여 프로세스는 wait상태로 전환되다.
- free frame을 찾는다
- frame으로 페이지를 가져온다.
- 페이지 테이블을 재설정한다
- 다시 명령어를 수행한다(wait→ready)
Page Replacement
- 빈 프레임이 없을 때 프레임을 교체해야 한다.
- 희생자 프레임을 고르는 페이지 교체 알고리즘
First-In-First-Out
- 제일 오래된 페이지 교체
Optimal Algorithm
- 앞으로 쓰이지 않을 페이지를 교체한다.
- 구현할 수 없음. 미래 예측 불가능!
Least Recently Used (LRU)
- 최근에 쓴 페이지를 다시 사용할 확률이 높다~
- 마지막 사용 시간에 대한 정보가 필요하다
- 카운터, 스택을 이용하여 구현 가능
- 최근에 사용한 페이지를 스택의 위로 올린다.
LRU Approximation근사 페이지 교체
1. additional reference bits algorithm (추가 참조 비트 알고리즘)
- 실제 LRU 페이지 교체를 하드웨어적으로 충분히 지원해주는 컴퓨터 시스템이 많지 않다.
- 참조 비트 설정: 초기엔 모든 비트를 0으로 비워준다 하드웨어가 참조된 페이지의 최상위비트를 1로 바꾸어준다. 매 실행 턴마다 right shift한다.
2. second chance 알고리즘 (시계알고리즘)
- 기본적으로 FIFO 알고리즘
- 참조비트값이 0이라면 페이지 교체
- 참조 비트 값이 1이라면 참조 비트를 0으로 바꾼 후 다음 FIFO 페이지로 넘어간다.
- 많이 사용
3. 향상된 second chance 알고리즘
- 참조비트와 수정비트를 확인(reference, modify)
- 1.(0,0)
- 2.(0,1)
- 3.(1,0)
- 4.(1,1)
Counting Algorithm
- LFU : 적게 사용된 페이지가 교체됨
- MFU : 많이 사용된 페이지가 교체됨
페이지 버퍼링 알고리즘
(1) 시스템이 사용가능한 프레임 여러개를 가지고 있다가 page fault 발생하면 교체될 페이지를 기다리지 않고 새로운 페이지에 먼저 읽어들이게 하는 방법
(2) 사용가능한 프레임 pool을 유지하지만, 그 pool 속 각 frame의 원래 임자 페이지가 누구였는지 기억하는 방법
Global vs Local 할당
- global 할당 : 모든 페이지 프레임 교체 가능
- 장점 : 처리율이 좋음
- 단점 : 한 프로세스가 자신의 페이지폴트율을 조절할 수 없어서 프로세스 처리시간이 무한정 늘어날 수 잇음
- local 할당 : 자신의 프로세스에게 할당된 페이지만 교체 가능
- 장점:
- 단점 : 메모리 이용율이 낮아짐
Thrashing
- 충분한 프레임을 할당받지 못한 프로세스는 page fault가 바로 발생하게 된다.
- 이미 활발하게 사용되는 페이지들로만 이루어져 있으므로 어떤 페이지가 교체된든 다시 바로 필요해진다
- 과도한 페이징 작업 → 심각한 성능 저하를 유발한다.
- 운영체제는 CPU 이용률을 검사하게 되는데, 만약 이용률이 너무 낮으면 새로운 프로세스를 시스템에 더 추가해 다중 프로그래밍의 정도를 높이다
- 만약 많은 프로세스들이 실행을 위해 추가의 프레임을 원한다면 계속해서 페이지폴트 발생
- CPU 이용률은 계속해서 떨어지고 CPU 스케줄러는 새로운 프로세서를 할당하고 이용률은 떨어지고 ~ 스레싱 발생.
Working Set Model
작업 집합 모델은 지역성을 기반으로 하고 있다.
기본 아이디어는 주어진 시간만큼 page 참조를 관찰하여 참조된 페이지들의 집합을 작업집합으로 하는 것이다.
'CS지식 > 운영체제' 카테고리의 다른 글
운영체제 : I/O System (0) | 2023.09.23 |
---|---|
운영체제 : Mass-Storage Interface (0) | 2023.09.23 |
운영체제 : Main Memory (0) | 2023.09.23 |
운영체제 : Deadlocks (1) | 2023.09.23 |
운영체제 : Synchronization (0) | 2023.09.23 |