virtio에서 게스트가 호스트에 알리려고 할 때 장치 io 주소에 씁니다.이 주소로 인해 vm-exit가 발생하고 하이퍼 바이저가 캡처합니다. 쓰기 작업은 eventfd 구조체로 신호를 보내고, sleep 대기중인 vhost_worker 스레드를 활성화하여 virtqueue의 패킷을 처리합니다.virtio에서 게스트 알리미 및 호스트 알리미가 각각 ioeventfd 및 irqfd를 사용하는 이유는 무엇입니까?
호스트가 게스트에 알리려고하면 eventfd를 사용하여 인터럽트 주입을 트리거하고 VM 종료가 필요합니다.
제 질문은 :이 두 과정이 너무 복잡해야합니까? virtio 프론트 엔드와 백엔드 사이의 공유 메모리에 eventfd 구조체를 넣는 것이 어떻습니까? 그런 다음 게스트가 호스트에 알리려고하면 eventfd로 신호를 보냅니다. 그런 다음 vhost_worker 스레드가 활성화되어 vm-exit가 필요하지 않은 것처럼 보입니다. 게스트 알리미는 동일한 방식으로 수행 할 수 있습니다. 왜 우리는이 간단한 방법으로 알릴 수 없습니까?