조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 가져오기 정책
- 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 정책
| 구분 | 요구 페이징 (Demand Paging) |
미리 가져오기 (Pre-paging / Prefetching)
|
| 정의 | 페이지가 실제로 참조될 때 메모리로 로드 |
앞으로 필요할 것으로 예상되는 페이지를 미리 로드
|
| 로딩 시점 | 접근 시점 | 접근 이전 |
| 페이지 폴트 | 처음 접근 시 발생 | 줄어들 수 있음 |
| 성능 영향 | 초기 접근 시 지연 발생 | 적중 시 성능 향상 가능 |
| 지역성 활용 | 시간/공간 지역성에 의존 |
지역성을 예측하여 선제적 로드
|
지역성
- 프로그램이 특정 메모리 영역에 집중적으로 접근하는 성질
| 지역성 유형 | 설명 |
| 공간 지역성 |
현재 위치에서 가까운 데이터에 접근할 확률이 높음
|
| 시간 지역성 |
최근 접근한 데이터에 다시 접근할 확률이 높음
|
| 순차적 지역성 | 데이터가 순서대로 접근되는 경향이 있음 |
2. 페이지 부재
- 프로세스가 접근한 페이지가 현재 물리 메모리에 존재하지 않는 상황
- 유효비트가 0일때 페이지 부재를 의미함
페이지 교체 알고리즘
- 물리 메모리에 빈 프레임이 없을 때, 어떤 페이지를 내보낼지 결정하는 알고리즘
- ✅ 페이지 부재 횟수, 페이지 성공 횟수에 따라 성능을 평가함
| 알고리즘 | 설명 | 특징 |
| FIFO | 가장 먼저 들어온 페이지를 제거함 |
구현 단순
|
| OPT |
가장 나중에 다시 사용될 페이지를 제거함
|
이론적 최적. 실제로는 구현 불가
|
| LRU |
가장 오랫동안 사용되지 않은 페이지 제거
|
지역성 반영. 구현 비용 큼
|
| LFU | 가장 사용 횟수가 적은 페이지 제거 |
과거 빈도 기반
|
| NUR | 가장 최근에 사용되지 않은 페이지 제거 | Access Bit 활용 |
3. 스레싱과 프레임 할당
스레싱
- 프로세스의 작업 집합을 유지할 만큼의 프레임이 부족해서 페이지 부재가 과도하게 발생하는 상황
- ✅ 동시에 실행하는 프로세스가 너무 많음
- ✅ 각 프로세스에 할당된 프레임 수가 너무 적음
- ➡️ CPU가 실제 작업은 거의 못하고, 페이지 교체만 반복하는 상태
프레임 할당
- 남은 물리 메모리 프레임을 각 프로세스에 어떻게 나누어 줄 것인가에 대한 정책
| 구분 | 정적 할당 | 동적 할당 |
| 정의 | 실행 시작 시 프레임 수 고정 |
실행 중 필요에 따라 프레임 조정
|
| 메모리 활용도 | 비효율 | 효율적 |
| 스레싱 대응 | 어려움 (발생 가능) | 방지 가능 |
| 구현 복잡도 | 단순 | 복잡 |
표) 정적 할당 종류
더보기
| 할당 방식 | 설명 | 특징 |
| 균등 할당 | 모든 프로세스에 동일한 프레임 수 할당 | 단순하지만 비효율 가능 |
| 비례 할당 | 프로세스 크기에 비례해서 할당 | 균등보다 합리적 |
표) 동적 할당 종류
더보기
| 할당 방식 | 설명 | 기준 |
| 작업 모델 집합 | 최근 일정 시간동안 사용된 페이지 집합의 크기를 기준으로 최소 프레임 유지 | 지역성 기반 |
| 페이지 부재 빈도 | 페이지 부재율을 기준으로 프레임 조절 | Fault Rate 기반 |
프레임 교체 범위
| 구분 | 전역 교체 | 지역 교체 |
| 대상 | 전체 프로세스의 모든 프레임 | 현재 실행 중인 프로세스의 프레임 |
| 영향 범위 | 다른 프로세스에 영향 있음 | 다른 프로세스에 영향 없음 |
| 장점 | 메모리 활용 유연 | 프로세스 간 간섭 없음 |
| 단점 | 스레싱 발생 (특정 프로세스가 프레임을 빼앗길 수 있음) | 비효율 발생 가능 |
4. 프레임 공유
- 같은 내용을 사용하는 프로세스끼리 물리 프레임을 공유하는 것
- ✅ 프로세스의 code 부분은 공유 가능 (읽기전용)
- ✅ 프로세스의 data 부분은 공유 불가 (내용이 바뀌기 때문)
- ➡️같은 프로세스가 여러개 올라온다면, 프레임을 공유해서 사용하여 효율적으로 쓸 수 있음
쓰기 시점 복사
- 데이터의 변화가 있을 때까지 복사를 미룸
- 초기에는 코드 영역을 포함한 모든 영역을 공유
- 실제로 프로세스가 데이터를 수정하려 할 때, 그때 데이터 복사를 진행함
'OS' 카테고리의 다른 글
| [따배셸] 1. Linux Shell 이란? (0) | 2025.03.31 |
|---|---|
| [쉽게 배우는 운영체제] 11-1. 파일 시스템: 파일 (3) | 2024.12.14 |
| [쉽게 배우는 운영체제] 8. 가상 메모리의 기초 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 7. 물리 메모리 관리 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 6. 교착 상태 (1) | 2024.12.12 |