가상메모리

개념
시스템에 설치된 물리적 기억장치의 효율적 사용을 위해 사용자에게 물리적 기억장치를 숨기고 논리적으로 확장된 기억장치를 제공하는 H/W, S/W 방법

I. 물리공간의 한계성을 극복하여 효율적인 자원이용을 돕는 가상 기억장치
    가. 가상 기억장치의 개요

  • 시스템에 설치된 물리적 기억장치의 효율적 사용을 위해 사용자에게 물리적 기억장치를 숨기고 논리적으로 확장된 기억장치를 제공하는 H/W, S/W 방법

 

    나. 가상기억장치의 특징

  • 효과적인 멀티 프로그래밍 가능
  • 다수의 사용자에 의한 메인 메모리 공유
  • 물리적 공간보다 더 큰 프로세스의 실행이 가능
  • 시스템의 다중 프로그래밍 수준 향상 -> 많은 프로그램 동시 수행 - > 이용률, 처리율 상승
  • 기억공간의 제약 감쇠 -> 물리적 기억장치의 효율적인 사용
  • 적재/교체로 인한 I/O 작업 축소로 프로그램 실행 속도 향상
  • 오버레이 문제 해결

 

    다. 가상 기억장치의 기법

  • 가상 기억장치를 구현하기 위해서는 사용자 프로그램을 분할하는 구성기법과 가상주소를 실 주소로 변환하는 가상 주소 변환 기법, 성능 향상을 위한 관리기법 존재

구분

구성기법

사상(Mapping)기법

관리기법

가상 기억장치 (Virtual Memory)

-페이징 (고정 block)

-세그먼테이션 (가변 block)

-혼용방법

-직접 사상

-연관 사상

-혼용방법

 -반입 정책 (fetch policy)

-배치 정책(placement policy)

-교체 정책(replacement policy)

-적재 집합(resident set) 관리 정책

-클리닝 정책 (cleaning policy)

-부하 제어(load control)

 

II. 매핑과 분할을 통해 구현되는 가상 기억장치
    가. 가상 기억장치 구현을 위한 가상 주소 변환 방법

  • 실 주소(real address) 또는 물리 주소(physical address): 주기억장치의무사용 가능한 주소 이들 번지의 집합을 실 주소 공간(물리 주소 공간: real address space)이라 함
  • 가상 주소(virtual address) : 수행 중인 프로세스가 참조하는 페이지 주소 보조 기억장치 번지를 가상 주소라고 하며, 이들 번지의 집합을 가상 주소 공간
  • 가상 주소 변환(VAT: Virtual Address Transiation): 가상 주소를 실 주소로 변환
  • 동적 변환(DAT: Dynamic Address Transiation)은 가상 주소 변환이 프로세스가 수행될 때 동적으로 사용되는 기법으로 이러한 변환을 사상(mapping)이라 함
  • 블록 사상(block mapping): mapping 시 mapping table을 필요로 하는데 블록 단위로 주소 사상정보를 기록하여 사용하는 기법

 


    나. 페이징을 통한 가상 기억장치 구현

  • 페이징(paging) : 블록 크기가 일정할 경우 페이지(page)라 하고 그와 관련된 가상 기억장치 구성을 페이징 이라고 함
  • 페이징에는 주소 사상 기법으로 직접, 간접, 혼용 방식과 페이지 대치, 페이지 부재, 페이지 할당, 적재, 프리페이징 등의 기법 사용

구분

설명

페이징 시스템 개요

 

- 여러 개의 페이지 프레임(page frame)이라는 고정된 크기의 블록으로 나눔

-요구 프로세스의 페이지들을 적재하기에 충분한 수의 가용한 페이지 프레임을 찾는 것으로 시작

-페이징에서는 각 페이지의 크기가 같으므로 외부 단편화가 없고 마지막 페이지에 대하여 내부 단편화가 발생

-사상: 직접, 연관, 혼용기법

직접 사상 (direct mapping)

 

-프로세스의 가상 저장 장치를 구성하는 모든 페이지에 대한 항목이 페이지 사상 테이블에 포함

-페이지 사상 테이블은 보통 주기억장치에서 유지/관리

-변환되는 가상 주소와 페이지 사상 테이블의 시작 주소는 제어장치 내의 고속 레지스터에 저장

연관사상 (associative mapping)

 

-동적 주소 변환을 주기억장치에서 보다 빠른 연관 기억장치에 페이지 사상 테이블을 넣어서 수행하는 방법(캐시 메모리)

-장점: 연관 사상을 빠른 동적 주소 변환이 가능

-단점: 캐시 메모리가 고가이기 때문에 페이지 사상 테이블 전체를 연관 기억장치에 설치하기에는 비용 부담

직접/연관 혼합 사상

 

-연관 사상 기법의 장점을 취하되 이에 따르는 하드웨어의 비용을 줄여보자는 의도에서 직접 사상기법과 연관기법을 같이 사용하는 기법

-소규모의 연관기억 장치를 사용

-연관 사상표, 변환 버퍼, 페이지 사상표 필요

