I/O requests issued by the guest are routed to the VMkernel via the virtual machine monitor (VMM). Once the requests reach the VMkernel, they execute asynchronously. This has always been the case in ESX. The execution model in ESX 4.0 further improves I/O concurrency and allows vCPUs in the guest to execute other tasks immediately after initiating an I/O request.
This improved I/O concurrency model is designed around two ring structures per adapter which are shared by the virtual machine monitor (VMM) and the VMkernel. I/O requests from the guest are sent to the VMM where they are placed in the request ring. The VMkernel periodically initiates all new entries it finds there. The processing of the entries in the request ring is done asynchronously from the perspective of the guest.
I/O completions to the VMM are posted in the shared completion rings and an interrupt is generated for the guest operating system. By using this mechanism instead of requiring the guest to poll, these interrupts can be coalesced for delivery, which further optimizes I/O processing.