조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
- 가져오기 정책: 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정
1. 요구 페이징
- 사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것
미리 가져오기
- 앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식
- 고속의 캐시 메모리에 가져다놓음으로써 시스템의 성능을 향상시킴
지역성
- 기억장치에 접근하는 패턴이 특정 영역에 집중되는 성질
지역성 유형 | 설명 |
공간 지역성 |
현재 위치에서 가까운 데이터에 접근할 확률이 높음
|
시간 지역성 |
현재를 기준으로 가장 가까운 시간에 접근한 데이터가 다시 접근할 확률이 높음
|
순차적 지역성 | 여러 작업이 순서대로 진행되는 경향이 있음 |
페이지 테이블 엔트리 구조
필드 | 설명 |
페이지 번호 | 가상 주소의 페이지 번호 |
프레임 번호 |
물리 메모리에서 페이지가 저장된 프레임 번호 (주소 필드)
|
플래그 비트 |
페이지의 접근 상태 및 속성을 나타내는 여러 비트들
|
- 접근 비트 | 페이지가 사용된 적이 있는지 나타내는 비트 |
- 변경 비트 | 페이지가 수정된 적이 있는지 나타내는 비트 |
- 유효 비트 |
페이지가 실제 메모리에 존재하는지, 스왑 영역에 있는지를 나타내는 비트
- 0: 페이지가 메모리에 있음 - 1: 페이지가 스왑 영역에 있음 |
- 읽기 비트 | 페이지가 읽기 가능한지 나타내는 비트 |
- 쓰기 비트 | 페이지가 쓰기 가능한지 나타내는 비트 |
- 실행 비트 | 페이지가 실행 가능한지 나타내는 비트 |
세그먼테이션 오류
- 사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 권한이 없는 곳에 접근하는 오류
페이지 부재
- 프로세스가 페이지를 요청했을 떄 그 페이지가 메모리에 없는 상황 (유효비트 - 1)
- 메모리 관리자는 프로세스가 사용할 수 있도록 스왑 영역에서 물리 메모리로 로드함
- 메모리에 빈 프레임이 없다면, 기존의 프레임 중 하나를 스왑 영역으로 내보낸 후 로드함
- 이 때 어떤 페이지를 스왑 영역으로 내보낼지 결정하는 알고리즘을 페이지 교체 알고리즘이라 함
2. 페이지 교체 알고리즘
알고리즘 | 설명 |
FIFO |
시간상으로 메모리에 가장 먼저 들어온 페이지를 대상 페이지로 선정하여 스왑 영역으로 쫓아냄
|
최적 |
미래의 메모리 접근 패턴을 보고 대상 페이지를 결정할 수 있음
|
LRU |
최근 최소 사용 페이지 교체 알고리즘
가장 오랫동안 사용되지 않은 페이지를 스왑 영역에 올림 |
LFU |
최소 빈도 사용 알고리즘
그동안 사용된 횟수를 세어 가장 적은 페이지를 스왑 영역에 옮김 |
NUR | 최근 미사용 페이지 교체 알고리즘 |
성능 평가 기준
- 페이지 부재 횟수
- 페이지 성공 횟수
3. 스레싱과 프레임 할당
스레싱
- 하드디스크의 입출력이 너무 많아져서 잦은 페이지 부재로 작업이 멈춘것 같은 상태
멀티프로세스 수
- 동시에 실행하는 프로그램의 수
- 너무 많으면 스레싱이 발생함
프레임 할당
- 남아 있는 프레임을 실행 중인 프로세스에 적절히 나눠주는 정책
- 어떻게 프레임을 할당할 지에 관한 이론
할당 방식 | 설명 |
정적 할당 |
프로세스 실행 초기에 고정된 메모리 크기를 나누어주는 방식
- 할당된 메모리는 변경되지 않음 - 사용하지 않을 메모리까지 미리 확보 |
- 균등 할당 |
프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에 동일하게 할당.
|
- 비례 할당 |
프로세스 크기에 비례하여 프레임 할당.
- 실행 중에 필요로 하는 프레임을 유동적으로 반영하지 못함. |
동적 할당 |
실행 중 변하는 요청을 수용하여 동적으로 프레임을 할당하는 방식.
|
- 작업집합 모델 |
프로세스에서 가장 최근에 사용된 메모리 블록을 모아두고, 일정한 윈도우 크기 내에서 관리함
- 더 자주 사용되는 데이터는 메모리에 유지 |
- 페이지 부재 빈도 |
페이지 부재 횟수를 기록하여 빈도를 기준으로 메모리 할당을 조정
- 상한선, 하한선을 설정하여 초과하거나 밑으로 내려갈 경우 메모리 프레임을 조절함 |
4. 프레임 관련 이슈
전역 교체와 지역 교체
구분 | 전역 교체 | 지역 교체 |
대상 | 전체 프레임을 대상으로 교체 알고리즘을 적용 | 실행 중인 프로세스의 프레임들만 대상으로 교체 알고리즘을 적용 |
영향 범위 | 물리 메모리의 모든 프레임 대상 | 현재 프로세스의 프레임만 교체 (다른 프로세스에는 영향을 주지 않음) |
교체 기준 | 참조 비트와 변경 비트가 작은 페이지를 교체 대상으로 선정 | 자주 사용되는 페이지가 스왑 영역으로 옮겨질 경우 시스템 효율 저하 가능 |
효율성 | 다른 프로세스의 페이지를 스왑할 수 있어 효율적일 수 있음 | 현재 프로세스만 교체하여 효율적 (단, 자주 사용하는 페이지가 교체될 위험 있음) |
페이지 테이블 크기
32bit CPU
- 2^32 까지의 공간을 표현할 수 있음 (약 4GB)
- 하나의 페이지가 4,096Byte일 경우, 페이지 인덱스의 마지막 값은 1,048,575가 됨
페이지 크기 증가
항목 | 설명 |
장점 |
페이지 테이블 크기가 줄어듬.
- 페이지 크기 증가 시 페이지 테이블 크기 감소 (페이지 테이블 크기 = 페이지 크기 * 페이지 갯수) |
단점 |
페이지 크기 증가 시 내부 단편화로 많은 공간이 낭비될 수 있음
|
쓰기 시점 복사
프레임 공유
- 같은 프로세스가 여러개 올라온다면, 프레임을 공유해서 사용하여 효율적으로 쓸 수 있음
- 프로세스의 code 부분은 공유되지만 (읽기전용)
- 프로세스의 data 부분은 공유 불가 (내용이 바뀌기 때문)
변경 시점에 복사
- 데이터의 변화가 있을 때까지 복사를 미룸
- 초기에는 코드 영역을 포함한 모든 영역을 공유
- 실제로 프로세스가 데이터를 수정하려 할 때, 그때 데이터 복사를 진행함
'OS' 카테고리의 다른 글
[따배셸] 1. Linux Shell 이란? (0) | 2025.03.31 |
---|---|
[쉽게 배우는 운영체제] 11. 파일 시스템 (3) | 2024.12.14 |
[쉽게 배우는 운영체제] 8. 가상 메모리의 기초 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 7. 물리 메모리 관리 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 6. 교착 상태 (1) | 2024.12.12 |