找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2713|回復(fù): 0
收起左側(cè)

任務(wù)的基本知識(shí)

[復(fù)制鏈接]
ID:60266 發(fā)表于 2014-8-19 22:57 | 顯示全部樓層 |閱讀模式
                        os:操作系統(tǒng)

1.    軟件設(shè)計(jì)
軟件可分為許多可執(zhí)行程序單元
  • 裸機(jī)開發(fā)時(shí),將可執(zhí)行程序單元分類組合,得到一個(gè)個(gè)模塊,其中有一個(gè)監(jiān)控模塊,其他模塊在它的監(jiān)控下運(yùn)行。

  • 使用操作系統(tǒng)時(shí),將可執(zhí)行程序單元分類組合,得到一個(gè)個(gè)任務(wù),這些任務(wù)在操作系統(tǒng)的調(diào)度下運(yùn)行。任務(wù)指的是用戶任務(wù)。區(qū)別于操作系統(tǒng)自己的任務(wù)。
2.     os核心是用一個(gè)CPU去仿制“多CPU”環(huán)境,使每個(gè)任務(wù)覺得自己擁有獨(dú)立cpu。
        os給每個(gè)任務(wù)分配一個(gè)任務(wù)堆棧,用來(lái)保存“虛擬CPU”的內(nèi)部各個(gè)寄存器值。
         當(dāng)一個(gè)任務(wù)需要運(yùn)行時(shí),os就將該任務(wù)的任務(wù)堆棧的內(nèi)容復(fù)制到真正的cpu中,虛擬cpu就變成了真正的cpu,這個(gè)任務(wù)就可以運(yùn)行起來(lái)。當(dāng)需要暫停運(yùn)行時(shí),操作系統(tǒng)就將真正cpu的寄存器內(nèi)容復(fù)制到它的任務(wù)堆棧中保持起來(lái)(保護(hù)現(xiàn)場(chǎng),保護(hù)一些寄存器的值),一遍下次運(yùn)行時(shí)可以恢復(fù)現(xiàn)場(chǎng),繼續(xù)運(yùn)行下去。
         os在保存好當(dāng)前任務(wù)的現(xiàn)場(chǎng)后,就可以恢復(fù)另一個(gè)任務(wù)的現(xiàn)場(chǎng),使另一個(gè)任務(wù)運(yùn)行起來(lái)。這個(gè)過程叫:任務(wù)切換。
        os 為有效進(jìn)行任務(wù)調(diào)度,必須掌握各個(gè)任務(wù)的詳細(xì)動(dòng)態(tài)信息,所以給每個(gè)任務(wù)建立了檔案,來(lái)記錄這些信息,這個(gè)就是任務(wù)控制塊。
3. 任務(wù)的特性
  • 獨(dú)立性
   裸機(jī)的程序模塊,一個(gè)模塊可以調(diào)用另一個(gè)模塊。信息之間傳輸時(shí),主模塊以實(shí)參將信息傳給子模塊形參,子模塊以返回值形式將結(jié)果傳輸給主模塊。相互看得見。
   os環(huán)境下,一個(gè)任務(wù)獨(dú)占cpu,不可能調(diào)用另一個(gè)任務(wù),所有任務(wù)在邏輯上是平等的。當(dāng)任務(wù)需要進(jìn)行信息傳輸時(shí),只能采用異步方式。主人任務(wù)<----->os通信機(jī)制<------>仆人任務(wù)
  • 任務(wù)的并發(fā)性
       任務(wù)A與任務(wù)B運(yùn)行時(shí)間段有重疊部分,這種運(yùn)行方式叫并發(fā)運(yùn)行。

     宏觀上看,不同任務(wù)可以并發(fā)運(yùn)行,好像每個(gè)任務(wù)都有自己的cpu一樣。 是通過os進(jìn)行任務(wù)調(diào)度實(shí)現(xiàn)的并發(fā)運(yùn)行。os調(diào)度:已經(jīng)就緒的高優(yōu)先級(jí)任務(wù)可以剝奪另一個(gè)正在運(yùn)行的低優(yōu)先級(jí)任務(wù)的運(yùn)行權(quán)而進(jìn)入運(yùn)行狀態(tài)。當(dāng)?shù)虯運(yùn)行時(shí),高B就緒,B任務(wù)運(yùn)行A停止運(yùn)行。
  • 任務(wù)的動(dòng)態(tài)性
  裸機(jī):程序模塊總是處于可執(zhí)行狀態(tài),隨時(shí)可調(diào)用,調(diào)用即占用cpu,直到結(jié)束。
  os中,任務(wù)狀態(tài)是動(dòng)態(tài)變化的。任務(wù)并不是隨時(shí)可以運(yùn)行。而一個(gè)已經(jīng)開始運(yùn)行的任務(wù)并不能保證一直占有cpu的使用權(quán),隨時(shí)可能被更高優(yōu)先級(jí)的任務(wù)奪取cpu的使用權(quán)。
