가상메모리
태그 :
- 개념
- 시스템에 설치된 물리적 기억장치의 효율적 사용을 위해 사용자에게 물리적 기억장치를 숨기고 논리적으로 확장된 기억장치를 제공하는 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)공간을 위해 사용
다. 유비쿼터스의 가상 저장 장치
- 관리자에 의하여 접속된 단말 수단의 여백 저장 공간을 확인하고 소정 단위 블록으로 분할하며 주소를 할당하여 가상 저장 공간으로 설정
- 사용자 단말 장치로부터 검색할 키워드가 입력되면 시맨틱 서버로부터 위치 정보를 검색하고 가장 저장 공간의 위치 정보로부터 정보 파일을 검색하여 사용자 단말 장치에 제공