完全基於中斷的統一程序排程系統

2021-08-26 20:10:44 字數 942 閱讀 8524

4.4bsd中將核心態下的程序根據其行為賦予了不同的優先順序,然而中斷可以打破程序的執行,並且中斷還可以發布一些所謂的軟中斷,以高於程序優先順序的優先順序來執行,這看起來不是很和諧。實際上,可以使用更加和諧的方式統一處理程序的執行,中斷處理以及軟中斷處理,那就是將所有的執行緒都統一為「中斷」的概念。如下圖所示:

如此一來,程序也可以被看作是一種中斷,它和真正的中斷(硬體中斷和軟中斷以及工作佇列)的區別在於它有乙個連續的執行緒上下文,也就是說程序的執行需要連續發布多個中斷來完成,乙個程序需要關聯到多個伴隨時間流逝的中斷,具體是哪一級別的中斷需要根據程序的優先順序來判斷。

在實現上,以單cpu為例,整個系統中儲存乙個位圖,點陣圖的每一位代表一種中斷優先順序,每一種優先順序的中斷都有乙個佇列,cpu按照中斷級別從高到低,同一級別的中斷先進先出的策略進行排程,中斷分為「程序中斷」和「真實中斷」,其中程序中斷由於是乙個連續的執行緒,因此按照根據其優先順序計算得到的時間片來執行,而真實中斷則要求其一直執行到它自己自動放棄cpu為止。

時鐘中斷以及所有硬體中斷,由於其優先順序比程序中斷高很多,因此總是能中斷程序的執行,在時鐘中斷處理中給系統計算程序時間片的機會。一旦高優先順序中斷處理完畢(自動放棄或者時間片到期),cpu在中斷返回的過程中按照上述的類似linux 2.6 o(1)排程器的演算法分配給被選中的執行緒,核心對於程序執行緒會維護上下文資訊,而對於真正的中斷執行緒則不會維護上下文資訊。

中斷的入口因此有兩個,乙個就是硬體中斷發生時,另乙個就是schedule排程時,不管怎樣,核心保證當前總是最高優先順序的執行緒在執行。這種統一的排程器思想在現實的作業系統中已經被廣泛的應用了,比如bsd(中斷優先順序,睡眠優先順序),solaris(中斷優先順序),windows nt(中斷請求級)等系統核心基本的排程思想都與此類似。linux的排程實現比較鬆散一些,然而不管怎樣,它可用且高效。

完全基於中斷的統一程序排程系統

4.4bsd中將核心態下的程序根據其行為賦予了不同的優先順序,然而中斷可以打破程序的執行,並且中斷還可以發布一些所謂的軟中斷,以高於程序優先順序的優先順序來執行,這看起來不是很和諧。實際上,可以使用更加和諧的方式統一處理程序的執行,中斷處理以及軟中斷處理,那就是將所有的執行緒都統一為 中斷 的概念。...

作業系統一 程序

下列所有例子均只是用來具體化的比喻,這些例子均是簡化,並不一定符合實際,只能用來作為理解理論的參考 上述比喻中的task便可以謂之程式,比如乙個qq應用程式,其中的action便是所謂的程序,比如qq中載入好友列表,載入訊息,提醒等等,而這個人,或者這個人的大腦,就是所謂的cpu,負責排程這些act...

基於JSP SERVLET的新聞發布系統 一

本系統使用的是基於jsp servlet tomcat6 資料庫使用的是mysql 1,第乙個模組是登陸處理。關鍵 如下 該句 用於反饋後台的校驗資訊,如使用者名稱與密碼不匹配等。接受引數使用的是乙個小工具類 user user user copypropertyutil.copypropertie...