목차
- 가상 기억 장치 정의
- 가상 기억 장치 구현 기법
- 주소 사상(mapping) 기법 - 실기억장치와 가상기억장치를 매핑 시켜주는거 프로그램이 주기억장치에 올라와야 실행이 되는데, 주기억장치에서 삽입 삭제 같은 액션을 했었을 때 나중에 원래 있었던 보조기억장치와 매핑을 시켜주는 것에 대한것
- 하드웨어와 소프트웨어의 요소
< 가상 기억 장치>
정의:
사용자프로그램을 분할하여 필요한 블록들만 비연속적으로 주기억장치에 적재시키는 개념
(저번시간에 단편화에 대해 살펴봄 처리하는 데에 있으면 공간이 사이즈가 되지않으면 아예 들어가지 못하는 내부 단편화와 내가 사용하고 남아서 있는 공간 외부단편화 )
(마찬가지로 여기서는 사용자 프로그램을 내가 사용하고자 하는 영역이 있을텐데 그정도 크기를 다 할당 못받았을 때도 쓸 수 있게하기위해 비연속적으로 주기억장치에 적재시키는 가상기억장치가 있는거)
목적:
프로그램에서 사용할 수 있는 기억공간을 주기억장치의 크기제약을 받지 않기 위함
(주기억 장치는 제한적. 하지만 상대적으로 보조기억장치는 공간이 제약을 받지 않을정도로 큼)
이렇게 하는 이유:
1. 바인딩 시간을 늦추어서 프로그램의 재배치를 용이하게 하기 위하여 사용
( 다중프로그램: 처음 운영체제 나왔을 때는 베어머신이라고 해서
하나의 기계에 하나의 프로그램만 올렸음 그래서 인터럽트처리부터 서비스까지 매우 제한적이었음 그래서 하나의 머신에 여러 프로그램을 올릴 수 있는 다중프로그램 개념이 나옴 )
( 그러다 보니까 a라는 프로그램이 어디서부터 어디까지 할당되어있는지 알아야함 . 그래서 그런 메모리 관리를 결정해주는 전략이 필요 이러면서 프로그램의 재배치라는 용어가 나왔었음)
(여기서도 마찬가지. 가상기억장치에 있어서도 보조기억장치에 있는것을 주기억장치에 올릴 때도 (바인딩(?))프로그램의 재배치가 필요)
2. 오버레이 문제를 해결하기 위해 사용
(보조기억장치에 있는 것 주기억장치에 올리면서 계속 사용하는(오버레이) 에 발생하는 문제점들을 해결할 수 있음
<가상 기억장치 구현 기법>
- 페이징 시스템
- 세그멘테이션 시스템
- 혼합 시스템 (페이징 세그멘테이션 시스템)
<관련 용어>
가상 주소(논리 주소)
: 현재 진행중인 프로세스가 참조하는 주소
: 컴퓨터에 실제로 존재하지 않지만 프로그램 상에서 존재하는 것으로 보고 사용하는 주소 (실주소가 아님)
: 즉 사용자(사용자 프로세스)가 가지고 있는 주소공간
가상 주소 공간
: 가상 기억 장치 시스템에서 가상주소 지정이 가능한 영역
: 주기억 장치에서 가상주소의 영역을 해당 프로세스의 가상주소공간이라고도 함
실제 주소(물리 주소)
: 주 기억장치 내에서 실제로 사용 가능한 주소(실제 기억장치 주소)
(가상 주소와는 대응되는 개념)
실제 주소 공간 (R 로 표현을 함 ) - 재배치 문제에서 나옴 참고
: 컴퓨터 시스템에서 사용 가능한 실제주소 영역의 범위
: 컴퓨터 시스템 실주소 영역
동적 주소 변환
: 현재 실행중인 프로세스가 참조하는 가상주소를 주기억장치의 실제 주소로 바꾸어 주는 기법
사상 (Mapping)
어떤 가상주소에 대한 주기억 장치내의 존재여부 및 어디에 위치하는가를 나타내는 대응 관계를 뜻함
(Mapping Table)로 관리
인위적 연속성(Artificial Continuity)
: 가상주소 / 공간 상의 연속적인 주소가 실기억 장치에서도 연속적일 필요가 없다는 성질
<주소 사상 (mapping) 기법>
정의: 프로그램의 상대 주소를 주기억장치에 넘겨주고, 실행되기 이전에 실제주소로 변환 재배치하는 기법
필요성: 언제 어느 블록이 주기억장치에 적재될지를 알 수 없으며, 어느 블록이 주기억장치의 어느 장소에 적재될지 알 수 없으며, (언제 누가 주기억장치에 적재될지 알 수 없음)
이 모든 과정이 실행 중에 동적으로 이루어지므로 이러한 상황을 위한 주소 사상 기법이 필요
장점
1. 프로그래머에게 기억장치의 한계를 염려하지 않아도 되게 함
2. 프로그램 실행에 필요한 부분만 주기억장치에 적재되므로 기억장치를 효율적으로 사용 가능
3. 다중 프로그래밍에서 동시에 적재할 수 있는 작업의 수에 제한 없음
4. 외부 단편화(기억장치가 있더라도 사용못하는거(?)) 를 제거하고, 내부단편화(나머지 부분 사용못하는거(?))를 최소화 시킴
5. 프로그램 코드와 데이터의 자연스러운 공유를 지원
6. 프로그램 세그먼트로 동적 연결을 허용
단점
1. 구현의 어려움
2. 만약 잘못하면 실질적으로 성능이 저하될 가능성 존재 (왜? 쪼개져있고 매핑테이블을 거쳐야 하기 떄문에 시간이 더 걸릴수도)
3. H/W의 경비가 증가
4. 페이지 인터럽트를 처리하는 오버헤드의 증가
5. 스래싱을 방지하는 S/W의 복잡도가 증가
( 스래싱 : cpu가 해야될 일을 하는게 아니라 과부하에 대해 처리하느라 시간을 뺏기는 현상)
<하드웨어 및 소프트웨어 요소>
H/W구성요소
(1) 주소 사상 장치에 필요한 모듈들
- 캐쉬 기억장치 : 임시적으로 데이터의 내용을 기억하여 빠른 접근을 가능케 하는 기억장치
- 연관 기억장치: 기억된 내용의 일부를 이용하여 원하는 정보가 기억된 위치를 찾아내 접근하는 기억장치
- H/W모듈
(2) 비트 벡터
- 참조 비트 벡터 : 해당 페이지 프레임의 내용이 최근 참조되었는지에 대한 정보를 기록하는 것
(최근에 참조되었던게 또 참조될 가능성이 크니까 이렇게 하면 빠름)
- 갱신 비트 벡터 : 해당 페이지 프레임의 내용이 갱신되었는지에 대한 정보를 기록하는 것
S/W 구성요소
(1) 호출(반입) 기법. (언제!!)
: 보조기억장치에 일정한 크기에 페이지 단위로 저장된 데이터를 언제 주기억장치에 적재시킬 것인가를 결정하는 기법
① 요구 호출 기법
: 프로세스가 실제로 참조한 페이지만 M/M(메인메모리) 의 페이지 프레임에 적재하는 것
② 예측 호출 기법
: 특정 페이지가 곧 참조될 가능성이 높다고 판단되면 실제로 참조되기 전이라도 M/M에 적재시키는 것
(2) 배치 기법. (어디에!!)
: 주기억장치상에 어떤 페이지를 적재시키고자 할 때 실제로 M/M의 어느 장소에 적재할 것인가를 결정하는 기법
(3) 교체 기법
: M/M에 어떠한 페이지를 적재시켜야 할 때 빈 공간이 없어서 기존에 M/M에 있던 페이지들 중 하나를 교체하여 적재시켜야 하는 경우 어떠한 페이지를 교체시킬 것인가에 대한 기법
(4) 할당 기법
: 시스템 내에 존재하는 각 프로세스들에게 M/M의 양을 얼마나 할당해줄 것인가를 결정하는 기법
(5) 소거 기법
: M/M에 적재된 페이지가 그 내용이 변경되어 교체 대상 페이지가 되었을 때 언제 디스크로 보내어 저장할 것인가를
결장하는 기법
① 요구 소거 기법
: M/M에 적재된 후 그 내용이 변경되고 교체대상이 되었을 경우 디스크에 기입하는 기법
② 예측 소거 기법
: M/M에서 변경된 페이지가 교체대상이 되기 전이라도 디스크에 저장될 수 있도록 하는 기법
(6) 부하 조정 기법
: 시스템 자원을 최대로 활용하기 위한 기법
( 스래싱 : cpu가 해야될 일을 하는게 아니라 과부하에 대해 처리하느라 시간을 뺏기는 현상)