嵌入式課件(宋暉)課件 5.3.1 進(jìn)程、線程_第1頁(yè)
嵌入式課件(宋暉)課件 5.3.1 進(jìn)程、線程_第2頁(yè)
嵌入式課件(宋暉)課件 5.3.1 進(jìn)程、線程_第3頁(yè)
嵌入式課件(宋暉)課件 5.3.1 進(jìn)程、線程_第4頁(yè)
嵌入式課件(宋暉)課件 5.3.1 進(jìn)程、線程_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

進(jìn)程和線程1進(jìn)程概念程序的順序執(zhí)行及其特征程序的并發(fā)執(zhí)行及其特征進(jìn)程的定義程序的順序執(zhí)行程序:源代碼程序、目標(biāo)程序和可執(zhí)行程序程序執(zhí)行:編輯、編譯、鏈接、執(zhí)行程序的結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序的順序執(zhí)行程序順序執(zhí)行的特征: 順序性、封閉性、可再現(xiàn)性

程序順序執(zhí)行流程圖數(shù)據(jù)輸入進(jìn)行計(jì)算輸出結(jié)果程序的順序執(zhí)行順序執(zhí)行-例1輸入I,計(jì)算C,打印P程序并發(fā)執(zhí)行多道程序設(shè)計(jì)技術(shù):多個(gè)程序并發(fā)執(zhí)行程序并發(fā)執(zhí)行時(shí)的特征:間斷性、非封閉性、不可再現(xiàn)性程序并發(fā)執(zhí)行引發(fā)的問(wèn)題協(xié)調(diào)各程序的執(zhí)行順序多個(gè)執(zhí)行程序共享系統(tǒng)資源,程序之間可能會(huì)相互影響,甚至影響輸出結(jié)果選擇哪些、多少個(gè)程序進(jìn)入內(nèi)存執(zhí)行??jī)?nèi)存中的執(zhí)行程序誰(shuí)先執(zhí)行??jī)?nèi)存如何有效分配?

1.2進(jìn)程的定義定義:可并發(fā)執(zhí)行的程序,在一個(gè)數(shù)據(jù)集合上的運(yùn)行過(guò)程申請(qǐng)/擁有資源程序:靜態(tài)概念,是指令和數(shù)據(jù)的集合,可長(zhǎng)期存儲(chǔ)進(jìn)程與程序的對(duì)應(yīng)關(guān)系:一個(gè)程序可以對(duì)應(yīng)一個(gè)進(jìn)程或多個(gè)進(jìn)程一個(gè)進(jìn)程可以對(duì)應(yīng)一個(gè)程序,或者一段程序進(jìn)程的特征動(dòng)態(tài)性并發(fā)性獨(dú)立性異步性引入進(jìn)程帶來(lái)的問(wèn)題

增加了空間開銷:為進(jìn)程建立數(shù)據(jù)結(jié)構(gòu)額外的時(shí)間開銷:管理和協(xié)調(diào)、跟蹤、填寫和更新有關(guān)數(shù)據(jù)結(jié)構(gòu)、切換進(jìn)程、保護(hù)現(xiàn)場(chǎng)更難控制:協(xié)調(diào)多個(gè)進(jìn)程競(jìng)爭(zhēng)和共享資源如何預(yù)防解決多個(gè)進(jìn)程因?yàn)楦?jìng)爭(zhēng)資源而出現(xiàn)故障處理機(jī)的競(jìng)爭(zhēng)尤為突出PCB進(jìn)程標(biāo)識(shí)信息:進(jìn)程的內(nèi)部和外部標(biāo)識(shí)符處理機(jī)狀態(tài)信息:通用寄存器值、指令計(jì)數(shù)器值、程序狀態(tài)字PSW值、用戶棧指針值進(jìn)程調(diào)度信息:進(jìn)程狀態(tài)、進(jìn)程優(yōu)先權(quán)、進(jìn)程調(diào)度的其他信息其它信息:程序及數(shù)據(jù)地址、進(jìn)程同步和通訊機(jī)制、資源清單、鏈接指針