任務(wù)的五種狀態(tài):
休眠態(tài):任務(wù)在內(nèi)存中,不被調(diào)用。
就緒態(tài):任務(wù)已經(jīng)準(zhǔn)備好,隨時(shí)可以運(yùn)行,但該任務(wù)優(yōu)先級(jí)比正在運(yùn)行的優(yōu)先級(jí)低,故暫時(shí)不能運(yùn)行。
運(yùn)行態(tài):掌握cpu使用權(quán),正在運(yùn)行。
等待態(tài):掛起態(tài)。如果正在運(yùn)行的任務(wù)需要等待一段時(shí)間或者需要等待某一個(gè)事件的發(fā)生才能繼續(xù)運(yùn)行,則就會(huì)推出運(yùn)行狀態(tài),進(jìn)入等待態(tài)。交出cpu,使就緒任務(wù)中,優(yōu)先級(jí)最高的任務(wù)進(jìn)入運(yùn)行態(tài)。(將自己從就緒表中刪除,然后進(jìn)行任務(wù)調(diào)度)
中斷態(tài):發(fā)生中斷時(shí),cpu執(zhí)行中斷服務(wù),原來(lái)正在運(yùn)行的任務(wù)暫停,進(jìn)入中斷態(tài)。中斷服務(wù)程序結(jié)束后,被打斷的任務(wù)繼續(xù)運(yùn)行,也可能運(yùn)行剛被中斷激活的更高級(jí)任務(wù)。
  • 任務(wù)狀態(tài)的轉(zhuǎn)換
休眠態(tài)----創(chuàng)建---->就緒態(tài)
就緒態(tài) 運(yùn)行態(tài) 等待態(tài)-----刪除--->休眠態(tài)
就緒態(tài)-----os調(diào)度--->運(yùn)行態(tài)
運(yùn)行態(tài)退出情況:
A:主動(dòng)退出:需要延時(shí),或者等待某個(gè)事件發(fā)生。進(jìn)入等待太
B:被動(dòng)退出:一個(gè)更高優(yōu)先級(jí)的處于等待態(tài)的任務(wù)滿足條件進(jìn)入就緒狀態(tài),(延時(shí)到,或等待的事情已經(jīng)發(fā)生),則剝奪當(dāng)前任務(wù)的cpu使用權(quán),將它趕下臺(tái),進(jìn)入運(yùn)行態(tài)。而被趕下臺(tái)的任務(wù)從運(yùn)行態(tài)進(jìn)入就緒態(tài)。
等待太:由運(yùn)行態(tài)的任務(wù)主動(dòng)進(jìn)入。只要等待的目的達(dá)到(延時(shí)到,等待的事件來(lái)臨),就自動(dòng)退出等待狀態(tài),進(jìn)入就緒狀態(tài),由os調(diào)度。
中斷態(tài)--->返回-->運(yùn)行態(tài)  (就緒態(tài))

優(yōu)先級(jí)最高的任務(wù)只要就緒就可以獲得cpu的使用權(quán),一點(diǎn)都不會(huì)被耽誤
獲得cpu控制權(quán)需要滿足條件:
A:進(jìn)入就緒態(tài)
B:所有優(yōu)先級(jí)高于我的任務(wù)都已經(jīng)處于等待態(tài)或休眠態(tài)。就緒表中我的優(yōu)先級(jí)最高。


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表