읽은 책 정리/쉽게 배우는 운영체제

[정리] 09 가상메모리 관리

포포015 2022. 10. 22. 18:06

목차

  • 1. 요구 페이징
  • 2. 페이지 교체 알고리즘
  • 3. 스레싱과 프레임 할당
  • 4. 프레임 관련 이슈

* 가져오기 정책 - 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 정책

* 배치 정책 - 가져온 프로세스를 어느 위치에 올려놓을지 결정하는 정책

* 재배치 정책 - 메모리가 꽉 찼을때 메모리 내에 있는 어떤 프로세스를 내보낼지 결정하는 정책

 

1. 요구 페이징

- 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정할때 가져오기 정책은 일반적으로 사용하는 방법인데,
  이를 요구 페이징 이라 한다. - (현대 운영체제는 요구 페이징을 기본으로 채택해서 사용중 ).

( 필요한 모듈만 메모리에 올려 실행하고 나머지 모듈은 필요하다고 판단될 때 메모리로 불러온다. )

장점 : 메모리 절약 ,메모리 효율적 관리, 프로세스 응답속도 향상

 

 

1.1 페이지 테이블 엔트리의 구조

* PTE : 페이지 테이블의 한 행

- PTE 에는 페이지 번호, 플래그 비트, 프레임 번호 등 추가적인 정보들이 더 담겨 있다.

  • 플래그 비트 : 접근비트, 변경비트, 유효비트, 읽기비트, 쓰기 비트, 실행 비트 등을 모아놓은 플래그 비트
    접근비트 : 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트
    변경비트 : 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트
    유효비트 : 페이지가 실제 메모리에 있는지 나타내는 비트 
    읽기,쓰기, 실행 비트 : 페이지에 대한 읽기 , 쓰기 , 실행 권한을 나타내는 비트 
  • 프레임 번호 : 가상 주소의 해당 페이지가 어느 프레임에 있는지 알려주는 정보

 

1.2 페이지의 부재

- 프로세스가 페이지를 요청 했을 때, 페이지가 메모리에 없는 상황을 페이지 부재라 한다.
 (페이지 부재 발생시, 프로세스가 해당 페이지를 사용 할수 있도록 스왑 영역에서 물리 메모리로 옮기는 작업이 필요) 

  • 유효 비트 - 페이지 테이블에 페이지가 물리메모리에 있는지, 스왑 영역에 있는지 표시하기 위한 비트
    ( 유효비트가 0 일경우, 페이지가 물리메모리에 존재 / 1일경우 페이지가 스왑 영역에 존재 )

 

1.3 지역성

- 페이지 교체 알고리즘이 쫓아낼 페이지를 찾을때는 지역성 을 바탕으로 함.

- 지역성 이론은 많은곳에서 사용된다. 캐시 같은경우 지역성 이론을 사용 하는 대표적인 장치이다.

  • 페이지 교체 알고리즘 : 어떤 페이지를 스왑 영역으로 내보낼지 결정하는 알고리즘

ㄴ 공간의 지역성 : 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할 확률보다 높다.

ㄴ 시간의 지역성 : 현재를 기준으로 가장 가까운 시간에 접근한 데이터가 더 먼 시간에 접근한 데이터보다 사용될 확률이 높다.

ㄴ 순차적 지역성 : 여러 작업이 순서대로 진행되는 경향이 있다는 의미.

 

 

2. 페이지 교체 알고리즘 

- 스왑 영역으로 보낼 페이지를 결정하는 알고리즘으로써 메모리에서
앞으로 사용할 가능성이 적은 페이지를 대상 페이지로 선정하여 페이지 부재를 줄이고 시세틈의 성능을 향상시킨다.

 

종류 알고리즘 특징
간단한 알고리즘 무작위 무작위로 대상 페이지를 선정하여 스왑 영역으로 보냄.
FIFO 처음 메모리에 올라온 페이지를 스왑 영역으로 보냄.
이론적 알고리즘 최적 미래의 접근 패턴을 보고 대상 페이지를 선정하여 스왑 영역으로 보냄.
최적 근접 알고리즘 LRU 시간적으로 멀리 떨어진 페이지를 스왑 영역으로 보냄.
LFU 사용 빈도가 적은 페이지를 스왑 영역으로 보냄.
NUR 최근에 사용한적이 없는 페이지를 스왑영역으로 보냄.
FIFO 변형 FIFO 알고리즘을 변형하여 성능 향상을 꾀함.

 

  • 무작위 : 가장 간단하게 구현할 수 있는 방식. 스왑 영역으로 쫓아낼 대상 페이지를 무작위로 선정함. (지역성 고려 X) 
  • FIFO : 시간상으로 메모리에 가장 먼저 들어온 페이지를 대상 페이지로 선정하여 스왑 영역으로 내보낸다.
  • 최적 : 앞으로 사용하지 않을 페이지를 스왑 영역으로 옮김 
     ( 메모리가 앞으로 사용할 페이지를 미리 살펴보고 , 페이지 교체 선정 시점부터 사용시점 까지 가장 멀리있는 페이지 대상 )
  • LRU : '최근 최소 사용 페이지 교체 알고리즘' 이라 불림.  
     ( 메모리에 올라온 후 가장 오랫동안 사용되지 않은 페이지가 대상 )
  • LFU : '최소 빈도 사용 알고리즘' 이라 불림.
    ( 현재 프레임에 있는 페이지마다 그동안 사용된 횟수를 세어 가장 적은 페이지가 대상 )
  • NUR : '최근 미사용 페이지 교체 알고리즘' 이라 불림.
    ( LRU, LFU과 동일하나, 불필요한 공간 낭비 문제를 해결한 알고리즘 ) 
  • FIFO 변형 : FIFO 의 자주 사용하는 페이지를 고려하지 않는 단점을 개선한 알고리즘
     - 2차 기회 : FIFO 와 동일하게 큐를 사용하지만, 특정 페이지에 접근하여 페이지 부재없이 성공할경우 
                        해당 페이지를 큐의 맨 뒤로 이동하여 대상 페이지에서 제외시키는 방법 )
     - 시계 : 2차 기회 알고리즘과 거의 일반적으로 유사하나 , 2차 기회는 큐를 사용하고 시계는 원형 큐를 사용하는게 큰 차이점.

 

3. 스레싱과 프레임 할당

3.1 스레싱

- 하드디스크의 입출력이 너무 많아져서 잦은 페이지 부재로 작업이 멈춘것 같은 상태를 스레싱이라 한다.

( 메모리에 꽉 찬후 새로운 프로그램을 메모리에 올리기 위해 입출력이 계속되어 프로그램이 정지 한것 같은 현상 )

* 멀티 프로그래밍 정도 : 동시에 실행하는 프로그램의 수 ( 너무 높으면 스레싱이 발생 )

 

3.2 스레싱과 프레임 할당

- 실행중인 여러 프로세스에 프레임을 얼마나 할당하느냐에 따라 시스템 성능이 달라짐

- 프레임을 할당하는 방식은 크게 정적 할당과, 동적 할당으로 구분됨

( 한 프로세스에 너무 적은 프레임을 할당하면 페이지 부재 가 발생하고, 너무 많은 프레임을 할당하면 메모리 낭비 )

  • 정적 할당 : 프로세스 실행 초기에 프레임을 나누어 준 후 그 크기를 고정하는 방식. 크게 두가지가 있다.
    - 균등 할당: 프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스의 동일하게 할당 ( 페이지 부재 빈번, 메모리 낭비)
    - 비례 할당 : 프로세스의 크기에 비례하여 프레임을 할당하는 방식 (프로세스가 실행되면서 필요로 하는 프레임 유동적 반영 불가)
  • 동적 할당 : 시시각각 변하는 요청을 수용하는 방식 . 크게 두가지가 있다.
    - 작업집합 모델 : 지역성 이론을 바탕으로 함.  최근 일정 시간 동안 참조된 페이지들을 집합으로 만들고,
                              이 집합에 있는 페이지들을 물리 메모리에 유지해 프로세스의 실행을 돕는다.
    - 페이지 부재 빈도 : 페이지 부재 횟수를 기록하여, 페이지 부재비율을 계산하는 방식.
                                페이지를 할당하거나, 회수하여 적정 페이지 할당량을 조절한다. 

4. 프레임 관련 이슈

- 페이지 교체 알고리즘에 따라 페이지를 교체할땐 전역교체 방식, 혹은 지역 교체 방식을 적용 할수 있다.

  • 전역 교체 : 전체 프레임을 대상으로 교체 알고리즘 적용
    장점 : 물리 메모리의 모든 프레임을 대상으로 스왑 영역에 보낼 페이지를 찾음.
  • 지역 교체 : 현재 실행중인 프로세스의 프레임을 대상으로 교체 알고리즘 적용
    장점: 자신에게 할당된 프레임의 전체 개수에 변화가 없기 때문에 페이지 교체가 다른 프로세스에 영향 X
    단점: 자주 사용하는 페이지가 스왑 영역으로 옮겨져 시스템 효율이 떨어짐.

* 지역교체 방식보단 , 전역교체 방식이 더 효율적이다. ( 지역 교체 방식은 실행중인 프로세스의 성능을 떨어 뜨릴수 있다. )