線程的概念操作系統(tǒng)中引入進(jìn)程的目的是,為了描述和實(shí)現(xiàn)多個(gè)程序的并發(fā)執(zhí)行,以改善資源利用率及提高系統(tǒng)的吞吐量。進(jìn)程的兩個(gè)基本屬性:(1)進(jìn)程是一個(gè)擁有資源的獨(dú)立單位;(2)進(jìn)程同時(shí)又是一個(gè)可以獨(dú)立調(diào)度的基本單位。系統(tǒng)為進(jìn)程進(jìn)行的操作創(chuàng)建進(jìn)程、撤銷進(jìn)程、進(jìn)程切換進(jìn)程作為資源的擁有者和系統(tǒng)的調(diào)度對(duì)象,需要花費(fèi)系統(tǒng)較大的額外開銷。故,系統(tǒng)中同時(shí)存在的進(jìn)程數(shù)目不宜過(guò)高,而這也就限制了并發(fā)度的進(jìn)一步提高。引入線程的目的這是為了減少程序并發(fā)執(zhí)行時(shí)系統(tǒng)所付出的額外開銷,使操作系統(tǒng)具有更好的并發(fā)性。由進(jìn)程到線程目標(biāo):既能提高進(jìn)程并發(fā)度,又能降低系統(tǒng)的額外開銷。實(shí)現(xiàn):將進(jìn)程的資源申請(qǐng)和調(diào)度屬性分開。即進(jìn)程作為資源的申請(qǐng)和擁有者,但不作為調(diào)度的基本單位。這樣,就產(chǎn)生了線程的概念。線程是進(jìn)程中的一個(gè)實(shí)體,是獨(dú)立調(diào)度和分派的基本單位。線程自身基本上不擁有系統(tǒng)資源,只擁有少許運(yùn)行中必不可少的私有資源。線程可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程的全部資源。線程與進(jìn)程的區(qū)別①資源占有:進(jìn)程是資源管理(資源分配)的基本單位,擁有自己的地址空間和各種資源(如內(nèi)存空間、外設(shè)等)。線程只是處理機(jī)的基本調(diào)度(執(zhí)行)單位,只和其他線程一起共享進(jìn)程資源,自己只有一點(diǎn)必不可少的資源(堆棧、寄存器等)。②系統(tǒng)開銷:進(jìn)程創(chuàng)建、撤消、切換都要對(duì)資源分配、回收、轉(zhuǎn)移等導(dǎo)致處理機(jī)切換時(shí)間變長(zhǎng),系統(tǒng)效率降低。以線程為單位的處理機(jī)調(diào)度,由于不發(fā)生資源變化,處理機(jī)切換時(shí)間短,系統(tǒng)效率高。線程與進(jìn)程的區(qū)別③用戶等待時(shí)間:多線程可以減少用戶的等待時(shí)間,提高系統(tǒng)的響應(yīng)速度。④線程狀態(tài):進(jìn)程有自己的程序、數(shù)據(jù),有內(nèi)外空間交換,所以有掛起狀態(tài)。線程沒有自己?jiǎn)为?dú)的程序、數(shù)據(jù)空間,沒有內(nèi)外空間交換,所以沒有掛起狀態(tài)(即線程是一個(gè)只與內(nèi)存和寄存器有關(guān)的概念,不會(huì)因交換而進(jìn)入外存)。線程與進(jìn)程的區(qū)別⑤調(diào)度:進(jìn)程調(diào)度、同步等控制大多由OS內(nèi)核完成。線程調(diào)度、同步等控制可由OS內(nèi)核完成,也可以由用戶控制進(jìn)行。⑥關(guān)系:一個(gè)進(jìn)程有若干個(gè)線程(至少一個(gè))。

進(jìn)程與線程

——調(diào)度傳統(tǒng)操作系統(tǒng)中,進(jìn)程既是擁有資源的基本單位,又是獨(dú)立調(diào)度的基本單位引入線程的操作系統(tǒng)中,線程是獨(dú)立調(diào)度的基本單位,進(jìn)程是資源擁有的基本單位,從而可以顯著地提高系統(tǒng)的并發(fā)程度。同一進(jìn)程中的線程切換不會(huì)引起進(jìn)程切換,但當(dāng)一個(gè)進(jìn)程中的線程切換到另一進(jìn)程中的線程時(shí),將會(huì)引起進(jìn)程切換。進(jìn)程與線程

——并發(fā)進(jìn)程之間可以并發(fā)執(zhí)行同屬于一個(gè)進(jìn)程的多個(gè)線程之間,也可并發(fā)執(zhí)行因而使操作系統(tǒng)具有更好的并發(fā)性,從而能更有效的使用系統(tǒng)資源和提高系統(tǒng)吞吐量。進(jìn)程與線程

