등장 배경
컴퓨터 시스템을 이용하여 어떠한 작업을 하기 위해서는 작업을 위한 프로그램과 필요한 데이터가 주기억장치에 저장되어야한다. 주기억장치의 용량은 크면 클수록 좋은데, 충분한 기억용량을 가진 주기억장치는 비싸기 떄문에 경제적이지 못하다는 커다란 단점이 존재하다. 이런 단점을 보완하기 위해 고안된 것이 가상기억장치이다.
가상기억장치
보조 기억장치와 같이 기억용량이 큰 기억장치를 마치 주기억장치처럼 사용하는 것
1. 가상기억장치의 목적
주기억장치의 기억용량이 부족한 점을 개선하기 위하여 비트당 가격과 기억용량이 보조기억장치와 같으며, 속도가 주기억장치와 같은 기억장치를 제공받는 것이다.
2. 가상기억장치 개념도
중앙처리장치가 접근하려는 정보가 보조기억장치에 저장되어 있더라도 주기억장치에 대한 접근을 통하여 그 정보를 얻을 수 있는데, 원하는 정보를 얻기 위해서는 그 정보를 보조기억장치에서 주기억장치로 미리 예측하여 옮겨놓아야 한다. 이는 기억장치 접근의 지역성에 근거하고 있다.
* 접근의 지역성
시간 지역성: 최근에 참조된 주소의 내용은 곧 다음에도 참조되는 특성을 말한다.
공간 지역성: 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성을 말한다.
3. 가상기억장치의 동작 원리
가상주소: 중앙처리장치에 의해 수행되는 프로그램의 명령어가 사용하는 주소
실제주소(물리주소): 주기억장치에 접근하기 위하여 실제로 주기억장치에 적용하는 주소
실행할 프로그램을 몇 개의 블록으로 나누고, 실제 주기억장치에는 현재 실행되는 프로그램에 필요한 블록만 기억시키고, 나머지 부분은 보조기억장치에 그대로 두었다가 필요시에 주기억장치에 올라간다. 만약 주기억장치에 저장되어 있는 프로그램 블록 중에 필요 없는 블록이 있다면, 다시 보조기억장치로 옮겨진다. 이러한 일련의 작업이 계속 반복되어 진행된다.
4. 주소변환표
가상주소공간을 블록으로 나누어 놓고 주기억장치와 보조기억장치 사이의 정보 이동은 블록 단위로 이루어지는데, 이때 어떤 블록을 주기억장치로 옮길 것인지 결정하는 표
*블록 단위의 기본 개념
페이지: 가상주소공간과 주기억장치의 기억공간이 일정한 크기를 갖는 연속된 공간으로 구분된 것
세그먼트: 크기가 일정하지 않는 연속된 기억공간으로 구분된 것
5. 주소 변환 방법
가. 페이징 기법
가상기억공간의 프로그램 블록과 실제 기억공간의 프로그램 블록의 크기가 같고, 각 블록의 크기도 모두 동일하게 나눌 때 이 블록을 페이지라 하며 이러한 페이지를 이용하는 방식
1) 페이징 기법의 매핑원리
* 중앙처리장치에서 참조하는 가상주소가 13비트라고 가정하겠습니다. 앞의 3비트는 페이지번호, 나머지 10비틑 상대위치를 의미합니다.
* 매핑테이블 첫 번째 영역은 페이지 번호, 두 번째 영역은 주기억장치의 페이지 번호, 세번 째 영역은 저장되어 있는 페이지 위치(주기억장치에 저장되어 있을 때는 1, 보조기억장치에 저장되어 있을때는 0으로 작성)
(1) CPU에서 필요한 데이터 가상주소의 페이지 번호가 101이므로 가상 기억공간내에 존재하는 매핑 테이블에서 같은 페이지 번호를 찾는다.
(2) 매핑 테이블의 세 번째 영역의 값이 1이므로 101번 페이지는 주기억장치에 저장되어 있다는 것을 알 수있다.
(3) 주기억장치 페이지 번호와 01번과 페이지에서의 상대적인 위치인 가상 주소 값 010101001은 중앙처리장치의 MAR에 전송이 된다.
(4) 주기억장치에 읽기 제어 신호를 보냄으로써 주소가 지정하는 워드의 내용이 MBR에 저장되어 중앙처리장치에 의해 사용된다.
2) 페이징 기법의 유의할 점
가상 주소를 실제주소로 변환했을 때 필요한 페이지가 주기억장치에 없다면 보조기억장치에서 필요한 페이지를 가져온 후 주기억장치에 저장된 페이지 중의 하나와 교체를 해야하는데, 이렇게 필요한 페이지를 주기억장치 내에서 찾지 못하는 경우를 페이지 폴트라고 한다.
페이지 폴트가 자주 일어날수록 페이지를 교체하는 데 시간이 오래 걸려 시스테 효율이 떨어지는 단점이 있다.
3) 페이징 기법의 단점
페이징 기법은 일정한 크기로 페이지를 나누기 때문에 프로그램을 논리적으로 구분하여 나누기가 매우 힘들다. 페이지의 크기를 크게 하면 단편화 현상이 나타나고, 페이지를 작게하면 페이지 교체가 너무 빈번하게 일어나 시스템 효율이 떨어진다.
나. 세그먼트 기법
페이징 기법의 문제점을 해결하기 위해 나온 기법으로써, 프로그램의 논리적인 구조에 따라 페이지의 크기를 다양하게 나누는 기법
1) 세그먼트 기법의 매핑 원리
* 세그먼트 기법에서는 가상주소를 논리주소라고도 한다.
* 세그먼트 번호 필드는 세그먼트 번호를 지정하고, 페이지 번호 필드는 세그먼트 내의 페이지 번호를 지정, 그리고 상대위피 필드는 해당 페이지 내의 주소를 지정한다.
(1) 논리주소로부터 물리주소로의 매핑은 논리주소의 세그먼트 번호를 이용하여 세그먼트 테이블의 값과 페이지 번호를 더하여 페이지 테이블의 시작주소를 얻는 것부터 시작한다.
(2) 페이지 테이블 첫 번째 영역에는 페이지 테이블의 시작주소가 저장되어 있고, 두 번째 영역에는 주기억장치의 페이지 번호가 저장되어 있다.
(3) 페이지 테이블의 시작주소를 이용하여 주기억장치의 페이지 번호를 얻고, 논리주소의 상대위치를 결합하면 주기억장치의 접근할 수 있는 물리주소를 얻을 수 있다.
2) 세그먼트 기법의 단점
페이징 기법에서는 하나의 맵핑 테이블로 운영이 되었지만, 세그먼트 기법에서는 두개의 테이블로 운영이 되다보니 메모리 소모가 커지게 되어 성능이 저하 될 가능성이 존재한다. 또한 맵핑 과정 자체가 복잡하다는 단점을 가지고 있다.
<참고자료>
https://www.youtube.com/watch?v=EdTtGv9w2sA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
<Computer structures> chapter 14, 기억장치 end>
'CS(Computer science) > 컴퓨터 구조&운영체제' 카테고리의 다른 글
프로세스 동기화 및 상호배제 (0) | 2020.02.02 |
---|---|
입출력시스템 (0) | 2020.01.22 |
기억장치 (0) | 2020.01.14 |
폰 노이만 구조 vs 하버드 구조 (0) | 2020.01.11 |
인터럽트 (0) | 2020.01.06 |