The Global VM
Manager lives in ring-0. It's main function at the moment is to manage a list of all running VMs, keep a ring-0 only structure (GVM
) for each of them, and assign them unique identifiers (so GMM
can track page owners). The idea for the future is to add an idle priority kernel thread that can take care of tasks like page sharing.
The GVMM will create a ring-0 object for each VM when it's registered, this is both for session cleanup purposes and for having a point where it's possible to implement usage polices later (in SUPR0ObjRegister).