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步求極大。但是期望是求誰的期望,極大是求誰的極大呢?這裡面其實有兩種解讀角度。通俗角度的話,求極大肯定是求似然函式...