요구 페이징 기법

-프로그램을 실행하기 위해 프로그램 일부만을 메인 메모리에 적재

-프로그램이 순차적으로 작성 -> 프로그램의 일부(모듈)가 처리될 때 다른 부분은 실행되지 않음

예) 오류 처리 루틴의 실행과정, 지연교환기(lazy swapper)사용

페이지

부재

 

-프로그램이 메모리에 저장되지 않은 페이지 사용

-접근 방지: 타당(비타당)비트 이용 처리

-프리 페이징(prepagging)

페이지

교체 (대치)

-주기억 장치에 새로 적재할 페이지 위해 기존의 페이지 제거 기법

-전역 대치(global replacement)

-지역 대치(local replacement)

기법 : 최적(optimal), 무작위 교체, FIFO(First In Firtst Out), LRU(Least Recently Used), NUR(Not Used Recently), LFU(Lease Frequently Used), SCR(Second Change Replacement)

페이지

할당

-단독 사용자 환경

-최소 프레임 수

-균일과 비례 할당 알고리즘

기법: 스레싱, 페이지 부재 빈도(PFF:Page Fault Frequency), 지역성(locality), 작업설정(Working set) 모델

    다. 세그먼테이션을 통한 가상 기억장치 구현
        -세그먼테이션(segmentation): 블록이 서로 다른 크기를 가질 경우 세그먼트라고 하며, 그와 관련된 가상 기억장치 구성을 세그먼테이션이라고 함
        -세그먼테이션에는 주소 사상 기법으로 직접, 간접, 혼용 방식

구분

설명

세그먼테이션 개요

 

- 프로세스의 주소 공간을 동적으로 설정되는 가변 크기의 블록들로 분할

-논리적 개체(유틸리티 코드, 데이터 테이블 등)를 세그먼트로 설정하여 공유/보호 가능

-세그먼트 별로 독립적인 변경, 재컴파일 가능

-확장성 자료 구조에 대한 처리 단순화

-사상: 직접, 연관, 혼용 기법

-주기억장치 overhead 발생

직접 사상 (direct mapping)

 

-세그먼트 사상 테이블(Segment Map Table: SMT) 가상 주소의 세그먼트 번호를 이용하여 대응된 세그먼트 테이블 항목을 찾고, 해당 세그먼트가 적재된 물리 메모리 블록의 시작 주소를 얻음

-존재 비트(Present bit): 적재 여부

-변경 비트(Modify bit): 적재 이후 내용 변경 여부

연관사상 (associative mapping)

-페이징 기법과 유사

직접/연관 혼합 사상

-페이징 기법과 유사

페이징/세그먼테이션 혼용 기법

-세그먼테이션 기법의 논리적 장점과 페이징 기법의 메모리 관리 측면의 장점을 활용하기 위한 기법

-각 세그먼트는 고정 크기의 페이지들로 분할

-가상 주소에 대한 관점

 1) 프로그래머 관점:

   가상주소=세그먼트 번호 + 세그먼트 오프셋

2) 시스템 관점:

  세그먼트 오프셋=페이지 번호 + 페이지 오프셋

III. 가상 기억장치의 효율성과 성능을 높이는 관리 기법
    가. 가상 기억장치 관리 정책

  • 가상 기억장치 관리 정책에 있어 주요 이슈는 성능
  • 페이징 관련 이슈에 집중
  • 가상 기억장치 관리 정책의 범주 : 반입정책(fetch policy), 배치정책(placement policy), 교체정책(replacement policy) 적재집합정책(resident set policy), 클리닝 정책(cleaning policy), 부하 제어(load control)

 

    나. 기억장치 관리 기법

Block 구분

내용

기법

반입(호출) 정책(Fetch Policy)

-When :각 페이지를 언제 주기억 장치로 적재할지 결정하는 정책

-요구 반입(demand paging)

-선 반입(prepaging)

1) 요구 반입(demand paging)

 -페이지 폴트(적재되지 않은 페이지 중 일부분 참조)시 적재

 - 일반적인 경우 지역성에 의해 안정적 운용 가능

2)선반입(prepaging)

 -페이지 폴트에 의해 요구된 페이지 이외의 페이지도 적재

 -스와핑(swapping)과 구분

배치 정책 (replacement policy)

-Where: 적재될 블록이 주기억장치의 어디에 위치할 것인지 결정하는 정책

-페이징 시스템

-세그먼테이션 기법

-NUMA(NumUniform Memory Access) 구조의 다중 처리기 경우 각 페이지를 그것을 참조할 처리기와 가까운 메모리 모듈에 배치시키는 배치 전략 필요

-페이징 시스템: 주소 변환 하드웨어와 주기억 장치 접근 하드웨어들이 어떠한 페이지/프레임 조합에 대해서도 같은 효율로 가능하기 때문에 배치정책은 무의미

-세그먼테이션 기법: 최초 적합, 최적 적합, 최악 적합, 순환 최초 적합 기법

교체 정책 (replacement policy)

