1. A computer implemented method for providing virtual machine services, the method comprising: providing a user virtual machine (VM) having access to a number of virtual resources; providing a number of service VMs having a number of service modules as a number of codepacks that communicate directly with each other to provide a number of services to the user VM; and isolating the user VM from the number of service VMs through an introspection library included in at least one of the codepacks that provides access to the user VM and the number of service VMs; obtaining, via at least one of the number of service VMs and through the introspection library, information indicating low-level context free VM state and high-level operating system semantics corresponding to a specific operating system running in the user VM from a virtual CPU register; based on the operating system semantics corresponding to the specific operating system running in the user VM, providing a selected interface through which the at least one of the number of service VMs can access virtual resources associated with the operating system, wherein the number of service modules communicate directly with each other via a number of messages over a communication channel to which each of the service VMs are connected, and wherein the user VM is not connected to the communication channel.