zircon的兩種排程理解

2021-09-25 01:22:25 字數 645 閱讀 8340

zircon 實現兩種排程機制,一種就是fair 其實現在fair_scheduler.cpp中,一種是基於時間片的其實現在sched.cpp 中,排程器的入口都在sche_reschedule()這個函式中。

例如fair的實現如下:

void sched_reschedule()

fair的實現是乙個cpp的類。

另一中sche_reschedule()的實現在sched.cpp 中,我們簡單看下

void sched_reschedule() else

}sched_resched_internal();

}void sched_resched_internal()

newthread->last_started_running = now;

#切換mmu

// see if we need to swap mmu context

if (newthread->aspace != oldthread->aspace)

#程序切換

// do the low level context switch

final_context_switch(oldthread, newthread);

}

兩種堆疊的理解

堆 堆是一顆完全二叉樹,優先佇列,根節點的值大於 小於 子節點。堆是一種經過排序的樹形資料結構,每個結點都有一值。通常我們所說的堆的資料結構,是指二叉堆。堆的特點是根結點的值最小 或最大 且根結點的兩個子樹也是乙個堆。由於堆的這個特性,常用來實現優先佇列,堆的訪問是隨意,這就如同我們在圖書館的書架上...

at和crontab兩種工作排程

at 和 cron是兩種工作排程 1 例行性 每隔一定的週期執行任務 2 突發性 這次任務完成後,就沒有的那一種 at 是可以處理僅執行一次就結束排程的命令。at這個命令來生成所要執行的工作,並將這個工作以文字的方式寫入 var spool at目錄裡 at 使用下來的檔案來對at進行使用限制 at...

EM演算法的兩種理解角度

最近在學習機器學習這門課,目前學到了em演算法的部分。在網上看到了一些人比較好的理解。在此記錄下來 em演算法即 期望極大演算法 學過機器學習的朋友都知道em演算法分兩步 e步求期望,m步求極大。但是期望是求誰的期望,極大是求誰的極大呢?這裡面其實有兩種解讀角度。通俗角度的話,求極大肯定是求似然函式...