秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

51最簡操作系統(tǒng)演變

上傳人:hjk****65 文檔編號:253282570 上傳時間:2024-12-10 格式:PPT 頁數(shù):11 大?。?45.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
51最簡操作系統(tǒng)演變_第1頁
第1頁 / 共11頁
51最簡操作系統(tǒng)演變_第2頁
第2頁 / 共11頁
51最簡操作系統(tǒng)演變_第3頁
第3頁 / 共11頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《51最簡操作系統(tǒng)演變》由會員分享,可在線閱讀,更多相關(guān)《51最簡操作系統(tǒng)演變(11頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,演變,對很多人來說,多任務(wù)并行的機(jī)制是神秘的,包括很多長期在操作系統(tǒng)下開發(fā)應(yīng)用程序的人來說也是如此。,回顧一下從普通的,單任務(wù)順序執(zhí)行,到,多任務(wù)并行執(zhí)行,的演變過程,有利于打破,“,多任務(wù)并行,”,的神秘感。,其實(shí)多任務(wù)并行機(jī)制一點(diǎn)也不復(fù)雜,從技術(shù)上說,它就是程序流折斷加現(xiàn)場(在操作系統(tǒng)里叫上下文)保護(hù)。這兩部分技術(shù)不僅談不上高深,甚至無法稱其為,“,技術(shù),”,,因?yàn)閹缀趺總€開發(fā)者每天都在跟它們打交道:比較中斷響應(yīng)、調(diào)子程序。,那么它到底神秘在哪里呢?在于,程序流反向控制,機(jī)制,所謂,程序流反向控制,

2、指的是,由子函數(shù)決定父函數(shù)的執(zhí)行流程。對于通常的程序來說,總是由父函數(shù)決定何時調(diào)用哪一個子函數(shù)的;而在并行多任務(wù)系統(tǒng)里,是由一個被稱為,任務(wù)調(diào)度器,的子函數(shù)決定著何時調(diào)用哪一個父函數(shù)!,需要澄清一點(diǎn)是,這種子函數(shù)對父函數(shù)的調(diào)用并不是任意的,它只能將流程指向父函數(shù)的折斷點(diǎn),也就是最近一次調(diào)用任務(wù)調(diào)度器時的位置。原因很簡單,因?yàn)樽雍瘮?shù)根本不知道應(yīng)該從父函數(shù)的哪個地方開始執(zhí)行,除非它保存了父函數(shù)在折斷時的上下文。,這種,“,由任務(wù)調(diào)度器保存任務(wù)流程折斷點(diǎn)信息(上下文),并在將來某個時間恢復(fù)該上下文,然后繼續(xù)該任務(wù)流程,”,的方式,就是多任務(wù)并行的核心機(jī)制。,如何在子函數(shù)中修改父函數(shù)的執(zhí)行流程?修改堆

3、棧!,鍵盤掃描,顯示掃描,主程序,最簡單的順序執(zhí)行方式,挨個調(diào)用任務(wù),執(zhí)行完一個任務(wù)后再執(zhí)行下一個任務(wù)。,如果,一個任務(wù)長時間占用,CPU,那么其它任務(wù)對外部事件的響應(yīng)全部停止。,主程序,顯示掃描片段,1,顯示掃描片段,2,顯示掃描片段,3,顯示掃描片段,4,延時處,1,鍵盤掃描,延時處,2,延時處,3,延時處,4,改進(jìn),將浪費(fèi)的時間利用起來,仔細(xì)觀察可發(fā)現(xiàn),其實(shí)任務(wù)并非一直運(yùn)行,大部分時間是在延時,.,如果將任務(wù),從延時處折斷,分拆成小片段,后插入到另一個任務(wù)中,取代原有的延時程序,就可以提高系統(tǒng)資源的利用率,.,鍵盤掃描片段,1,主程序,顯示掃描片段,1,鍵盤掃描片段,2,顯示掃描片段,2

4、,鍵盤掃描片段,n,顯示掃描片段,n,再改進(jìn),統(tǒng)一調(diào)度任務(wù)片段,改由主程序來調(diào)度各任務(wù)片段,.,此時任務(wù)只剩下邏輯上的概念,而不存在完整的任務(wù)函數(shù),.,任務(wù)函數(shù)已被分拆成若干小片,.,不足之處是,任務(wù)片段之間的關(guān)系是固定的,.,例如執(zhí)行完,鍵盤掃描,任務(wù)的片段,1,后,必定是運(yùn)行,顯示掃描,任務(wù)的片段,1.,鍵盤掃描片段,1,主程序,繼續(xù)改進(jìn),實(shí)現(xiàn)流程控制,-,狀態(tài)機(jī),在主程序與任務(wù)之間增加一個接口,:,任務(wù)狀態(tài)控制器,.,主程序 只與任務(wù)的狀態(tài)控制器打交道,由狀態(tài)控制器負(fù)責(zé)調(diào)用,任務(wù)的片段,以及控制,階段的,變換,。,這種循環(huán)、條件轉(zhuǎn)移等大尺度流程控制在狀態(tài)控制器中完成、用特定編號命名每個程

