가상 기억 장치란 사용자가 보조기억 장치 용량에 해당하는 기억 공간을 갖고 있는 것처럼 생각하고 프로그래밍할 수 있도록 하는 개념입니다. 가상 기억 체제는 컴퓨터가 보조기억 장치에 비해 기억 용량이 적은 주기억 장치를 갖고 있지만 프로그래머에게는 매우 커다란 기억 장치를 갖고 있는 것처럼 인식하도록 합니다. 기법은 프로그램의 주소를 실제 주 기억 장치의 주소로 변환하는 방법이 필요하고 이는 프로그램이 CPU에 의해 실행되고 있는 동안 동적으로 행해집니다. 다시 말하면 프로그래머가 사용할 수 있는 주소 공간의 확대가 목적으로 보조기억 장치의 용량을 주기억 장치의 용량으로 보이도록 하는 기법으로 하드웨어와 소프트웨어의 결합체입니다. 주기억 장치와 보조기억 장치가 계층 구조를 이루고 있어며 컴퓨터 이용의 확대로 인해 다중 프로그래밍이 등장했고 이를 컴퓨터 용량의 확장으로 해결하려는 방식입니다.
1. 동작원리
1) 주소 공간과 기억 공간
프로그래머가 사용하는 주소는 가상 주소이며 가상 주소의 집합을 주소 공간이라 합니다. 주기억 장치의 주소는 물리 주소라 하며 물리 주소의 집합을 기억 공간이라 합니다. 대부분의 컴퓨팅 시스템에서 주소 공간과 기억 공간이 같지만 가상 기억 장치는 주소 공간이 기억 공간보다 큽니다. 명령의 주소 필드는 가상 주소를 지정할 수 있어야 하는데 예를 들면 명령의 주소 필드는 20비트, 물리기억 장치의 주소는 15비트로 구성한다면 CPU는 20비트 주소로 명령과 데이터를 참조하지만 가상 주소의 정보는 물리기억 장치에서 읽어 와야 합니다. 따라서 20비트 가상 주소를 15비트 물리 주소로 변환하는 표가 필요합니다. 주소 변환표는 독립적인 기억 장치에 저장하거나 또는 같은 주기억 장치에 저장할 수 있습니다. 또는 연상기억 장치를 이용할 수도 있습니다.
2) 주소 변환
주소 공간과 기억 공간을 고정 크리로 분할해서 사용하면 주소 변환이 편리합니다. 같은 크기로 분할한 기억 공간을 블락, 동일한 크기로 분할한 주소 공간을 페이지라고 합니다. 이 경우 가상 주소는 페이지 번호와 페이지 내의 주소로 구분하여 표기할 수 있습니다. 예를 들어 페이지 크기가 2p워드인 컴퓨팅 시스템에서 페이지 내의 주소를 P비트로 지정하며 가상 주소의 나머지 비트에는 페이지 번호를 지정합니다. 주소 공간에 있는 페이지 내의 주소와 기억 공간의 블락 내부에서 표현하는 주소는 같으므로 페이지 번호를 블락 번호로만 변환하면 됩니다.
페이지표의 주소는 페이지 번호를 의미하고 워드 내용은 페이지가 저장되어 있는 주기억 장치의 블락 번호를 표시합니다. presence 비트는 페이지가 보조기억 장치에서 주기억 장치로 전송되었음을 표시하며 비트값이 0이면 해당 페이지가 주기억 장치 안에 존재하지 않음을 의미합니다. 이 경우 운영체제를 호출하여 해당 페이지를 보조기억 장치에서 주기억 장치로 옮기도록 요청합니다.
RAM을 이용한 페이지표는 기억 장치의 이용상 비효율적입니다. 예를 들어 주소 공간이 1024K 워드, 기억 공간이 32K 워드이고 페이지 및 블록 크기가 1K 워드이면 1024개 페이지와 32개 블록이 존재합니다. 따라서 페이지표 용량은 1024 워드이며 그중 32 워드만 presence 비트가 1이고 나머지 992개는 사용하지 않습니다. 따라서 페이지표의 워드 개수와 주기억 장치의 블락 개수를 같도록 설정하면 페이지표를 효율적으로 구성할 수 있고 연상기억 장치를 사용하여 실현할 수도 있습니다. 페이지표는 주기억 장치, 독립된 기억 장치 또는 연상기억 장치에 저장할 수 있고 RAM을 이용하는 경우 기억 공간이 낭비되기 때문에 연상기억 장치를 이용하는 것이 가장 효율적인 방법입니다.
① 페이징: 주기억 장치에 로드하는 단위인 블락의 크기가 고정된 방식, 사용자가 작성한 프로그램이 운영체제에 의해 페이지 단위로 분할합니다.
② 세그멘테이션: 블락 크기가 가변인 방식이며, 프로그램은 프로그래머에 의해 세그먼트 단위로 분할합니다.
3) 페이지 교체
가상 기억 장치 소프트웨어 기능은 다음과 같습니다.
① 주기억 장치에서 새로운 페이지를 저장할 공간을 위해 제거해야 할 페이지 선택
② 페이지를 보조기억 장치에서 주기억 장치로 옮기는 시간 판단
③ 페이지를 저장할 주기억 장치의 위치 판단
참조하려는 페이지가 주기억 장치에 없을 경우 페이지 결함이라 하며 이와 같은 상태가 발생하면 요구된 페이지가 주기억 장치로 옮겨질 때까지 프로그램 실행이 중단됩니다. 보조기억 장치에서 주기억 장치로의 페이지 전송은 입출력 동작이므로 운영체제는 입출력 작업을 I/O 프로세서에게 요청합니다. 작업을 실행하는 동안 CPU는 다른 프로그램을 실행하다가 전송이 완료되었을 때 입출력 프로그램을 다시 실행합니다.
새로운 페이지를 주기억 장치로 전송할 때 주기억 장치에 데이터가 가득 차 있으면 제거할 페이지를 선택해야 합니다. 이를 위한 교체 알고리즘은
① First-In First-Out(FIFO) 알고리즘: 주기억 장치 안에 가장 오래 상주한 페이지를 제거합니다. 페이지가 주기억 장치로 전송될 때마다 페이지의 식별 번호를 FIFO에 기록합니다. FIFO는 기억 장치의 빈 블록이 없을 때 full 상태가 되고 새로운 페이지를 주기억 장치에 옮겨야 할 때 가장 오래된 페이지를 주기억 장치에서 제거해야 하므로 제거할 페이지의 식별 번호는 FIFO의 맨 앞에 있으므로 쉽게 판단할 수 있습니다. FIFO 교체 알고리즘은 구현하기 쉬운 장점이 있지만 페이지가 자주 교체되는 단점이 있습니다.
② Least Recently Used(LRU) 알고리즘: 구현하기 어렵지만 최근에 가장 적게 사용한 페이지를 제거합니다. 이 알고리즘은 주기억 장치에 있는 페이지마다 카운터를 부착하고 페이지가 참조되면 카운터를 0으로 합니다. 일정 시간 후 모든 페이지의 카운터를 1씩 증가시키므로 최근에 가장 적게 사용한 페이지가 가장 큰 값을 갖습니다. 이 카운터를 aging 레지스터라 합니다.
③ Least Frequently Used(LFU): 가장 드물게 사용한 페이지를 우선적으로 제거합니다.
'컴퓨터정보' 카테고리의 다른 글
데이터 전송 개념과 방식 (0) | 2022.01.08 |
---|---|
입출력 장치를 알아보자 (0) | 2022.01.08 |
기억 장치의 계층 구조 (0) | 2022.01.07 |
기억 장치란 무엇일까? (0) | 2022.01.07 |
제어 장치에 대해 알아보자 (0) | 2022.01.06 |