
가상화된 메모리에서 특정 패턴을 관찰하고 변경하는 과정이 포함된다고 생각하는데, 정확히 어떻게 작동하는지 궁금합니다. 아마도 일종의 새로운 바이오스 호출일까요? (RTC에서 시간을 쿼리하는 OS와 유사합니다.) 호스트와 클라이언트 간의 임의의 데이터 통신을 위해 직접 연결할 수 있는지 궁금하기 때문에 관심이 있습니다.
답변1
먼저 Virtualbox는 호스트 OS에 설치된 프로그램이므로 실행 파일, 라이브러리 및 기타 리소스를 제공한다는 점을 이해하세요. 이러한 라이브러리 중 다수는 작업을 수행하기 위해 호스트 OS 기능 및 서비스를 호출합니다.
Virtualbox는 또한 OS 커널에 드라이버를 설치합니다. 이러한 드라이버는 커널이 Virtualbox의 가상 하드웨어 계층에 하드웨어 인터페이스를 제공하는 방법을 정의합니다.
가상 하드웨어 계층은 호스트 OS와 게스트 사이에 위치합니다. 호스트에게는 또 다른 프로그램일 뿐이지만 게스트에게는 실제 하드웨어처럼 보입니다.
프로그램으로서의 Virtualbox는 게스트가 실행되는 동안 실행되지만 두 가지가 완전히 다른 작업을 수행한다는 점을 이해하는 것이 중요합니다. Virtualbox는 호스트와 협력하여 게스트에게 가짜 컴퓨터를 제공하는 반면, 게스트는 가짜 하드웨어에서 OS로 실행됩니다.
OS 드라이버는 일반적으로 게스트에게 적합하지 않거나 기능이 극히 제한되어 있습니다. 게스트는 VM이라는 사실을 모르고 호스트에게 질문을 할 수 없습니다. 이것이 바로 게스트 도구가 필요한 이유입니다.
게스트 도구는 가상화된 하드웨어에 적합한 시스템 드라이버로 시스템 드라이버를 업그레이드하고 가짜 하드웨어와 통신하여 "내 최대 해상도는 얼마입니까?"와 같은 질문을 합니다. VBox는 차례로 OS에 요청하고 게스트에게 다시 보고합니다.
게스트 도구는 VBox와 통신할 수 있는 소프트웨어를 게스트에 설치하여 공유 폴더 매핑과 같은 다른 기능도 활성화합니다. 그런 다음 VBox는 명명된 파이프나 ole(Windows) 또는 네트워크 IPC(Linux)와 같은 OS 기술을 사용하여 자체와 호스트 OS 간에 데이터를 주고받습니다.
여기서 중요한 점은 게스트는 VM을 모르고 호스트는 실행 중인 VM을 모른다는 것입니다. Vbox는 둘 사이에 위치하여 모든 통신을 중개합니다. 물리적 BIOS에 특별한 의존도는 없습니다.
BIOS를 생각하게 만드는 것은 가상화 확장입니다. VT는 CPU 명령어 세트이며 BIOS와 관련이 없다는 점을 이해하시기 바랍니다. VBox는 가상 작업과 관련된 최적화된 명령을 실행할 수 있도록 VT 명령 호출(해당하는 경우)로 컴파일된 코드를 실행합니다. 다시 한번 말하지만, 호스트 OS는 그것과 거의 관련이 없습니다.