-Who: 가용 프레임이 없을 경우, 새로운 페이지를 반입하기 위해 현재 적재되어 있는 페이지들 중 어떤 페이지를 교체할 것인지 결정하는 정책

-가까운 미래에 참조될 가능성이 가장 적은 페이지를 선택하여 교체하는 것이 교체 정책의 이상적 목표

-지역성 전제로 과거의 참조 형태에 근거하여 미래의 참조 가능성 예측

-프레임 잠금: 교체 대상에서 배제(운영체제 커널 중 주요 자료 구조, 입출력 버퍼, 시간이 중요한 영역)

-최적(Optimal): 가장 오랫동안 참조되지 않을 페이지 교체

-LRU((Least Recently Used): 가장 오랫동안 참조되지 않은 페이지 교체

-FIFO(First-In First-Out): 가장 오래전에 적재된 페이지 교체

-클록(Clock): 페이지를 적재한 프레임들이 환형으로 배치되어 있다고 간주하고, 첫 교체 후보를 가리키는 포인터(시계바늘)설정

-페이지 버퍼링: 교체 대상으로 선택된 페이지를 즉시 교체하지 않고 가용 페이지 리스트 뒤쪽에 연결시켜 어느 정도 기간동안 주기억장치 상에 유지시킨 뒤 교체

적재 집합(resident set) 정책

-How much: 각 프로세스에게 할당할 메모리의 양을 관리

-프로세스 실행 중 메인 메모리 할당량 변화 알고리즘

-고정할당, 가변 할당

-지역범위, 전역 교체

-할당량이 너무 적을 경우, 높은 페이지 폴트 발생률

-할당량이 많이 질 경우, 다중 프로그래밍의 차수가 적어져 처리기 유휴 시간이나 스와핑 시간 증가

-대표적 전략

 *작업집합 전략(working set strategy)

 *PFF(Page Fault Frequency)

 * VSWS(Variable-interval Sampled Working Set)

-적재 집합의 크기 관리

 *고정 할당:프로세스에 할당된 프레임수 고정

 *가변할당: 프로세스에 할당된 프레임 수의 변경 허용

-교제 범위 관리

 *지역범위(local scope): 해당 프로세스의 적재 집합 내에서 교체 대상

 *전역교체(glocal scope): 주기억장치 상의 모든 페이지 중에 교체 대상 선택

클리닝 정책 (cleaning policy)

-변경된 페이지들 중 어떤 것을 보조기억장치에 기록할 것인지 결정하는 정책(반입 정책과 상반된 정책)

-페이지 버퍼링과 접목하여 적용할 경우 효과적

-요구 클리닝(demand cleaning): 교체될 때 기록

-선 클리닝(precleaning): 교체되기전에 기록(일괄기록 가능)

부하 제어 (load control)

-주기억장치에 적재될 프로세스 수 결정

-메모리에 적재된 프로세스의 수가 너무 적으면, 모든 프로세스가 블록 상태인 경우가 잦아 스와핑에 많은 시간 소요

-메모리에 적재된 프로세스 수가 너무 많으면, 각 프로세스의 적재 집합을 구성하는 페이지수가 불충분해져 잦은 페이지 폴트가 유발하게 되고, 궁극적으로 스레싱 발생

-프로세스 보유

 

IV. 가상 기억 장치의 활용 전망
    가. 휴대용 단말기

  • 업로드 인덱스(Upload Index): 가상 메모리 파일의 읽기 과정에서 사용한 가상 메모리 파일 버퍼
  • 플러쉬 인덱스(Flush Index): 가상 메모리 파일 쓰기 과정을 수행할 버퍼의 정보를 포함
  • 메모리 관리부: 낸드 플레쉬 메모리를 동기식 동적 램과 같은 기능을 수행하도록 가상 메모리를 설정하여 가상 메모리 파일의 연산을 가능하도록 처리

 

    나. 실시간 임베디드 시스템의 페이지 교체

  • 임베디드 시스템에 요구되는 기능 요건들이 복잡해 짐에 따라 Linux와 같은 가상 메모리 기반의 범용 운영 체제를 채택하는 경우가 늘고 있음
  • 가상 메모리 시스템은 필요한 메모리 사용량을 줄임
  • 응용 프로그램 개발가 디버깅을 용이하게 하기 때문에 높은 개발 생산성을 기대
  • 임베디드 시스템이 모놀리식(monolithic) 커널을 사용하면서, NAND 플래시 메모리는 가상 메모리 시스템의 스왑(swap)공간을 위해 사용

 

    다. 유비쿼터스의 가상 저장 장치

  • 관리자에 의하여 접속된 단말 수단의 여백 저장 공간을 확인하고 소정 단위 블록으로 분할하며 주소를 할당하여 가상 저장 공간으로 설정
  • 사용자 단말 장치로부터 검색할 키워드가 입력되면 시맨틱 서버로부터 위치 정보를 검색하고 가장 저장 공간의 위치 정보로부터 정보 파일을 검색하여 사용자 단말 장치에 제공

댓글