R&D/Hypervisor

[Xen Interface Manual] 1.1 Virtual Architecture

sunshout 2013. 3. 29. 11:36

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 tableset_trap_table Hypercall을 이용해서 Hypervisor에게 전달한다.

 

o  Interrupts and Events

Interrupt event channel을 통해서 Domain으로 전달된다. Interruptset_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

XenCPU scheduler에 대해서 uniform API를 제공한다. 따라서 새로운 CPU scheduler를 만들기 쉽고, 현재 credit, SEDF라는 스케줄러를 제공한다.

VCPUSMP 머신에서 성능 향상을 위해서 여러 개의 Physical CPU 사이를 넘나들 수 있다. 또한 Pinning을 통해서 특정 Physical CPU만을 사용할 수 있도록 할 수도 있다.

 

o  Privileged operations

XenPrivileged domainDom0에게 자신의 interface를 제공한다. 따러서 dom0domainbuild하거나 scheduling, memory, networking, block device 등을 제어할 수 있게 된다.



[1] Control Register : http://en.wikipedia.org/wiki/Control_register

[2] Interrupt Description Table: http://en.wikipedia.org/wiki/Interrupt_descriptor_table