CPU是如何在WINDOWS下處理多任務(wù)的
CPU是如何在WINDOWS下處理多任務(wù)的
中央處理器(CentralProcessingUnit)的縮寫,即CPU,CPU是電腦中的核心配件,只有火柴盒那么大,幾十張紙那么厚,但它卻是一臺(tái)計(jì)算機(jī)的運(yùn)算核心和控制核心。下面是學(xué)習(xí)啦小編帶來的關(guān)于CPU是如何在WINDOWS下處理多任務(wù)的的內(nèi)容,歡迎閱讀!
CPU是如何在WINDOWS下處理多任務(wù)?
windows任務(wù)處理可分為兩類:協(xié)同式多任務(wù)和搶先式多任務(wù)處理模式。
1)使用協(xié)同式多任務(wù)處理模式,CPU的分配直接由應(yīng)用程序決定,所以系統(tǒng)性能好壞取決于應(yīng)用程序設(shè)計(jì)好壞。而運(yùn)行搶先式多任務(wù)處理模式,各進(jìn)程占用CPU的時(shí)間由系統(tǒng)調(diào)度程序決定,當(dāng)調(diào)度程序檢測出有比當(dāng)前任務(wù)優(yōu)先級(jí)更高的程序事件后,暫停當(dāng)前任務(wù)并將CPU時(shí)間分配給優(yōu)先級(jí)更高的進(jìn)程。所有的Win16應(yīng)用程序都在同一臺(tái)虛擬機(jī)上運(yùn)行,各程序之間采用的是協(xié)同式多任務(wù)處理。每個(gè)Win32應(yīng)用程序和MS-DOS應(yīng)用程序都具有自己專用的虛擬機(jī),其進(jìn)程按搶先式多任務(wù)處理方式運(yùn)行。
2)Windows中的多任務(wù)調(diào)度策略
Windows中調(diào)度的任務(wù)有兩種狀態(tài):運(yùn)行狀態(tài)和等待狀態(tài)。正在運(yùn)行的任務(wù)處于運(yùn)行狀 態(tài),當(dāng)該任務(wù)把CPU控制權(quán)交給其他任務(wù)后,就被置為等待狀態(tài)。為了便于任務(wù)調(diào)度和保存每個(gè)任務(wù)運(yùn)行的參數(shù),Windows在裝載應(yīng)用程序時(shí),由LoadModule()函數(shù)創(chuàng)建一任務(wù)數(shù)據(jù)庫(簡稱TDB),該任務(wù)數(shù)據(jù)庫在內(nèi)存中是以鏈表的形式存在,TDB鏈表中的結(jié)點(diǎn)記下了每個(gè)任務(wù)切換時(shí)的堆棧指針、中斷處理程序地址及此任務(wù)對應(yīng)的模塊句柄和實(shí)例句柄等
Windows就是根據(jù)TDB鏈表中存放的各個(gè)任務(wù)的數(shù)據(jù)信息來完成任務(wù)調(diào)度的。 對Windows而言,CPU屬于臨界資源,在某一時(shí)刻只有一個(gè)任務(wù)獨(dú)占CPU。為了合理分配CPU,提高系統(tǒng)的性能,Windows根據(jù)任務(wù)是否存在等待事件來進(jìn)行任務(wù)調(diào)度。如果當(dāng)前任務(wù)沒有事件可供處理,那么就應(yīng)該把控制權(quán)交給其他具有等待事件的任務(wù)。為了記錄每個(gè)任務(wù)的等待事件個(gè)數(shù),在TDB鏈表中,為每個(gè)任務(wù)建立一個(gè)事件計(jì)數(shù)器(TDB偏移6處的值),系統(tǒng)調(diào)度程序就是根據(jù)該計(jì)數(shù)器來進(jìn)行任務(wù)調(diào)度。我們可以通過Windows中未公開的核心函數(shù)PostEvent()把指定任務(wù)的事件計(jì)數(shù)器值增1,人為地偽造一個(gè)事件,引起相應(yīng)的任務(wù)被喚醒。 當(dāng)有多個(gè)任務(wù)都具有等待事件時(shí),Windows采用的最高優(yōu)先級(jí)(HPF)算法進(jìn)行調(diào)度。為此Windows定義了任務(wù)的優(yōu)先權(quán)值:范圍從-32到+15,任務(wù)的優(yōu)先權(quán)值越小,它的優(yōu)先級(jí)就越高,其任務(wù)結(jié)點(diǎn)在TDB鏈表中的位置也越靠前。而在實(shí)際應(yīng)用中,絕大多數(shù)Windows應(yīng)用程序的優(yōu)先值都是0,若優(yōu)先權(quán)值相同,則按先來先服務(wù)的原則進(jìn)行。任務(wù)的優(yōu)先權(quán)值只對具有等待事件的任務(wù)生效,如果一個(gè)任務(wù)沒有等待事件,即使優(yōu)先權(quán)再高,也不會(huì)被調(diào)度。 若當(dāng)前任務(wù)所分配的時(shí)間片用完或當(dāng)前任務(wù)再無等待事件,任務(wù)調(diào)度程序就要釋放當(dāng)前任務(wù)的控制權(quán),把控制權(quán)交給已選中的可調(diào)度任務(wù)。但在WindowsAPI中并沒直接公開這樣一個(gè)函數(shù),許多具有釋放控制權(quán)功能的函數(shù)都被隱藏在GetMessage()或PeekMessage()這樣的消息函數(shù)中,當(dāng)應(yīng)用程序在消息環(huán)中沒有消息可供接收時(shí),它就會(huì)把控制權(quán)交給別的任務(wù),以防止當(dāng)前任務(wù)進(jìn)入死循環(huán)。當(dāng)前任務(wù)釋放控制權(quán)以后,如果沒一個(gè)任務(wù)被調(diào)度程序選中,調(diào)度程序就會(huì)使Windows進(jìn)入系統(tǒng)空閑狀態(tài),相應(yīng)的電源管理軟件就會(huì)使整個(gè)系統(tǒng)處于低能耗的睡眠狀態(tài),直至有任務(wù)被喚醒而重新開始正常運(yùn)轉(zhuǎn)
3)多任務(wù)處理
多任務(wù)處理是指用戶可以在同一時(shí)間內(nèi)運(yùn)行多個(gè)應(yīng)用程序,每個(gè)應(yīng)用程序被稱作一個(gè)任務(wù).Linux、windows就是支持多任務(wù)的操作系統(tǒng),比起單任務(wù)系統(tǒng)它的功能增強(qiáng)了許多。當(dāng)多任務(wù)操作系統(tǒng)使用某種任務(wù)調(diào)度策略允許兩個(gè)或更多進(jìn)程并發(fā)共享一個(gè)處理器時(shí),事實(shí)上處理器在某一時(shí)刻只會(huì)給一件任務(wù)提供服務(wù)。因?yàn)槿蝿?wù)調(diào)度機(jī)制保證不同任務(wù)之間的切換速度十分迅速,因此給人多個(gè)任務(wù)同時(shí)運(yùn)行的錯(cuò)覺。多任務(wù)系統(tǒng)中有3個(gè)功能單位:任務(wù)、進(jìn)程和線程。
相關(guān)閱讀推薦:
1982年,Intel推出80286芯片,它比8086和8088都有了飛躍的發(fā)展,雖然它仍舊是16位結(jié)構(gòu),但在CPU的內(nèi)部集成了13.4萬個(gè)晶體管,時(shí)鐘頻率由最初的6MHz逐步提高到20MHz。其內(nèi)部和外部數(shù)據(jù)總線皆為16位,地址總線24位,可尋址16MB內(nèi)存。80286也是應(yīng)用比較廣泛的一塊CPU。IBM 則采用80286 推出了AT 機(jī)并在當(dāng)時(shí)引起了轟動(dòng),進(jìn)而使得以后的 PC 機(jī)不得不一直兼容于PC XT/AT。
1985年Intel推出了80386芯片,它X86系列中的第一種32位微處理器,而且制造工藝也有了很大的進(jìn)步。80386內(nèi)部內(nèi)含27.5萬個(gè)晶體管,時(shí)鐘頻率從12.5MHz發(fā)展到33MHz。80386的內(nèi)部和外部數(shù)據(jù)總線都是32位,地址總線也是32位,可尋址高達(dá)4GB內(nèi)存,可以使用Windows操作系統(tǒng)了。但80386芯片并沒有引起IBM 的足夠重視,反而是 Compaq 率先采用了它??梢哉f,這是 P C 廠商正式走“兼容”道路的開始,也是AMD 等 CPU 生產(chǎn)廠家走“兼容”道路的開始和 32 位 CPU的開始,直到今天的 P4 和 K7 依然是 32 位的 CPU(局部64位)
1989年,Intel推出80486芯片,它的特殊意義在于這塊芯片首次突破了100萬個(gè)晶體管的界限,集成了120萬個(gè)晶體管。80486是將80386和數(shù)學(xué)協(xié)處理器80387以及一個(gè)8KB的高速緩存集成在一個(gè)芯片內(nèi),并且在80X86系列中首次采用了RISC(精簡指令集)技術(shù),可以在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行一條指令。它還采用了突發(fā)總線(Burst)方式,大大提高了與內(nèi)存的數(shù)據(jù)交換速度。
1989 年,80486 橫空出世,它第一次使晶體管集成數(shù)達(dá)到了 120 萬個(gè),并且在一個(gè)時(shí)鐘周期內(nèi)能執(zhí)行 2 條指令。
看了CPU是如何在WINDOWS下處理多任務(wù)的文章內(nèi)容的人還看: