ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제] 9. 가상메모리 관리
    운영체제 2020. 1. 5. 16:59

    가상메모리

    - 당장 실행해야 하는 부분만 주기억장치에 넣고 나머지는 보조기억장치에 넣어 동작하도록 하는 것

     

     

    요구 페이징

    - 사용자가 요청할 때 해당 페이지를 메모리로 가져오는 것

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

    - 메모리와 응답 속도 때문에 프로세스 일부만 메모리로 가져온다.

    - 스와핑 : 프로세스를 구성하는 모든 페이지를 메모리에 올리는 것

    - 게으른 스와퍼 : 사용자가 요구할 때 메모리에 올리는 것

    ↔ 미리 가져오기(프리 페이징) : 앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식

     

     

    페이지 테이블 엔트리

    - 페이지 테이블의 한 행

    - 페이지 번호, 플래그 비트, 프레임 번호로 구성

    - 스왑인 : 스왑 영역에서 물리 메모리를 가져오는 것

    - 스왑아웃 : 물리 메모리에서 스왑 영역으로 데이터를 내보내는 것

     

     

    플래그 비트

    - 접근 비트 : 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트

                     해당 메모리에 읽기나 실행작업을 했다면 1이 된다.

    - 변경 비트 : 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트

                     해당 메모리에 쓰기나 추가 작업을 했다면 1이 된다.

    - 유효 비트 : 페이지가 실제 메모리에 있는지(0), 스왑 영역에 있는지(1)를 나타내는 비트

                     프로세스가 물리 메모리에 접근했을 때 해당 데이터에 메모리에 있지 않고 저장 장치에 있을 수 있단 의미

    - 읽기, 쓰기, 실행 비트 : 페이지에 대한 읽기, 쓰기, 실행 권한을 나타내는 비트

     

     

    페이지 부재

    - 프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황

    - 유효 비트가 0일 때는 페이지가 메모리에 있으므로 주소 필드에 물리 메모리의 프레임 번호가 저장되고, 유효 비트가 1일 때는 페이지가 스왑 영역에 있으므로 주소 필드에 스왑 영역 내 페이지 주소 저장

    → 페이지 부재 발생시 조치

    - 스왑 영역에 잇는 페이지를 메모리의 비어 있는 프레임으로 가져 온다(스왑인)

    - 유효비트는 0으로, 주소 필드 값은 프레임 번호로 변경된다.

     

     

    지역성

    - 기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되는 것이 아니라 특정 영역에 집중되는 성질

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

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

    - 순차적 지역성 : 여러 작업이 순서대로 진행되는 경향이 있다는 것

     

     

    페이지 교체 알고리즘

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

    - 재배치 정책 : 메모리가 꽉 찼을 때 어떤 페이지를 스왑 영역으로 내보낼지 결정하는 정책

     

    간단한 알고리즘

    - 무작위 : 무작위로 대상 페이지를 선정하여 스왑 영역으로 보낸다.

    - FIFO : 처음 메모리에 올라온 페이지를 스왑 영역으로 보낸다.

     

    이론적 알고리즘

    - 최적 : 미래의 접근 패턴을 보고 대상 페이지를 선정해 스왑영역으로 보낸다.

     

    최적 근접 알고리즘 

    - LRU : 시간적으로 멀리 떨어진 페이지를 스왑영역으로 보낸다.

    - LFU : 사용 빈도가 적은 페이지를 스왑영역으로 보낸다.

    - NUR : 최근에 사용한 적이 없는 페이지를 스왑영역으로 보낸다.

    - FIFO 변형 : FIFO 알고리즘을 변형해 성능을 높인다.

     

     

    스래싱

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

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

    - 스레싱 발생 지점 : 메모리가 꽉차면 CPU가 작업하는 시간보다 스왑영역으로 페이지를 보내고 새로운 페이지를 메모리에 가져오는 작업이 빈번해져서 CPU가 작업할 수 없는 상태

     

     

    프레임 할당 방식

    정적 할당 : 프로세스 실행 초기에 프레임을 나눠준 후 그 크기를 고정하는 방식

    - 균등 할당 : 프로세스 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에 동일하게 할당

    - 비례 할당 : 프로세스 크기에 비례해 프레임을 할당하는 방식

     

    동적 할당 : 프로세스를 실행하는 중에 프레임을 나눠주기도 하고 회수하기도 하는 방식

    - 작업집합 모델 : 지역성 이론을 바탕으로 하며, 최근 일정시간동안 참조된 페이지들을 집합으로 만들고, 이 집합에 있는 페이지들을 물리 메모리에 유지해 프로세스의 실행을 돕는다.

    - 페이지 부재 빈도 : 페이지 부재 비율이 상한선을 초과하면 할당한 프레임이 적다는 것을 의미하므로 프레임을 추가해 늘리고, 하한선 밑으로 내려가면 메모리가 낭비된다는 의미이므로 할당한 프레임을 회수한다.

Designed by Tistory.