2.1 KiB
2.1 KiB
VM Exit 은 KVM 에서 끝나기도 하고 QEMU userspace 까지 가기도 한다
Alternative text
Guest 에서 VM Exit 으로 KVM 에 닿은 뒤 커널 처리와 QEMU 처리 두 갈래로 갈라졌다가 VM Entry 로 다시 Guest 실행 재개에 모이는 흐름도.
Long description
왼쪽에서 오른쪽으로 읽는다. 왼쪽 끝에 Guest 가 있고 VM Exit 이 KVM 으로 제어권을 넘긴다. KVM 은 Exit Reason 을 확인해 두 갈래 중 하나를 고른다. 커널 안에서 처리할 수 있는 Exit 은 Kernel 쪽 KVM 커널 처리로 가고, userspace 처리가 필요한 Exit 만 KVM_RUN 이 반환되면서 Userspace 쪽 QEMU 로 간다. QEMU 는 필요한 장치 동작을 처리한 뒤 KVM_RUN 을 다시 호출한다. 두 갈래는 오른쪽 끝에서 다시 만나며 어느 쪽이든 VM Entry 를 지나 Guest 실행 재개로 돌아온다. 무엇이 Exit 을 부르는지와 Exit 이 잦을 때 무엇을 함께 보는지는 본문의 표와 문단이 맡는다.
Elements and evidence
- Guest (service): VM Exit 이 나기 직전까지 실행 중이던 Guest. Evidence: L498–L501.
- KVM (service): VM Exit 을 받아 Exit Reason 을 확인하고 갈래를 고르는 자리. Evidence: L495–L495, L502–L504.
- KVM 커널 처리 (service): 커널 안에서 끝낼 수 있는 Exit 을 처리하는 갈래. QEMU 까지 올라가지 않는다. Evidence: L508–L510, L531–L531.
- QEMU (service): userspace 처리가 필요한 Exit 에서만 개입하는 갈래. Evidence: L510–L516, L533–L533.
- Guest 실행 재개 (service): 두 갈래가 다시 만나는 자리. VM Exit 은 VM 종료가 아니라 여기로 돌아온다. Evidence: L521–L524, L529–L529.
Relationships
- Guest → KVM: VM Exit. Evidence: L495–L495, L498–L502.
- KVM → KVM 커널 처리: 커널 처리 가능. Evidence: L504–L510, L531–L531.
- KVM 커널 처리 → Guest 실행 재개: VM Entry. Evidence: L518–L524, L531–L531.
- KVM → QEMU: KVM_RUN return. Evidence: L508–L512, L533–L533.
- QEMU → Guest 실행 재개: VM Entry. Evidence: L514–L524, L533–L533.