——并發(fā)例如在一個(gè)未引入線程的單處理機(jī)操作系統(tǒng)中,若僅設(shè)置一個(gè)文件服務(wù)進(jìn)程,當(dāng)它由于某種原因而被阻塞時(shí),便沒有其它的文件服務(wù)進(jìn)程來(lái)提供服務(wù)。引入線程以后,可以在一個(gè)文件服務(wù)進(jìn)程中設(shè)置多個(gè)服務(wù)進(jìn)程,當(dāng)?shù)谝粋€(gè)線程阻塞時(shí),文件服務(wù)進(jìn)程中的第二個(gè)線程可以繼續(xù)運(yùn)行;當(dāng)?shù)诙€(gè)線程阻塞時(shí),第三個(gè)線程可以繼續(xù)執(zhí)行,從而顯著地提高了文件服務(wù)的質(zhì)量和系統(tǒng)吞吐量。進(jìn)程與線程

——擁有資源進(jìn)程是擁有資源的獨(dú)立單位,它有權(quán)申請(qǐng)系統(tǒng)的各類資源。線程除了擁有很少的私有資源以外,不能申請(qǐng)系統(tǒng)資源,可以共享其所屬進(jìn)程的資源。即,進(jìn)程的代碼段、數(shù)據(jù)段以及系統(tǒng)資源,如已打開的文件、I/O設(shè)備等,都可被其內(nèi)的所有線程共享。進(jìn)程與線程

——系統(tǒng)開銷操作系統(tǒng)管理進(jìn)程的開銷顯著地大于管理線程所需的開銷。進(jìn)程切換的開銷也遠(yuǎn)大于線程切換的開銷。由于同一進(jìn)程中的多個(gè)線程具有相同的地址空間,使它們之間的同步和通信也比較容易。有些類型的線程切換、同步和通信都無(wú)需操作系統(tǒng)內(nèi)核的干預(yù)。進(jìn)程與線程傳統(tǒng)操作系統(tǒng)中,一個(gè)進(jìn)程可以創(chuàng)建一個(gè)線程,如MSDOS就是單用戶、單進(jìn)程、單線程的操作系統(tǒng),UNIX是一個(gè)多用戶、多進(jìn)程、單線程的操作系統(tǒng)現(xiàn)代操作系統(tǒng)和軟件設(shè)計(jì)大多支持多線程運(yùn)行。例如,Java虛擬機(jī)是一個(gè)單進(jìn)程、多線程的運(yùn)行環(huán)境,Windows系列操作系統(tǒng)和Linux操作系統(tǒng)都采用了多進(jìn)程、多線程技術(shù)。線程的適用范圍

1.多任務(wù)需要的多處理機(jī)系統(tǒng):減少處理機(jī)切換時(shí)間,線程的創(chuàng)建和撤消比進(jìn)程的創(chuàng)建和撤消開銷要小。

2.單處理機(jī)系統(tǒng):將用戶程序按功能分小,也可以使用線程簡(jiǎn)化程序結(jié)構(gòu)和提高執(zhí)行效率。3進(jìn)程狀態(tài)及其轉(zhuǎn)換為了刻畫整個(gè)進(jìn)程,可將一個(gè)進(jìn)程的生命周期劃分為一組狀態(tài):1、進(jìn)程的5種狀態(tài)(三種基本狀態(tài))new新建/創(chuàng)建(初始態(tài)):進(jìn)程正在創(chuàng)建中的狀態(tài)ready就緒:進(jìn)程已獲得了除處理機(jī)以外的所有資源,等待分配處理機(jī)執(zhí)行的等待狀態(tài)。running運(yùn)行/執(zhí)行:當(dāng)一個(gè)進(jìn)程獲得必要的資源并正在處理機(jī)上執(zhí)行的狀態(tài)。waiting等待/阻塞:正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時(shí)無(wú)法執(zhí)行下去,此時(shí)進(jìn)程所處的狀態(tài)。terminated終止/撤消/退出:進(jìn)程執(zhí)行完畢,釋放所占資源的狀態(tài)。3進(jìn)程狀態(tài)及其轉(zhuǎn)換就緒狀態(tài):該進(jìn)程運(yùn)行所需的一切條件都得到滿足,但因處理機(jī)資源個(gè)數(shù)少于進(jìn)程個(gè)數(shù),所以該進(jìn)程不能運(yùn)行,而必須等待分配處理機(jī)資源,一旦獲得處理機(jī)就立即投入運(yùn)行。3進(jìn)程狀態(tài)及其轉(zhuǎn)換執(zhí)行狀態(tài):

