操作系統調度器的種類

我們的公共號

wKioL1k6IFqw1x7aAACeGDQ6kF0966.jpg

烏龜運維 官網 wuguiyunwei.com


調度在計算機中是分配工作所需資源的方法。資源可以指虛擬的計算資源,如線程、進程或數據流;也可以指硬件資源,如處理器、網絡連接或擴展卡。

進行調度工作的程序叫做調度器。調度器通常的實現使得所有計算資源都處於忙碌狀態(在負載均衡中),允許多位用戶有效地同時共享系統資源,或達到指定的服務質量。調度是計算自身的基礎,同時也是編程語言計算模型固有的部分。調度器使得在單處理器上通過多任務處理,從而讓執行多個進程成爲可能。

調度器可能會針對不同的目標設計,例如:吞吐率最大化、響應時間最小化、最低延遲[1]、或最大化公平。在實踐中,這些目標通常是互相沖突的,因此,調度器會實現一個權衡利弊的折中方案,而側重點則可能是前文提到的任何一種,這取決於用戶的需求和目的。

在實時環境,例如工業上用於自動控制(如機器人)的嵌入式系統,調度器必須保證進程的調度不能超過最後期限 —— 這是保持系統穩定運行的關鍵因素。調度也可能是通過一個管理性的後端進行,而任務是通過網絡發配到若干遠程設備上的。

操作系統調度器的種類

調度器是操作系統的一個模塊,它能夠選擇將被系統處理的下一個任務,或執行的下一個進程。操作系統可能會提供三種不同類型的調度器:長期調度器、中期調度器和短期調度器。這些名字表明瞭任務被執行的頻率。

進程調度器

進程調度器是操作系統的一部分,決定了何時運行什麼進程。它通常能夠暫停一個運行中的進程,將它放回到運行隊列當中,並運行一個新進程,我們把這樣的調度器叫做搶佔調度器。否則,它就是協同調度器。

長期調度器

長期調度器,決定了任務或進程是否會被就緒隊列(內存中)所接納。當一個運行程序的嘗試被做出後,長期調度器或允許,或是延遲將它作爲當前執行的一個進程。因此,這種調度器掌控着能在系統上運行的進程。調度器同時還決定併發的程度:同時執行程序的多少,在I/O密集型和CPU密集型進程之前做出劃分。

通常,大多數進程可以分爲I/O密集型[2]和CPU密集型。I/O密集型程序將大多數時間都花在了I/O操作而不是運算上,而CPU密集型程序正好相反,將大多數時間花在了運算上,而很少產生I/O操作。選出一個I/O密集型和CPU密集型程序的良好組合,對於長期調度器是非常重要的。否則,假如所有的程序都是CPU密集型的,那麼I/O隊列將會幾乎永遠都是空的,這樣就會導致一些設備從來沒被人用過,系統資源分配就是不均衡的。顯然,性能極佳的系統必然是CPU密集型和I/O密集型程序的組合。在現代操作系統中,這被用來保證實時進程能獲得足夠的CPU時間來完成任務。[3]

長期調度對大型系統,例如批處理系統、計算機集羣、超級計算機和渲染場來說同樣重要。例如,在併發系統中,爲了避免交互的多個進程,把時間都花在等待對方而產生阻塞,通常是需要進行協同調度的。在這種情況下,處理操作系統底層的調度器之外,還需要符合要求的額外調度程序來實現必要的功能。

中期調度器

中期調度器臨時將進程從內存中去除,放入第二儲存設備(如硬盤)中,或亦而反之。這通常被稱爲“換出”和“換入”(同時也被錯誤叫做“分頁入”和“分頁出”)。中期調度器可能會將那些一直不活躍的進程,優先級低的進程,頻繁產生頁錯誤的進程,或者佔用大量內存的進程放入交換區,爲其它程序釋放內存。當系統內存充足時,或者程序不再處於阻塞狀態時,調度器又會將內存重新放入內存中。

短期調度器

短期調度器(也就是CPU調度器)決定了在一個時鐘中斷、I/O中斷、系統調用其它種類的信號之後,應該執行(分配CPU)給哪些內存中的進程。可見,短期調度器作出決定的頻率比長期或中期調度器更加頻繁 —— 每隔一段非常短的固定時間,調度器就將做出一次決定。這種調度器可以是搶佔式的,能夠強行把一個在CPU運行中的程序中斷,然後分配給其它進程;也可以是非搶佔式的,這類調度器無法強行把進程從CPU上中斷。

搶佔式調度器的功能需要一個運行在內核態,能被中斷處理程序捕獲的可編程定時器才能實現。

調度規則

調度規則就是在同時佔用資源的多方之間進行資源分配的算法。在路由器、操作系統、硬盤、打印機,大多數嵌入式系統等設備中,都能看到調度規則的應用。

調度算法的主要目標,是使資源飢餓最小化,並保證使用資源多方的公平性。調度器需要處理在大量請求下如何分配資源的難題。調度算法種類很多,在這一章,將會介紹幾種常見算法。

在包交換的計算機網絡和其它統計多路複用領域,需要一個合適的調度算法而不是一個先到先得的數據包隊列。

 

原文來自:

https://zh.wikipedia.org/wiki/%E8%B0%83%E5%BA%A6_(%E8%AE%A1%E7%AE%97%E6%9C%BA)#.E8.B0.83.E5.BA.A6.E8.A7.84.E5.88.99




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章