Xen的idle domain到底在幹啥

2021-05-25 07:05:43 字數 877 閱讀 4324

xen的4.***之後,引入了tasklet的概念,以下以xen-4.10為具體例子,分析xen如何進入idle domain的:

raise_softirq(schedule_softirq)

schedule(void)

|                                     // 注意,如果next是idle domain的話,原來的sched timer是不被set的...壞了...

context_switch(prev, next);  // 這裡的next是idle domain

schedule_tail(next);

continue_idle_domain(next)

reset_stack_and_jump(idle_loop);

void idle_loop(void)

}tasklet不是新東西,這個概念在linux裡面很早就已經出現。

下面看看在xen4中,以credit scheduler為背景,看看tasklet的行為被如何定義 (tasklet.h, tasklet.c).

在credit scheduler中,tasklet被賦予最高的優先順序。只要有tasklet任務,其他的vcpu都不會被schedule。任務必須在domain中執行,而tasklet就寄生在idle domain中。當有tasklet出現時,實際上是通過臨時性的將idle domain的優先順序提到最高,然後使tasklet寄託於idle domain來執行。

void do_tasklet(void)

{... ...

spin_lock_irq(&tasklet_lock);

spin_unlock_irq(&tasklet_lock);

要關中斷的...汗...

Xen的idle domain到底在幹啥

xen的4.之後,引入了tasklet的概念,以下以xen 4.10為具體例子,分析xen如何進入idle domain的 raise softirq schedule softirq schedule void 注意,如果next是idle domain的話,原來的sched timer是不被se...

Xen的裝置驅動

半虛擬化guest os無論如何都需要修改才能執行,因此,虛擬化環境必須使用guest os系統現有驅動要求就不存在了,然而讓客戶作業系統開發人員編寫大量 同樣也不是乙個很好的設計方案,因此xen的方式是提供抽象裝置,抽象裝置實現了針對特定裝置類的高階介面,如xen提供了抽象的塊裝置,而不是提供sc...

Xen的記憶體空間

32位pae模式x86架構下,xen占用了最頂部的64mb的線性位址空間。分布如下 ioremap virt end 0 ioremap virt start ffc00000 directmap virt end ffc00000 directmap virt start ff000000 map...