1. A method for executing an application on a plurality of nodes, comprising: synchronizing a first clock of a first node of the plurality of nodes and a second clock of a second node of the plurality of nodes; configuring a first hypervisor on the first node to execute a first application domain and a first privileged domain, wherein configuring the first hypervisor comprises allocating a first number of cycles of the first clock to the first privileged domain, wherein the first privileged domain comprises a first operating system, and wherein the first application domain comprises a second operating system; configuring a second hypervisor on the second node to execute a second application domain and a second privileged domain, wherein configuring the second hypervisor comprising allocating the first number of cycles of the second clock to the second privileged domain, and wherein the first number of cycles of the second clock is a same number of cycles as the first number of cycles of the first clock; and executing the application in the first application domain and the second application domain, wherein executing the application in the first application domain comprises, for each asynchronous input and output (I/O) request from the application, issuing, by the second operating system, the asynchronous I/O request using a virtual device driver, wherein the virtual device driver sends the asynchronous I/O request to the first operating system in the first privileged domain via the first hypervisor, wherein the first application domain and the second application domain execute synchronously within a margin of error based on the same number of cycles being allocated to the first hypervisor and the second hypervisor, executing the first privileged domain and the second privileged domain, wherein executing the first privileged domain comprises, for each asynchronous I/O request from the application via the first hypervisor, issuing, by the first operating system in the privileged domain, the asynchronous I/O request using a physical device driver to obtain a result; and transmitting, by the first operating system in the privileged domain, the result to the first application domain via the first hypervisor, wherein the first privileged domain and the second privileged domain execute synchronously within the margin of error based on the same number of cycles being allocated to the first privileged domain and the second privileged domain.