본 게시물은 운영체제 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시물입니다.
1. 가상메모리
- 물리메모리에 일부의 페이지만 적재 (부분적재)
- 적재 여부를 페이지테이블에 표시
- vaild-invaild bit
: 탑재되는 페이지만 유효 표시 - dirty bit
: 페이지 적재 후 변경 유무 표시
2. 요구 페이징 및 부분적재의 타당성
- 요구 페이징
: 페이지 부재가 발생하면 그때 트랩을 걸어 해당 페이지 탑재 - 페이지 부재
: 현재 탑재되지 않은 페이지가 발생 - 참조의 지역성
: 프로그램의 어느 한 특정 작은 부분만 한동안 집중적으로 참조하는 현상 - 프로그램 부분 적재
- 프로그램 구동 시 보통 전체보다 일부를 필요로 함
- 프로그램 크기가 물리적인 용량에 무관
- 처리율 향상
- 페이지 부재를 낮추어 성능을 높이는 것이 문제
3. 페이지 대치 알고리즘
- 페이지 대치 : 물리 메모리에 여유가 없을 때 희생될 페이지를 찾아 대치
- 페이지 대치 알고리즘
- FIFO
- LRU
- LRU 근사 알고리즘 ( 참조바이트 알고리즘, Second Chance 알고리즘, Enhanced-Second 알고리즘)
- 최적 대치 알고리즘 (밸러디 또는 B0 알고리즘)
- 앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아서 교체하는 알고리즘
- lookahead 알고리즘으로 실현 어려움
- 페이지 대치 알고리즘의 상한선 - 최악 대치 알고리즘 - 랜덤 알고리즘
- 현재 메모리에 있는 페이지 중에서 랜덤하게 하나를 선택해 대치
- 페이지 대치 알고리즘의 하한선 - FIFO
- 메모리에 올라온 지 가장 오래된 페이지를 택하여 대치하는 알고리즘
- 밸러디 변이 발생 : 페이지 오류율이 할당되는 프레임 수가 증가함에도 오히려 증가할 수도 있다 - LRU (Least Recently Used)
- 가장 오랫동안 사용하지 않은 페이지를 대치
- 스택 알고리즘의 일종
- B0 알고리즘과 유사
- 하드웨어의 다양한 지원 → LRU-approximation 알고리즘 - 참조비트
- 페이지테이블에 참조비트 추가
- 참조된 각 페이지의 참조비트가 하드웨어에 의해 1로 설정
- 사용 순서는 모르지만 해당 기간동안의 사용여부를 판별함으로써 부분적 순서정보 추출이 가능 - 참조바이트 알고리즘
- 8회 이상 이전의 참조상황은 비교할 수 없다는 한계 - 2차 기회 알고리즘
- 참조비트만 제공될 경우에 사용 - 개선된 2차 기회 알고리즘
- 참조비트와 오염비트 조합을 통해 개선 가능
- 등급번호가 가장 낮은 것이 희생자가 됨 - 사전대치
- 페이지 부재 발생은 많은 오버헤드 야기
- 페이지 대치 알고리즘을 사전에 실행
- 항상 빈 프레임을 갖고 있으면 페이지 부재 발생시 페이지 대치 알고리즘까지 수행하여햐 하는 것을 미연에 방지 가능 - 사전 적재
- 미리 여러 페이지를 한 번에 적재해 놓는 방법 - 페이지 부재율과 프레임 수는 역비례
4. 프레임 할당
- 모든 프로세스가 할당 받을 최소의 프레임 개수는 CPU 명령어의 구조에 의해 결정
- 하나의 명령어가 참조하는 모든 페이지가 동시에 메모리에 올라와 있어야 해당 명령어 수행이 완료
- 프로세스 당 최소로 필요한 프레임의 수 명령어 구조로 결정됨
- 균등할당
- 모든 프로세스에게 똑같은 개수의 프레임을 할당 - 비례할당
- 프로그램 크기에 비례하여 프레임을 할당 - 우선순위 할당
- 우선순위에 따라 프레임 할당 - 페이지 크기
- 작아지면 페이지 부재 발생 ↓
- 커질수록 페이지 부재 ↑
- 계속 커지는 추세로 진행, 현재 4KB, 8KB가 보편화
5. 쓰레싱
# 쓰레싱
: 프로세스들이 실행되는 시간보다 페이지를 교체하는 데에 더 많은 시간이 소요되는 현상
- 프로세스가 많아지면서 페이지 부재율 증가
- 페이징 기다리는 동안 이용률 감소
- 이용률 증가위해 프로세스 수 증가하려는 악순환 반복
# 작업세트 모델
- 최소한의 프레임 개수 보장해야함
- 최소한의 프레임 개수를 알 수 있는 방법 필요
- 지역성에 근거한 작업 세트 모델 활용 - 작업세트 : 가장 최근에 △개 페이지 참조에 들어있는 서로 다른 페이지의 집합
- △ : 작업 세트 윈도우
- △값의 선택 중요
- 작으면 지역 충분히 포함 x, 크면 지역 서로 겹침 - 각 프로세스의 작업세트를 감시
- 스레싱 발생 감지
- 각 작업 세트의 크기의 총 합이 유효 프레임 수보다 큰 경우 - 해당 프로세스 중지 등을 통해 쓰레싱 예방 가능
- 쓰레싱은 결국 페이지 부재 빈도 문제
- 상한선 넘으면 더 많은 프레임을 할당
- 하한선 넘으면 프레임 회수 - 작업세트 모델 - 일정 간격 타이머 인터럽트와 참조 비트 사용하면 어느 정도 근사 가능
6. 커널 메모리
- Kernel Memory Allocation
: 커널 메모리는 사용자 모드 프로세스에게 할당해 주는 프레임 리스트와는 별도의 메모리 풀에서 할당
- 메모리 조심스럽게 사용해야함 - 버디 시스템
: 물리적으로 연속된 페이지들로 이루어진 고정된 크기의 세그먼트로부터 메모리 할당
- 할당 시 2의 거듭제곱 단위로 할당
- 반납 시 하나의 큰 세그먼트로 합병 - 슬랩 할당
- 슬랩 : 하나 또는 그 이상의 연속된 페이지
- 캐시 : 하나 또는 그 이상의 슬랩들로 구성
- 같은 타입의 커널 인스턴스는 같은 캐시에만 할당
- 장점 : 단편화x, 빠름
'LECTURE > [2021-1] 운영체제' 카테고리의 다른 글
[운영체제] 10. 디스크와 RAID 경영 (0) | 2021.06.17 |
---|---|
[운영체제] 9. 파일 시스템 (File Systems) (0) | 2021.06.17 |
[운영체제] 7. 메모리 경영 (0) | 2021.06.17 |
[운영체제] 6. 교착 상태 (Deadlock) (0) | 2021.06.17 |
[운영체제] 6. 상호작용 프로세스와 동기화 (0) | 2021.06.17 |