1. Xen Interface Manual
1.1 Virtual Architecture
o CPU state
모든 privileged state 는 Xen에 의해서 처리된다. 따라서 Guest OS는 CR3[1] 나 EFLAGS 에 대한 direct access가 제한된다. 이를 해결하기 위해선 Guest OS는 Hypercall을 통해서 필요한 작업들을 수행할 수 있다.
ToDO: CPU ring 값과 의미
o Exception
Guest OS는 Exception(Trap)을 처리하기 위해서 virtual IDT[2]를 가지고 있다.
Domain는 자신의 Trap handler table을 set_trap_table Hypercall을 이용해서 Hypervisor에게 전달한다.
o Interrupts and Events
Interrupt는 event channel을 통해서 Domain으로 전달된다. Interrupt는 set_callbacks Hypercall을 통해서 target Domain으로 asynchronous하게 전달된다. Guest OS는 전달받은 interrupt는 일반적인 interrupt 처리 루틴을 따라서 처리한다. 하드웨어 발생한 Interrupt는 Xen(Hypervisor)에서 받아서 target domain으로 전달하는 책임을 진다.
o Time
Guest OS는 real time과 virtual time에 대해서 인지하여야 한다. 추가적으로 Xen은 scheduling을 위한 time 도 필요하다.
종류 |
설명 |
Cycle counter time |
Fine-grained time reference를 제공 |
System time |
64bit counter로 시스템이 부팅후 지난 nano seconds 를 제공 |
Wall clock time |
Struct timeval 에 해당 (1970.1.1 ~) Dom0의 ntp client가 정확한 값을 가지고 있음 |
Domain virtual time |
System time과 동일하게 증가하나, domain이 살아 있을 때만 동작 |
Xen 은 system time, wall clock time을 shared page 를 통해서 Guest OS에 노출시킨다.
또는 cycle counter time과 CPU frequency (Hz) 도 제공함
Xen은 매 10ms 마다 domain에 time event를 보낸다. (정확한 이해는 안됨)
Xen scheduler 역시 domain이 scheduling 이 되어야 할 때 time event를 전달함
ToDO: Linux time에 대한 이해를 좀더 하자
o Xen CPU Scheduling
Xen은 CPU scheduler에 대해서 uniform API를 제공한다. 따라서 새로운 CPU scheduler를 만들기 쉽고, 현재 credit, SEDF라는 스케줄러를 제공한다.
VCPU는 SMP 머신에서 성능 향상을 위해서 여러 개의 Physical CPU 사이를 넘나들 수 있다. 또한 Pinning을 통해서 특정 Physical CPU만을 사용할 수 있도록 할 수도 있다.
o Privileged operations
Xen은 Privileged domain인 Dom0에게 자신의 interface를 제공한다. 따러서 dom0는 domain을 build하거나 scheduling, memory, networking, block device 등을 제어할 수 있게 된다.