sectionXen [69f17142]
-
Why is it important to provide timers?
- Because OS's aren't used to being preempted! We want to provide the OS real timers so they can do actual things
- Timing estimates, for example from TCP
-
Hypervisors are meant to be tiny, has direct machine access
- Hypervisor control node actually runs as a VM
- IO rings, similar to io_uring
-
Changes made to make virtualization easier
- Guest OS runs at 1, which works nicely for CPU x86 priv rings
-
when the guest starts to run and gets scheduled, it communicates with the hypervisor to register a set of addresses
- When there's a syscall, jump to this part in the OS
-
GuestOSs have realtime and virtual time
- real time for congestion
- virtual time for when you get descheduled
- Hypercalls manages guests to the OS
-
Paging
- Virtualizing the MMU is very difficult, since the MMU is allowed to walk the page tables
-
Xen allows the guest to maintain its own page tables, but Xen checks all modifications to the page tables
- Software managed TLB or TLB with address space modifiers, but x86 doesn't have this
- everyone manages their own page tables
- minimized involvement for xen
- So Xen lives in the unused memory space
-
When guest operating systems creates tables, they create the table ds with address space, any memory that's required is part of that address space
- when they register the page table with xen, then it's read only
- Xen does recieves updates, it can batch em
- Guest runs at 1