07_가상 머신(Virtual Machine)
가상 머신(Virtual Machine)의 기본적인 개념은 한 컴퓨터의 하드웨어(CPU, 메모리, 디스크 드라이브, 네트워크 등)가 다수의 실행 환경을 제공하도록 추상화 하는 것이다. 각 개별적인 실행 환경이 자신만의 독립된 컴퓨터를 사용하는 환경을 제공 하는 것이다.
가상 머신을 구성하는 가장 큰 이유는 모두 동일한 하드웨어를 공유하면서 다수의 실행 환경(운영체제)을 동시에 수행 할 수 있다는 것이다. 또한 여러 가지 시스템 자원에 대해 완전한 보호가 이루어지므로 각 가상 머신은 강한 수준의 보안을 제공 한다. 그러나 동시에 가상 머신들은 자원을 직접적으로 공유 할 수 없어 가상 디스크를 공유하거나 네트워크 등을 통하여 공유 할 수 있다.
가상 머신의 접근 방법에서 가장 어려운 부분이 디스크이다. 실제 디스크는 3장밖에 없는데 가상 머신이 7개가 운용되고 있다고 가정 하였을 때 가상 머신에 드라이브를 하나씩 제공할 수가 없다. 가상 머신 소프트웨어는 자체가 가상 메모리와 스풀링을 제공하기 위해 대량의 디스크 공간이 필요 하다. 이것에 대한 해결책이 크기만 다르고 나머지는 모든 면이 동일한 가상 디스크를 제공 하는 것이다. IBM에서는 이것은 미니디스크(MiniDisk)라 부른다.
시스템은 물리 디스크에서 미니 디스크가 필요로 하는 만큼의 트랙들을 할당함으로써 각 미니 디스크를 구현한다. 당연히 모든 미니 디스크 크기의 합은 물리적인 디스크 크기보다 작아야 한다.
가상 머신 소프트웨어는 운영체제이기 때문에 커널 모드에서 수행 될 수 있다. 가상 머신 자체는 사용자 모드에서만 수행 될 수 있다. 물리적인 기계가 두 개의 모드를 갖는 것과 마찬가지로 가상 머신도 두 개의 모드를 가져야 한다. 실제 머신에서 사용자 모드로부터 커널 모드로 변환을 일으키는 행위는 가상 머신에서도 가상 사용자 모드로부터 가상 커널 모드로의 변환을 일으켜야 한다.
이러한 변화는 다음과 예제로 설명 할 수 있다. 가상 머신 상에서 가상 사용자 모드에서 수행중인 프로그램이 시스템 호출을 하면 이는 실제 기계 내의 가상 머신 모니터로 전달되게 된다. 가상 머신 모니터가 제어를 얻으면 시스템 호출의 효고를 흉내내기 위해 가상 머신의 레지스터의 내용와 프로그램 카운터를 변경할 수 있다. 그런 다음 가상 머신 모니터는 현재 가상 커널 모드에 있다는 것을 유의하면서 가상 머신을 재시작 시킬 수 있다.
[VMWare Architecture]
[Xen Architecture]
[Hypervisor Architecture]
[Java Virtual machine]
[.NET Framework]
'SW Engineering > OS Concept' 카테고리의 다른 글
09_프로세스 개념 (0) | 2015.07.16 |
---|---|
08_시스템 부트 (0) | 2015.07.16 |
06_운영체제 구조 (0) | 2015.07.16 |
05_운영체제 구조_설계 및 구현 (0) | 2015.07.16 |
04_운영체제 구조_시스템 프로그램 (0) | 2015.07.16 |