2010-06-26 3 views
5

리눅스에서 virtio 메커니즘을 이해하려고합니다. 나는 킥 기능이 호스트 측에 새로 게시 된 버퍼에 대해 알릴 것이라고 읽었습니다. 특히 virtio_net을보고 있습니다. 패킷이 전송 준비가되면 kick 기능은 here입니다. 여기에서 나는 전화를 추적했고 나는 그것이 this에가는 것이라고 생각한다. 여기에서 어디로 간다? 어떤 코드에 virtio의 백엔드 드라이버가 포함되어 있습니까? 이 킥이 갈 하이퍼 바이저의 코드는 어디에 있습니까? 발라kvm에서 hypercall 항목은 어디에 있습니까?

답변

3

IO 포트가 VM을 지원하는 QEMU 인스턴스에 의해 구현되는 가상 머신의 "하드웨어"통신하고 여기에 액세스 ...

감사합니다, 감사합니다. QEMU 코드에서 시작할 위치는 virtio_ioport_write() in hw/virtio-pci.c입니다.

+0

대단히 감사합니다. 한 가지 더 묻습니다. qemu 인스턴스가 guestOS의 사용자 공간 또는 HostOS의 사용자 공간에서 실행되고 있습니까? – bala1486

+1

호스트 OS의 사용자 공간입니다. 원래 [kvm paper] (http://www.kernel.org/doc/ols/2007/ols2007v1-pages-225-230.pdf)를 읽었습니까? QEMU는 섹션 3.1 및 5.1에서 설명한대로 I/O 가상화를 제공하는 사용자 공간 코드입니다. 게스트 OS는 실행할 특별한 것이 필요하지 않습니다. virtio (게스트가 가상화되어 있고 특별한 지원을 사용한다는 지식이있는 경우)와 같은 메커니즘을 사용하면 훨씬 높은 I/O 성능을 얻을 수 있습니다. (이것은 논문의 8.2 절에서 간략히 설명 된 것처럼 "반 가상화"입니다.) –

관련 문제