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