DEVELOP

본 게시물은 운영체제 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시물입니다.


가상메모리

  • 물리메모리에 일부의 페이지만 적재 (부분적재)
  • 적재 여부를 페이지테이블에 표시 
  • vaild-invaild bit
    : 탑재되는 페이지만 유효 표시 
  • dirty bit
    : 페이지 적재 후 변경 유무 표시 

요구 페이징 및 부분적재의 타당성

  • 요구 페이징
    : 페이지 부재가 발생하면 그때 트랩을 걸어 해당 페이지 탑재 
  • 페이지 부재
    : 현재 탑재되지 않은 페이지가 발생
  • 참조의 지역성
    : 프로그램의 어느 한 특정 작은 부분만 한동안 집중적으로 참조하는 현상 
  • 프로그램 부분 적재 
    - 프로그램 구동 시 보통 전체보다 일부를 필요로 함
    - 프로그램 크기가 물리적인 용량에 무관 
    - 처리율 향상 
    - 페이지 부재를 낮추어 성능을 높이는 것이 문제 

페이지 대치 알고리즘 

  • 페이지 대치 : 물리 메모리에 여유가 없을 때 희생될 페이지를 찾아 대치 
  • 페이지 대치 알고리즘
    - FIFO
    - LRU
    - LRU 근사 알고리즘 ( 참조바이트 알고리즘, Second Chance 알고리즘, Enhanced-Second 알고리즘)

 

  • 최적 대치 알고리즘 (밸러디 또는 B0 알고리즘)
    - 앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아서 교체하는 알고리즘 
    - lookahead 알고리즘으로 실현 어려움 
    - 페이지 대치 알고리즘의 상한선 
  • 최악 대치 알고리즘 - 랜덤 알고리즘 
    - 현재 메모리에 있는 페이지 중에서 랜덤하게 하나를 선택해 대치 
    - 페이지 대치 알고리즘의 하한선 
  • FIFO 
    - 메모리에 올라온 지 가장 오래된 페이지를 택하여 대치하는 알고리즘
    - 밸러디 변이 발생 : 페이지 오류율이 할당되는 프레임 수가 증가함에도 오히려 증가할 수도 있다 
  • LRU (Least Recently Used) 
    - 가장 오랫동안 사용하지 않은 페이지를 대치
    - 스택 알고리즘의 일종 
    - B0 알고리즘과 유사 
    - 하드웨어의 다양한 지원 → LRU-approximation 알고리즘 
  • 참조비트 
    - 페이지테이블에 참조비트 추가 
    - 참조된 각 페이지의 참조비트가 하드웨어에 의해 1로 설정 
    - 사용 순서는 모르지만 해당 기간동안의 사용여부를 판별함으로써 부분적 순서정보 추출이 가능 
  • 참조바이트 알고리즘
    - 8회 이상 이전의 참조상황은 비교할 수 없다는 한계 
  • 2차 기회 알고리즘 
    - 참조비트만 제공될 경우에 사용 
  • 개선된 2차 기회 알고리즘 
    - 참조비트와 오염비트 조합을 통해 개선 가능 
    - 등급번호가 가장 낮은 것이 희생자가 됨 
  • 사전대치 
    - 페이지 부재 발생은 많은 오버헤드 야기 
    - 페이지 대치 알고리즘을 사전에 실행 
    - 항상 빈 프레임을 갖고 있으면 페이지 부재 발생시 페이지 대치 알고리즘까지 수행하여햐 하는 것을 미연에 방지 가능 
  • 사전 적재 
    - 미리 여러 페이지를 한 번에 적재해 놓는 방법 
  • 페이지 부재율과 프레임 수는 역비례 

프레임 할당 

  • 모든 프로세스가 할당 받을 최소의 프레임 개수는 CPU 명령어의 구조에 의해 결정 
  • 하나의 명령어가 참조하는 모든 페이지가 동시에 메모리에 올라와 있어야 해당 명령어 수행이 완료 
  • 프로세스 당 최소로 필요한 프레임의 수 명령어 구조로 결정됨 
  • 균등할당
    - 모든 프로세스에게 똑같은 개수의 프레임을 할당 
  • 비례할당 
    - 프로그램 크기에 비례하여 프레임을 할당 
  • 우선순위 할당 
    - 우선순위에 따라 프레임 할당 
  • 페이지 크기 
    - 작아지면 페이지 부재 발생 ↓
    - 커질수록 페이지 부재 ↑
    - 계속 커지는 추세로 진행, 현재 4KB, 8KB가 보편화

쓰레싱

# 쓰레싱
: 프로세스들이 실행되는 시간보다 페이지를 교체하는 데에 더 많은 시간이 소요되는 현상 

- 프로세스가 많아지면서 페이지 부재율 증가
- 페이징 기다리는 동안 이용률 감소 
- 이용률 증가위해 프로세스 수 증가하려는 악순환 반복 

# 작업세트 모델 

  • 최소한의 프레임 개수 보장해야함 
    - 최소한의 프레임 개수를 알 수 있는 방법 필요 
    - 지역성에 근거한 작업 세트 모델 활용 
  • 작업세트 : 가장 최근에 △개 페이지 참조에 들어있는 서로 다른 페이지의 집합 
  • △ : 작업 세트 윈도우 
    - △값의 선택 중요 
    - 작으면 지역 충분히 포함 x, 크면 지역 서로 겹침 
  • 각 프로세스의 작업세트를 감시 
  • 스레싱 발생 감지 
    - 각 작업 세트의 크기의 총 합이 유효 프레임 수보다 큰 경우 
  • 해당 프로세스 중지 등을 통해 쓰레싱 예방 가능 
  • 쓰레싱은 결국 페이지 부재 빈도 문제 
    - 상한선 넘으면 더 많은 프레임을 할당
    - 하한선 넘으면 프레임 회수 
  • 작업세트 모델 - 일정 간격 타이머 인터럽트와 참조 비트 사용하면 어느 정도 근사 가능 

커널 메모리 

  • Kernel Memory Allocation 
    : 커널 메모리는 사용자 모드 프로세스에게 할당해 주는 프레임 리스트와는 별도의 메모리 풀에서 할당
    - 메모리 조심스럽게 사용해야함  
  • 버디 시스템 
    : 물리적으로 연속된 페이지들로 이루어진 고정된 크기의 세그먼트로부터 메모리 할당 
    - 할당 시 2의 거듭제곱 단위로 할당 
    - 반납 시 하나의 큰 세그먼트로 합병 
  • 슬랩 할당 
    - 슬랩 : 하나 또는 그 이상의 연속된 페이지
    - 캐시 : 하나 또는 그 이상의 슬랩들로 구성 
    - 같은 타입의 커널 인스턴스는 같은 캐시에만 할당 
    - 장점 : 단편화x, 빠름
profile

DEVELOP

@JUNGY00N