티스토리 뷰

반응형

요구 페이징

사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것을 말한다.

요구 페이징을 사용하면 메모리의 절약, 메모리의 효율적 관리, 프로세스의 응답 속도 향상 등의 효과를 볼 수 있다.

 


➕ 캐시

캐시는 앞으로 필요할 것이라고 예상되는 부분을 고속의 캐시 메모리에 가져다 놓음으로써 시스템의 성능을 향상한다.

 

➕ 가상 메모리의 크기

물리 메모리 + 스왑 영역

 

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

가상 메모리 시스템에서 사용자 프로세스물리 메모리와 스왑 영역한 곳에 있다.

 

페이지가 스왑 영역에 있는 경우

  1. 요구 페이징으로 인해 처음부터 물리 메모리에 올라가지 못한 경우
  2. 메모리가 꽉 차서 스왑 영역으로 옮겨 온 경우

    ❗  ❗
    두 가지 경우 중 어떠한 경우라도 페이지 테이블에는 페이지가 메모리에 있는지, 스왑 영역에 있는지
    표시해야 하는데 이때 사용하는 비트가 유효 비트이다.

 

페이지 테이블 엔트리

💨 페이지 테이블 엔트리(PTE)

     PTE는 페이지 테이블의 한 행을 말한다.

     페이지 번호, 플래그 비트, 프레임 번호구성된다.

 

💨 플래그 비트

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

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

   3️⃣ 유효 비트: 페이지가 실제 메모리에 있는지를 나타내는 비트

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

 

 


페이지 부재

사용자가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황을 말한다.

 

 

🔶 페이지 부재 발생 시의 조치

페이지 부재가 발생하면 프로세스가 해당 페이지를 사용할 수 있도록 스왑 영역에서 물리 메모리로 옮겨야 한다.

  1. 페이지 요청시 유효 비트가 1이면 페이지 부재
  2. 메모리 관리자는 스왑 영역의 페이지를 메모리의 비어 있는 프레임으로 가져온다 (스왑인)
  3. 프레임에 페이지가 들어오면 유효 비트를 변경, 주소 필드 값 갱신
  4. 해당 프레임으로 접근하여 해당 데이터를 프로세스에 넘긴다.

 


지역성

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

 

  • 페이지를 스왑 영역으로 보낼 때 "앞으로 사용하지 않을 페이지"를 쫓아내는 것이 좋다.
  • 페이지 교체 알고리즘이 쫓아낼 페이지를 찾을 때는 지역성을 바탕으로 한다.

 

1️⃣ 공간의 지역성

     현재 위치에서 데이터 접근 확률

    🔰가까운 데이터 > 먼 거리 데이터🔰

 

2️⃣ 시간의 지역성

     현재를 기준으로 사용될 확률

    🔰가까운 시간에 접근한 데이터 > 먼 시간에 접근한 데이터🔰

 

3️⃣ 순차적 지역성

     여러 작업이 순서대로 진행되는 경향이 있다는 것을 의미

 


페이지 교체 알고리즘

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

 

🛑 종류

  1. 무작위 페이지 교체 알고리즘
  2. FIFO 페이지 교체 알고리즘
  3. 최적 페이지 교체 알고리즘
  4. LRU 페이지 교체 알고리즘
  5. LFU 페이지 교체 알고리즘
  6. NUR 페이지 교체 알고리즘
  7. FIFO 변형 알고리즘

 

1️⃣ 무작위 페이지 교체 알고리즘

페이지 교체 알고리즘 중 가장 간단하게 구현할 수 있는 방식이다.

스왑 영역으로 쫓아낼 대상 페이지를 특별한 로직 없이 무작위로 선정한다.

무작위 알고리즘은 지역성을 전혀 고려하지 않아, 자주 사용하는 페이지가 선정되기도 한다.

 

2️⃣ FIFO 페이지 교체 알고리즘

가장 먼저 들어온 페이지를 스왑 영역으로 쫓아내는 기법이다. 큐로 구현한다.

무조건 오래된 페이지를 대상 페이지로 선정하여 스왑 영역으로 쫓아내기에 자주 사용하는 페이지라도 내보낸다. 이러한 문제점을 개선한 것이 *2차 기회 페이지 교체 알고리즘이다.

 

3️⃣ 최적 페이지 교체 알고리즘

앞으로 사용하지 않을 페이지를 스왑 영역으로 옮긴다. 메모리가 앞으로 사용할 페이지를 미리 살펴보고 페이지 교체 선정 시점부터 사용 시점까지 가장 멀리 있는 페이지를 대상 페이지로 선정한다.

 

미래 접근 패턴을 보고 대상 페이지를 결정하기 때문에 성능이 좋지만 미래의 접근 패턴을 안다는 것이 사실상 불가능하여 실제로 구현할 수 없다.

 

