on
5.6 가상 머신
5.6 가상 머신
728x90
가상머신이란
가상머신(VM: Virtual Machine) 은 1960년대 중반에 처음으로 개발되었으며, 현재까지 메인프레임 컴퓨터의 중요한 부분으로 받아들여지고 있다. 이유는 다음과 같다.
현대 시스템에서의 독립성과 보안성에 관한 중요도 증가
표준 운영체제에서의 보안성과 신뢰성의 실패
관련 없는 많은 사용자들이 하나의 컴퓨터를 공유함. 특히 클라우드 컴퓨팅 분야.
지난 수 세기 동안 VM의 오버헤드를 감당할 수 있을 만큼의 프로세서 속도의 획기적인 발전.
가장 넓은 개념으로서의 VM은 기본적으로 자바(Java) VM 같은 표준 소프트웨어 인터페이스를 제공하는 모든 emulation 방법들을 포함한다. 이번 내용에서는 명령어 집합 구조(ISA: Instruction Set Architecture)에서 완벽한 시스템 수준의 환경을 제공하는 VM에 대하여 다룬다. 이와 같은 VM은 운영체제 가상 머신(Operating System Viertual Machine)이라고 불리며, IBM VM/370, VirtualBox, VMware ESX Server, Xen 같은 것들이 있다.
VM을 지원하는 소프트웨어를 가상 머신 모니터(VMM: Virtual Machine Moniter)또는 하이퍼바이저(hypervisor)라고 부르며, 가상 머신 기술의 핵심이다. 기본이 되는 하드웨어 플랫폼을 호스트(host)라고 하고, 호스트의 자원은 손님(guest) VM들에 공유된다. VMM은 가상자원(virtual resource)을 어떻게 물리 자원(physical resource)으로 사상할 것인지를 결정한다. 물리 자원은 시분할(time-shared) 방식, 구역별(partitioned), 또는 소프트웨어적으로 에뮬레이트되어 사용될 것이다. VMM은 전통적인 OS보다 훨씬 작다.
VM은 상업적으로 중요한 두 가지 이점을 제공한다.
소프트웨어 관리: VM은 DOS와 같은 오래된 운영체제 뿐만 아니라, 완벽한 소프트웨어 스택도 동작시킬 수 있는 추상화(abstraction)를 제공한다. 한 예로는 과거에 사용되던 OS, 현재 안정적으로 사용되는 많은 OS, 몇몇 테스트를 위한 새로운 OS를 수행하는 VM이 될 것이다. 하드웨어 관리: 다수의 서버를 사용하는 하나의 이유는 각 응용 프로그램이 분리된 컴퓨터의 적합한 운영체제상에서 돌아가도록 하기 위해서이다. VM은 다양한 소프테웨어 스택이 하드웨어는 공유하면서 독립적으로 동작하는 것을 가능하게 한다. 또 다른 예로, VMM은 부하를 조절하거나 고장 난 하드웨어를 제외시키기 위해 동작하고 있는 VM을 다른 컴퓨터로 옮기는 것을 지원한다.
가상 머신 모니터(VMM)의 요구사항
가상 머신 모니터는 무슨 일은 하는데? guest 소프트웨어에게 소프트웨어 인터페이스를 제공하고, guest 소프트웨어의 상태를 다른 것들로부터 분리시켜야 하며, guest OS를 보함한 guest 소프트웨어로부터 자기 자신을 보호해야 한다. 따라서 가상 머신 모니터의 요구사항은 다음과 같다.
Guest 소프트웨어는 성능에 관련된 동작이나 여러 개의 VM과 공유하고 있는 고정된 자원의 한계를 제외하고는 마치 실제 하드웨어상에서 동작하는 것과 똑같이 VM 위에서 동작해야한다.
Guest 소프트웨어는 직접적으로 실제 시스템 자원 할당을 변경할 수 없다.
프로세서를 가상화하기 위하여 VMM은 guest VM과 guest OS가 일시적으로 사용하고 있더라도 특정 상태 접근, 주소 변환, I/O, 예외, 인터럽트와 같은 모든 것을 직접 제어하여야 한다. 이러한 역할을 수행하기 위해 VMM은 일반적으로 사용자 모드에서 실행되는 guest VM보다 높은 권한을 가져야 한다. 따라서 운영체제 가상 머신의 기본적인 요구사항은 다음과 같다.
최소한 두 개의 프로세서 모드, 시스템 모드와 사용자 모드.
사용자 모드에서 실행하면 트랩을 발생시키는 시스템 모드에서만 유용한 특권 명령어. 모든 시스템 자원은 오직 이 명령어들에 의해서만 제어되어야 한다.
가상 머신을 지원하는 명령어 집합 구조(의 부족)
VM은 ISA가 설계된 이후에 세상에 나왔다. 그렇기 때문에 대부분의 명령어 집합들은 가상화를 염두에 두지 않고 만들어져 있다.
VMM은 손님 시스템이 오직 가상 자원과 상호 작용하는 것만을 보장해야 하기 때문에, 기존의 손님 OS는 VMM 위에서 사용자 모드 프로그램으로 동작하게 된다. 만약 손님 OS가 특권 명령어를 이용하여 하드웨어 자원과 연관된 정보에 접근하거나 조작하려는 시도를 한다면 트랩이 발생한다. 이처럼 중요한 정보를 읽거나 쓰는 시도를 하려는 어떠한 명령어가 사용자 모드에서 실행될 때 트랩이 발생하면, VMM은 이를 가로채고 손님 OS가 요구하는대로 중요한 정보의 가성 버전을 지원할 수 있다.
728x90
from http://namoojoon.tistory.com/58 by ccl(A) rewrite - 2021-12-06 21:27:50