Keyboard shortcuts

/ or ⌘/Ctrl K
Find a note
j / k
Next / previous section or linked note
h / l
Collapse or go to parent / expand or enter
e or Alt-click
Read a linked note here
o
Open focused note on its own
g g / G
First / last section or linked note
g h / g a
Home / all notes
g b / g t
Backlinks / table of contents
t
Cycle System, Light, Dark
? / Esc
Show / close this reference

Search: ↑/↓ or Ctrl N/P, Enter to open. Shortcuts pause while typing.

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