❗ 최적 페이지 교체 알고리즘에 근접하는 방법을 연구한 결과

  • 최근 최소 사용 알고리즘 LRU
  • 최소 빈도 사용 알고리즘 LFU
  • 최근 미사용 알고리즘 NUR

이 개발되었고 이를 최적 근접 알고리즘이라고 부른다.

 

4️⃣ LRU 페이지 교체 알고리즘 [최적 근접 알고리즘 ①]

메모리에 올라온 후 가장 오랫동안 사용되지 않은 페이지를 스왑 영역으로 옮긴다.

 

⭕ 구현 방법

  1. 페이지 접근 시간에 기반한 구현

    페이지에 접근한 시간을 기록하여 구현

  2. 카운터에 기반한 구현

    시간이 아닌 카운터 숫자로 구현

  3. 참조 비트 시프트 방식

    각 페이지에 일정 크기의 참조 비트를 만들어 구현

 

5️⃣ LFU 페이지 교체 알고리즘 [최적 근접 알고리즘 ②]

최소 빈도 사용 알고리즘으로 페이지가 몇 번 사용되었는지를 기준으로 대상 페이지를 선정한다. 현재 프레임에 있는 페이지마다 그동안 사용된 횟수를 세어 횟수가 가장 적은 페이지를 스왑 영역으로 옮긴다.

 

➡ 사용 빈도가 같다면 FIFO

 

6️⃣ NUR 페이지 교체 알고리즘 [최적 근접 알고리즘 ③]

LRU, LFU 페이지 교체 알고리즘과 성능이 거의 비슷하면서도 불필요한 공간 낭비 문제를 해결한 알고리즘으로 최근 미사용 페이지 교체 알고리즘이라고도 부른다.

 

NUR은 추가 비트 2개(참조 비트, 변경 비트)를 사용하여 미래를 추정한다.

 

7️⃣ FIFO 변형 알고리즘

FIFO 성능 단점을 개선한 알고리즘으로 2차 기회 페이지 교체 알고리즘과 시계 알고리즘이 있다.

 

🛑 종류

  1. 2차 기회 페이지 교체 알고리즘

    FIFO 페이지 교체 알고리즘과 마찬가지로 큐를 사용하지만, 특정 페이지에 접근하여 페이지 부재 없이 성공할 경우 해당 페이지를 큐 맨 뒤로 이동하여 대상 페이지에서 제외한다는 것이다.

  2. 시계 알고리즘

    2차 기회 페이지 교체 알고리즘과 유사하지만 시계 알고리즘은 원형 큐를 이용한다.

 


스레싱

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

 

*멀티프로그래밍 정도: 동시에 실행하는 프로그램의 수

 

멀티프로그래밍 정도가 너무 높을 때 스레싱이 발생한다.

 

물리 메모리의 크기를 늘리면 스레싱 발생 지점이 늦춰져 프로세스를 원만하게 실행할 수 있다.

 

 

스레싱은 각 프로세스에 프레임을 할당하는 문제와도 연관된다. 실행 중인 여러 프로세스에 프레임을 얼마나 나누어 주느냐에 따라 시스템의 성능이 달라진다. 프레임을 할당하는 방식은 정적 할당동적 할당이 있다.

 

💭 정적 할당

프로세스 실행 초기에 프레임을 나눠준 후 그 크기를 고정하는 것으로, 균등 할당 방식과 비례 할당 방식이 있다.

 

  • 균등 할당 방식

    프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에 동일하게 할당한다.
    크기가 큰 프로세스의 경우 필요한 만큼 할당할 수 없어 페이지 부재가 빈번하게 발생하고,
    크기가 작은 프로세스의 경우 메모리 낭비가 되는 단점이 있다.

  • 비례 할당 방식

    프로세스의 크기에 비례하여 프레임을 할당하는 방식이다.
    사용하지 않을 메모리를 미리 확보하여 메모리가 낭비된다는 단점이 있다.

 

💭 동적 할당

정적 할당 방식은 프로세스를 실행하는 초기에 프레임을 할당하기에 실행 중에는 메모리 요구를 반영하지 못하는 단점이 있다. 정적 할당 방식의 단점을 개선한 방식이 동적 할당이다. 동적 할당 방식에는 작업집합 모델을 사용하는 방식과 페이지 부재 빈도를 사용하는 방식이 있다.

 

  • 작업집합 모델

    가장 최근에 접근한 프레임이 이후에도 또 참조될 가능성이 높다는 가정에서 출발
    작업집합 모델에서는 작업집합 윈도우의 크기에 따라 프로세스의 실행 성능이 달라진다.

  • 페이지 부재 빈도

    페이지 부재 횟수를 기록하여 페이지 부재 비율을 계산하는 방식
    프로세스를 실행하면서 추가적으로 페이지를 할당하거나 회수하여 적정 페이지 할당량을 조절한다.

 

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함