가상화 된 메모리의 특정 패턴을 관찰하고 변경하는 과정이 포함되어 있다고 생각합니다. 그러나 정확히 어떻게 작동하는지 궁금합니다. 아마도 새로운 종류의 바이오스 호출일까요? (RTC에서 시간을 쿼리하는 OS와 비슷합니다.) 호스트와 클라이언트 간의 임의의 데이터 통신을 위해 직접 연결할 수 있는지 궁금 해서요.
가상화 된 메모리의 특정 패턴을 관찰하고 변경하는 과정이 포함되어 있다고 생각합니다. 그러나 정확히 어떻게 작동하는지 궁금합니다. 아마도 새로운 종류의 바이오스 호출일까요? (RTC에서 시간을 쿼리하는 OS와 비슷합니다.) 호스트와 클라이언트 간의 임의의 데이터 통신을 위해 직접 연결할 수 있는지 궁금 해서요.
답변:
먼저 VirtualBox는 호스트 OS에 설치된 프로그램이므로 실행 파일과 라이브러리 및 기타 리소스를 제공합니다. 이 라이브러리 중 상당수는 호스트 OS 기능 및 서비스를 호출하여 작업을 수행합니다.
Virtualbox는 드라이버를 OS 커널에 설치합니다. 이 드라이버는 커널이 VirtualBox의 가상 하드웨어 계층에 하드웨어 인터페이스를 제공하는 방법을 정의합니다.
가상 하드웨어 계층은 호스트 OS와 게스트 사이에 위치합니다. 호스트에게는 단지 다른 프로그램이지만 손님에게는 실제 하드웨어처럼 보입니다.
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는 그와 거의 관련이 없습니다.