검색결과 리스트
글
<가상 메모리(Virtual Memory)>
운영체제는 주어진 메모리의 크기 아래서 프로그램을 작은 조각으로 나누어 그 중에 일부분만을 메모리에 적재하되, 그것도 적재가 가능한 곳으로 비연속적으로 넣어줌으로써, 사용자는 메모리에 대한 고민으로부터 벗어 날 수 있다. 사실은 제한적인 크기지만 엄청나게 큰 메모리가 있는 것처럼 여겨지기 때문에 가상 메모리라고 부른다.
모든 프로그램은 작은 조각들로 나눠지게 되는데, 조각들의 크기를 모두 같도록 하면 한 조각을 페이지라고 부르고, 서로 다르게 하면 조각들 각각을 세그먼트라고 부른다.
페이지 or 세그먼트는 메모리와 디스크 사이에서 한 번에 전송되는 단위가 되는데 이 단위를 블록이라 부른다.
실행중인 프로그램에서 참조하는 주소가 실제 메모리에 있는 주소와 달라서, 메모리상의 주소로 변환이 필요할 때 하는 것이 사상이다.
프로그램에서 CPU가 참조하는 주소를 가상주소라고 하며, Address Translation을 통해 실제로 참조되는 메모리상의 주소를 실주소 or 물리적 주소라 한다.
왜 주소를 이렇게 다르게 하는 이유는 뭘까?
1. 주소 지정이 컴파일 시 발생
프로그램이 실행될 때 참조하는 주소가 컴파일 될 때 지정된다는 것이다. 참조하는 주소가 실 주소이므로, 프로그램은 항상 메모리의 지정된 곳으로만 적재
2. 재배치 시
메모리에서의 위치를 적재될 때마다 바꿀 수 있어서 융통성과 함께 메모리의 효율적이 이용이 가능하지만, 프로그램이 전부가 통째로 연속적인 메모리에 적재 되어야 함을 전제를 가진다.
실행 시에 참조되는 주소는 프로그램 내에서 어느 정도의 위치에 있는지를 나타내는 상대주소일 것이며, 실 주소는 메모리에 적재될 때의 시작 주소 값(재배치 레지스터에 있음)에 상대주소 값을 더해주면 된다.
<주소 바인딩(Address binding)>
논리적 주소(logical address)를 실행되기 위해서는 물리적 주소로 사상하는 것
주소 바인딩 종류는 컴파일 시간(compile time) 바인딩, 적재 시간(load time) 바인딩(by Relocation), 실행 시간(execution time) 바인딩이 있다.
[논리적 주소와 물리적 주소]
중앙처리장치가 생성하는 주소를 논리적 주소라 하며, 기억장치가 취급하는 주소를 물리적 주소라 한다.
기억 장치 관리기(MMU : Memory Management Unit) : 재배치(relocation) 레지스터는 세그먼트의 시작주소를 가지고 있으며, 논리적 주소가 들어올 때마다 모든 주소에 재배치 레지스터가 가지고 있는 값을 더해서 물리적 주소를 만든다.
Copyrightⓒ2014 By 휴먼사이언스
'OS > Theory' 카테고리의 다른 글
TLB(Translation Lookaside Buffer) (2) | 2016.04.18 |
---|---|
페이징(Paging) (0) | 2016.04.17 |
메모리 관리 (0) | 2016.04.16 |
교착상태 해결방법 (0) | 2016.04.15 |
상호배제를 위한 하드웨어 기법들(인터럽트 금지, 하드웨어 명령어, 세마포어) (0) | 2016.04.15 |
RECENT COMMENT