5、序流程階段的執(zhí)行方式,就是我們常說的,“,狀態(tài)機(jī),”.,任務(wù)狀態(tài)控制,Switch(task_step),鍵盤掃描片段,2,鍵盤掃描片段,3,顯示掃描片段,1,任務(wù)狀態(tài)控制,Switch(task_step),顯示掃描片段,2,顯示掃描片段,2,其它任務(wù)片段,1,任務(wù)狀態(tài)控制,Switch(task_step),其它任務(wù)片段,2,其它任務(wù)片段,2,狀態(tài)機(jī)的優(yōu)點(diǎn)是額外占用資源少,執(zhí)行效率較高。,缺點(diǎn)是任務(wù)被拆得支離破碎,流程不直觀。,而且讓,任務(wù)在各個狀態(tài)間跳來跳去,,其實(shí)處理,起來并不輕松。,狀態(tài)機(jī)示例,Unsigned char ks_step=,讀第,1,行鍵值,;,Void keysca

6、n(),switch(ks_step),case,讀第,1,行,:/,省略,“,鍵值,”,二字,.,ks_step=,讀第,2,行,;,return,case,讀第,2,行,:,ks_step=,讀第,3,行,return,case,讀第,3,行,:,.,ks_step=,讀第,1,行,return,Unsigned char disp_step=,輸出第,1,個數(shù)碼管,;,Void keyscan(),switch(disp_step),case,輸出第,1,個,:/,省略,“,數(shù)碼管,”,三字,.,disp_step=,輸出第,2,個,;,return,case,輸出第,2,個,:,dis

7、p_step=,輸出第,3,個,return,case,輸出第,3,個,:,.,disp_step=,輸出第,1,個,return,Void main(),while(1),keyscan();,display();,每次進(jìn)入任務(wù)函數(shù)時只執(zhí)行一個片段,然后返回,任務(wù)進(jìn)度依靠狀態(tài)指示器來保存。,狀態(tài)指示器,每進(jìn)入函數(shù)一次只執(zhí)行一步即返回,讓出,CPU,給其它任務(wù),任務(wù)調(diào)度器,鍵盤掃描程序,顯示掃描程序,其它任務(wù),浮出水面 任務(wù)切換點(diǎn)與任務(wù)調(diào)度器,任務(wù)調(diào)度器,是多任務(wù)操作系統(tǒng)的核心,重新將任務(wù)小片整合起來,與順序執(zhí)行不同的是,在執(zhí)行完每個任務(wù)片段后,調(diào)用任務(wù)調(diào)度器釋放,CPU,,任務(wù)調(diào)度器負(fù)責(zé)分派

8、下一個接管,CPU,的任務(wù)片段。,與狀態(tài)機(jī)不同的是,狀態(tài)機(jī)及主程序,也就是任務(wù)調(diào)者,是主動調(diào)用者,任務(wù)片段是受調(diào)用者,。,而任務(wù)調(diào)度器中,任務(wù)調(diào)度者是被調(diào)用者。,這種調(diào)用關(guān)系決定了任務(wù)又可以像以前順序流程那樣寫成直觀的任務(wù)函數(shù),.,切換點(diǎn),切換點(diǎn),切換點(diǎn),切換點(diǎn),切換點(diǎn),切換點(diǎn),圖中可看到,主程序已經(jīng)消失,取而代之的是,任務(wù)調(diào)度器,。,任務(wù),執(zhí)行完任務(wù)片段后到達(dá),切換點(diǎn),,此時調(diào)用,任務(wù)調(diào)度函數(shù)將該,任務(wù)流折斷,調(diào)度器將該任務(wù)流的,堆棧保存后將,CPU,交給下一個任務(wù)。,當(dāng)該任務(wù)下次重新獲行運(yùn)行機(jī)會時,只需取出之前保存的堆棧,即可從切換點(diǎn)處繼續(xù)運(yùn)行。,響應(yīng),任務(wù)調(diào)度器示例,Void keysc

9、an(),while(1),outrow(row);,getkey();,task_switch();,row+;,Void display(),unsigned char cs=0;,while(1),out_cs(cs);,out_data(dispbufcs);,task_switch();,cs+;,Void task_switch(),保存當(dāng)前任務(wù)的堆棧,尋找下一個任務(wù),用下個任務(wù)的堆棧替換當(dāng)前的堆棧,return,任務(wù)總是從切換處繼續(xù)運(yùn)行。流程可以自由拆分成任意片,同樣是每次只執(zhí)行一步即讓出,CPU,,但任務(wù)函數(shù)比狀態(tài)機(jī)優(yōu)雅多了,任務(wù)調(diào)度的核心:堆棧遷移,有任務(wù)就有程序流,(PC)

