본문 바로가기
정보처리기사

3. 가상기억 장치 - 3과목 소프트웨어

by 공불러 2024. 4. 6.
728x90
반응형

부가 제목 추가

지난 시간에는  컴퓨터 시스템에서 사용되는 메모리 관리 기술의 한 형태로, 메모리를 효율적으로 할당하고 관리하여 시스템의 성능을 최적화하는 것을 목표로 하는 메모리 관리 전략에 대해 공부했습니다. 

 

이번 시간에는 가상기억장치 페이지 교체알고리즘(FIFO, OPT, LRU, LFU, NRU,SCR)을 중심으로 공부할 것입니다. 최근 출제되지 않아 출제될 확률이 되려 높으므로 꼭 챙겨가지실 바랍니다. 단편화를 조절하기 위한 페이징과 세그멘테이션 기법도 알아두셔야합니다.

목차

    가상기억 장치란?

    보조기억 장치의 일부를 주기억장치처럼 사용하는 기법

     

    가상기억 장치는 메모리 관리 기술 중 하나로, 주기억장치(RAM)의 용량을 늘리기 위해 사용되는 기술입니다. 

    컴퓨터는 실제로 사용되지 않는 프로세스의 데이터나 프로그램을 보조기억장치(하드 디스크 등)에 저장해 두고 필요할 때마다 주기억장치로 불러와 사용합니다. 

    이를 통해 다중프로그래밍 효율을 높일 수 있습니다. (시분할, 다중처리시스템)

     

    페이징 기법

    • 고정 분할
    • 내부단편화만 발생 (외부 단편화는 발생하지 않음)
    • 가상메모리와 주기억장치를 동일한 크기의 페이지로 나누어 관리하는 방법입니다.
    • 페이지 단위로 데이터를 관리하며, 주기억장치와 보조기억장치 사이에서 페이지 단위로 데이터를 전송합니다.
    • 페이징 기법 예시
      페이지 크기 (KB) 기억장소 효율 단편화 입출력 시간 맵테이블

      ex) 20kb
      감소 증가 감소 감소
      작음
      ex) 5kb
      증가 감소 증가 증가

    세그멘테이션 기법

    세그멘터이션은 코드, 데이터, 스텍, 힙 영역에 맞춰 분할하는 것입니다,

    코드 : 코드

    데이터 :정적변수, 전역변수

    스택 : 지역변수

    힙 :동적변수

    • 가변 분할
    • 데이터(전역), 코드, 스레드(지역), 힙(동적)
    • 내부단편화는 없지만 외부 단편화 발생
    • 가상메모리를 서로 다른 크기의 논리적 단위인 세그먼트로 나누어 사용하는 방법입니다.
    • 각 세그먼트는 논리적인 단위로 분리되며, 프로세스의 요구에 따라 할당되고 보호됩니다

    가상기억장치 기타 관리 사항

    페이지 부재 : CPU에서 프로그램을 실행하려는데, 주기억 장치에 필요한 페이지가 없을 때

    페이지부재 발생을 줄이기 위해 아래 내용을 참고함.

    1. 지역성 (Locality)
      • 프로그램이나 프로세스가 특정 시간에 특정 부분의 데이터나 명령어에 집중되는 경향을 말합니다.
      • 지역성은 시간 지역성과 공간 지역성으로 나뉩니다.
      • 시간 지역성은 한 번 참조한 데이터나 명령어가 재참조될 확률이 높은 것을 의미하고, 공간 지역성은 참조된 데이터 또는 명령어와 인접한 위치의 데이터나 명령어가 재참조될 확률이 높은 것을 의미합니다.
      • 이러한 지역성을 고려하여 가상기억장치를 효율적으로 관리할 수 있습니다.
        • 시간 지역성 : loop( 배열 ), stack, sub routin, 
        • 공각지역성 : 배열 순회, 반복
    2. 워킹셋 (Working Set)
      • 지역성 이론을 바탕으로 만들어짐
      • 프로세스가 주기억장치에 활발하게(자주 참조) 사용하는 페이지의 집합을 말합니다.
      • 워킹셋은 프로세스의 메모리 요구량을 추적하고, 페이지 교체 알고리즘을 결정하는 데 사용됩니다.
      • 프로세스의 워킹셋이 주기억장치에 올라와 있으면 성능이 향상되며, 그렇지 않으면 페이지 부재가 발생할 수 있습니다.
    3. 스래싱 (Thrashing)
      • CPU가 프로세스 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
      • CPU는 노는 현상 : CPU는 프로세서 처리기이며, 프로세스를 처리하기 위해선 프로그램이 프로세서로 존재해야하는데, 페이지를 교체한다고 보조기억 장치에서 주기억 장치로 올라오지 못하면 CPU가 놀게 됩니다.
      • 가상기억장치에서 페이지 교체가 과도하게 발생하여 시스템의 성능이 급격히 저하되는 현상을 말합니다.
      • 스래싱은 프로세스들이 주기억장치에 필요한 페이지를 충분히 확보하지 못하고, 페이지 부재가 지속적으로 발생할 때 발생합니다.
      • 이는 주로 CPU가 페이지 교체에 소비되는 시간이 실제 작업 수행에 비해 지나치게 많은 경우에 발생합니다.
      • 스래싱을 방지하기 위해서는 적절한 페이지 교체 알고리즘 및 워킹셋 기반의 메모리 관리가 필요합니다.

     

    페이지 교체 알고리즘

    반입(요구,예상)-> 배치(최초, 최적, 최악)->교체(FIFO, OPT, LRU, LFU, NUR, SCR)로 진행되기 때문에 여러 프로세스를 사용하기 위해 필요합니다.

    1. FIFO (First-In-First-Out)

    • FIFO 알고리즘은 가장 먼저 메모리에 들어온 페이지를 먼저 교체하는 방식입니다. 즉, 페이지가 메모리에 올라온 순서대로 교체됩니다. FIFO는 구현이 간단하고 이해하기 쉽지만, 페이지의 액세스 패턴을 고려하지 않고 순서대로 교체하기 때문에 최적의 성능을 보장하지는 않습니다.
    참조 페이지 1 2 3 1 2 4 1 2 5
    페이지 프레임 1 1 1 1 1 1 4 1 1 5
    페이지 프레임 2   2 2 2 2 2 2 2 2
    페이지 프레임 3     3 3 3 3 3 3 3
    페이지 부재 0 0 0 x x 0 0 0 0

     

    2. OPT (Optimal)

    • OPT 알고리즘은 최적의 페이지 교체를 위해 앞으로 사용되지 않을 페이지를 교체하는 방식입니다. OPT는 모든 가능한 교체 시나리오를 고려하여 가장 나중에 사용될 페이지를 찾아내고, 해당 페이지를 교체합니다.
    • 따라서 이론적으로는 최적의 성능을 보장하지만, 실제로는 알고리즘이 실행되는 시점에 앞으로 사용될 페이지를 미리 알 수 없기 때문에 구현이 어렵습니다.

    3. LRU (Least Recently Used) 참조하지 않은

    • LRU 알고리즘은 최근에 사용되지 않은 페이지를 교체하는 방식입니다. 즉, 가장 오랫동안 사용되지 않은 페이지를 교체합니다. LRU는 페이지 액세스의 최근 기록을 추적하여 가장 최근에 사용되지 않은 페이지를 교체하기 때문에, 가장 최근에 사용된 페이지를 보존하는 경향이 있습니다.
    참조 페이지 1 2 1 0 4 1 3
    페이지 프레임 1 1 1 1 1 1 1 1
    페이지 프레임 2   2 2 2 4 4 4
    페이지 프레임 3       0 0 0 3
    페이지 부재 0 0   0 0   0

    4. LFU (Least Frequently Used) 참조 빈도

    • LFU 알고리즘은 가장 적게 사용된 페이지를 교체하는 방식입니다. LFU는 페이지의 사용 빈도를 추적하여 가장 적게 사용된 페이지를 교체합니다. 이 알고리즘은 사용 빈도가 낮은 페이지를 우선적으로 교체함으로써 최근에 사용되었더라도 자주 사용되지 않는 페이지를 교체합니다.
    참조 페이지 1 2 3 빈도 제일 적음 1 2 4 1 2 5
    페이지 프레임 1 1 1 1 1 1 1 1 1 1
    페이지 프레임 2   2 2 2 2 2 2 2 2
    페이지 프레임 3     3 3 3 4 4 4 5
    페이지 부재 0 0 0     0     0

    5. NUR (Not Used Recently)

    • NUR 알고리즘은 최근에 사용되지 않은 페이지를 교체하는 방식으로, LRU와 유사하지만 구현이 더 단순합니다.
    • NUR은 페이지의 최근 사용 여부와 수정 여부를 추적하여 가장 최근에 사용되지 않은 페이지를 교체합니다.

    6. SCR (Second Chance Replacement)

    • SCR 알고리즘은 FIFO와 LRU를 결합한 방식으로, FIFO 알고리즘을 기반으로 하되, 참조 비트를 사용하여 LRU처럼 최근에 사용된 페이지를 우선적으로 보존합니다.
    • 페이지 교체 시 참조 비트를 확인하여 최근에 사용된 페이지를 보존하는 방식으로 동작합니다.

     

    728x90
    반응형

    댓글