VirtualBox Guest Additions와 같은 것이 호스트와 어떻게 통신합니까?


0

가상화 된 메모리의 특정 패턴을 관찰하고 변경하는 과정이 포함되어 있다고 생각합니다. 그러나 정확히 어떻게 작동하는지 궁금합니다. 아마도 새로운 종류의 바이오스 호출일까요? (RTC에서 시간을 쿼리하는 OS와 비슷합니다.) 호스트와 클라이언트 간의 임의의 데이터 통신을 위해 직접 연결할 수 있는지 궁금 해서요.


"아마도 새로운 종류의 바이오스 호출일까요?" - VirtualBox는 유형 2 하이퍼 바이저이며, 게스트 OS가 호스트 OS와 어떻게 통신하는지 잘 문서화되어 있습니다.
Ramhound

Type-2 하이퍼 바이저 비트에 대한 통찰력을 주셔서 정말로 VM이 실행되는 방법에 대한 자세한 내용을 알게되었습니다. 그러나 화면 지오메트리, 클립 보드, 끌어서 놓기 등과 같은 데이터가이 둘 사이에서 어떻게 전달되는지는 아직 설명하지 않습니다. 마우스와 키보드가 OS 레이어를 통해 전송 될 수 있다는 것을 이해하지만, 추가 데이터는 어떻게됩니까? 특히 호스트와 게스트 OS가 다르면 1 : 1로 OS 호출을 복제 할 수 없습니다.
TheWhoAreYouPerson

소프트웨어 계층이 있습니다. VirtualBox는 해당 계층과 통신합니다. 또한 가상화 확장이 지원되는 경우 하드웨어 자체와 통신 할 수 있습니다.
Ramhound

나는 내 질문에 대답하려고했다. 방법 게스트는 기술과 관련된 호스트와 의사 소통을 할 수 있습니다. 아마도, VBox / 다른 사람들은 여러 개의 레이어를 가지고있을 것입니다. (vbox가 게스트 VM 위의 Guest Addition, 손님, VMM이 제공 한 BIOS (화면 / 마우스 / 키보드 / IO 포트 인 OS와 통신하는 부분 일 것입니다 '포워더'), 운영 체제, 등 하드웨어 사용자 정의 BIOS를 통해 하드웨어 / 화면 / etc 통신하는 이해하지만, 사용자 지정 데이터가 전송됩니다? 일부 사용자 지정 '실제'(가상) 포트? 메모리 조작 등?
TheWhoAreYouPerson

"해당 사용자 지정 BIOS를 통해 하드웨어 / 화면 / etc를 통신하는 VMM을 이해합니다. 그러나 사용자 지정 데이터는 어디에 전송됩니까?"- 이것은 거짓입니다. 이는 x86 가상화 확장이 작동하는 방식이 아닙니다.
Ramhound

답변:


2

먼저 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는 그와 거의 관련이 없습니다.


(나는 i.imgur.com/Ary3JSW.png 내가 BIOS를 말했을 때, btw. 정확하지 않다는 것을 알았습니다. 혼란 스러울 때부터 BIOS가 보였으며 깜빡임) 약간 전에이 문제에 대해 조금 읽었을 때, VM을 실행하는 것과 관련하여 몇 가지 CPU 지침이 있어야한다는 것을 알았지 만 전혀 알지 못했습니다. 그들은 또한 데이터, 그냥 perms 처리했습니다. 내가 말할 수있는 한 Guest-Hypervisor 통신 프로세스는 기본적으로 데이터를 가져 오거나 설정하는 몇 가지 지침이며 instr을 사용하는 몇 가지 지침입니다 (위키 백과에서 시작). 간부를 옮기다. 문맥. 내가 틀렸다면 나를 바로 잡아주세요. :)
TheWhoAreYouPerson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.