10、,,有程序流就需要,堆棧,要折斷任務(wù)流,就必須保存堆棧。,每個任務(wù)都設(shè)有一個,私有堆棧,,用于,保存任務(wù)流被折斷,(,任務(wù)切換,),時,的堆棧內(nèi)容。,堆棧是上下文切換時最重要的切換對象,這種對堆棧的切換叫作,“,堆棧遷移,”,。事實(shí)上,在我接下來要講的,OS,里,它是唯一需要切換的,部分,以后再提到。,堆棧遷移有兩種方式,一種方法是,(,左圖,),使用私棧作為堆棧,發(fā)生任務(wù)切換時,只需將棧指針即可到新任務(wù)的棧頂即可。另一種是,(,右圖,),使用,公棧,作為作堆棧,每切換一個任務(wù),就將公棧的內(nèi)容搬向私棧,并將新任務(wù)從私棧搬至公棧,然后修改棧指針指向新的棧底。,任務(wù)函數(shù),任務(wù)堆棧,任務(wù)函數(shù),任務(wù)堆

11、棧,堆棧指針,SP,SP,在任務(wù)堆棧間切換,任務(wù)函數(shù),任務(wù)堆棧,任務(wù)函數(shù),任務(wù)堆棧,堆棧指針,SP,公棧,SP,總是指向公棧,任務(wù)切換時需在公棧與私棧間來回倒騰數(shù)據(jù),優(yōu)點(diǎn):任務(wù)切換快,缺點(diǎn):占內(nèi)存,適用于較輕的系統(tǒng)中,優(yōu)點(diǎn):省內(nèi)存,缺點(diǎn):任務(wù)切換慢,適用于較重的系統(tǒng)中,棧指針切換,VS,堆棧搬移,使用,棧指針,切換方式,的優(yōu)點(diǎn),是堆棧遷移速度極快,移動兩個字節(jié)即可完成整個遷移過程。而,堆棧搬移方式,則較慢,每次需搬若干字節(jié),(,如果在任務(wù)的第一層函數(shù)中切換任務(wù),則需,2,字節(jié),每加深一層函數(shù)增加,2,字節(jié)),且換入,/,換出的任務(wù)各需搬一次。此外,還要計(jì)算棧深,/,棧頂位置。整個過程約需增加,

12、4080,個機(jī)器周期,(1,周期為,1,條,NOP,指令的執(zhí)行時間)。,但使用棧指針,切換方式,時,由于整個運(yùn)行周期都在私棧中,這就意味著需要足夠深的棧來支撐調(diào)子函數(shù),/,調(diào)中斷,/,寄存器壓棧等動作,即使是簡單的任務(wù),也需要,812,字節(jié),棧深,。而使用堆棧搬移方式時,私棧只要保存從棧底到任務(wù)切換時的棧深,而跟中斷和最大調(diào)子函數(shù)深度無關(guān),一般僅,24,字節(jié),分配,8,字節(jié),(,意味著任務(wù)切換可發(fā)生在第,4,層函數(shù)調(diào)用中,),已足夠應(yīng)付大多數(shù)應(yīng)用。,實(shí)測數(shù)據(jù)表明,棧指針切換的方式適用于,函數(shù)調(diào)用少于,兩層、中斷期間不需寄存器壓,棧,(,或使用,using,保護(hù)寄存器,現(xiàn)場,),的,場合中,操作系統(tǒng)可設(shè)計(jì)為超輕量,僅具有多任務(wù)能力,最多再加上睡眠控制。而堆棧搬移法適用于函數(shù)嵌套較深,/,中斷程序較復(fù)雜的環(huán)境中,操作系統(tǒng)中可加入進(jìn)程睡眠控制、,CPU,睡眠控制、消息喚醒機(jī)制及內(nèi)存動態(tài)分配機(jī)制等比較復(fù)雜的功能。,下面給出切換速度的實(shí)測數(shù)據(jù):,棧指針切換方式,20,機(jī)器周期,堆棧搬移方式,100,機(jī)器周期,(2,字節(jié)棧深,每多一字節(jié)增加,10,周期,使用匯編優(yōu)化后可減少到,6,周期,),小結(jié),洋洋灑灑說了一堆,其實(shí)只是讓大家將思維習(xí)慣轉(zhuǎn)變一下,從傳統(tǒng)的,由上至下,控制,任務(wù)流程,轉(zhuǎn)變?yōu)?從下到上,切換,任務(wù)流程,。,記住,任務(wù)切換的過程,是通過修改堆棧來完成。,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!