進(jìn)程正在處理機(jī)上運(yùn)行的狀態(tài),該進(jìn)程已獲得必要的資源,也獲得了處理機(jī),用戶程序正在處理機(jī)上運(yùn)行。3進(jìn)程狀態(tài)及其轉(zhuǎn)換阻塞狀態(tài);

進(jìn)程等待某種事件完成(例如,等待輸入/輸出操作的完成)而暫時(shí)不能運(yùn)行的狀態(tài),處于該狀態(tài)的進(jìn)程不能參加競(jìng)爭(zhēng)處理機(jī),此時(shí),即使分配給它處理機(jī),它也不能運(yùn)行。3進(jìn)程狀態(tài)及其轉(zhuǎn)換狀態(tài)變化:

就緒狀態(tài)→執(zhí)行狀態(tài)執(zhí)行狀態(tài)→就緒狀態(tài)執(zhí)行狀態(tài)→阻塞狀態(tài)阻塞狀態(tài)→

就緒狀態(tài)3進(jìn)程狀態(tài)及其轉(zhuǎn)換掛起狀態(tài):進(jìn)程被交換到外存產(chǎn)生原因:終端用戶的請(qǐng)求父進(jìn)程請(qǐng)求負(fù)荷調(diào)節(jié)的需要操作系統(tǒng)的需要被掛起進(jìn)程的特征不能立即執(zhí)行可能是等待某事件發(fā)生,若是,則阻塞條件獨(dú)立于掛起條件,即使阻塞事件發(fā)生,該進(jìn)程也不能執(zhí)行使之掛起的進(jìn)程:自身、其父進(jìn)程、OS只有掛起它的進(jìn)程才能使之由掛起狀態(tài)轉(zhuǎn)換為其他狀態(tài)掛起與阻塞區(qū)分兩個(gè)概念:進(jìn)程是否等待事件:阻塞與否進(jìn)程是否被換出內(nèi)存:掛起與否4種狀態(tài)組合:就緒:進(jìn)程在內(nèi)存,準(zhǔn)備執(zhí)行(活動(dòng)就緒)阻塞:進(jìn)程在內(nèi)存,等待事件(活動(dòng)阻塞)就緒/掛起:進(jìn)程在外存,只要調(diào)入內(nèi)存即可執(zhí)行(靜止就緒)阻塞/掛起:進(jìn)程在外存,等待事件(靜止阻塞)3進(jìn)程狀態(tài)及其轉(zhuǎn)換活動(dòng)狀態(tài)與靜止?fàn)顟B(tài)活動(dòng)就緒→靜止就緒活動(dòng)阻塞→靜止阻塞靜止就緒→活動(dòng)就緒靜止阻塞→活動(dòng)阻塞進(jìn)程的掛起與激活當(dāng)出現(xiàn)掛起事件,系統(tǒng)利用掛起原語(yǔ)將指定進(jìn)程或一個(gè)阻塞進(jìn)程掛起。進(jìn)程從內(nèi)存換出到外存,其狀態(tài)轉(zhuǎn)換: 就緒就緒/掛起 或阻塞 阻塞/掛起當(dāng)激活事件發(fā)生,系統(tǒng)利用激活原語(yǔ)將指定進(jìn)程激活。將相應(yīng)進(jìn)程從外存換入到內(nèi)存,可能的狀態(tài)轉(zhuǎn)換; 就緒/掛起 就緒 或阻塞/掛起 阻塞線程的狀態(tài)進(jìn)程中的所有線程共享該進(jìn)程的狀態(tài)線程具有三個(gè)基本狀態(tài):就緒、執(zhí)行和阻塞一般不具有掛起狀態(tài),因?yàn)榫€程共享進(jìn)程的資源,包括存儲(chǔ)空間,如果掛起一個(gè)進(jìn)程,其所屬的全部線程必將被掛起。而單獨(dú)掛起掛起某進(jìn)程中的一個(gè)線程,必然會(huì)影響同一進(jìn)程中的其它線程的執(zhí)行,這是沒有任何意義的。對(duì)線程的操作一個(gè)進(jìn)程可以創(chuàng)建和撤銷一個(gè)或多個(gè)線程,同一進(jìn)程中的多個(gè)線程可以并發(fā)執(zhí)行。對(duì)線程的操作包括:1、派生(Spawn),當(dāng)系統(tǒng)創(chuàng)建一個(gè)進(jìn)程時(shí),

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論