




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第十八講 線程概念,用戶級線程實現(xiàn)目的與要求:掌握線程概念,線程與進(jìn)程區(qū)別及用戶級線程的實現(xiàn).重點(diǎn)與難點(diǎn):線程如何從原進(jìn)程概念中剝離出來,線程控制塊,線程狀態(tài).用戶級線程實現(xiàn)方法及優(yōu)缺點(diǎn).作業(yè):2,78/20/20221線程的引入傳統(tǒng)進(jìn)程既是除了處理機(jī)以外的資源分配單位如內(nèi)存占用單位又是執(zhí)行單位。隨著共享內(nèi)存多外理機(jī)的開展,為了支持進(jìn)程內(nèi)多道程序設(shè)計而引入線程。8.1.1. 對稱多處理對稱多處理機(jī)指共享內(nèi)存且多個處理機(jī)都可響應(yīng)中斷且可以運(yùn)行用戶和核心程序的多處理機(jī)系統(tǒng)。第八章 并行與分布式操作系統(tǒng) 81并行操作系統(tǒng) 8/20/20222處理機(jī)Cache處理機(jī)Cache處理機(jī)Cache.主存總線
2、適配器I/O總線系統(tǒng)總線打印機(jī)硬盤對稱多處理機(jī)系統(tǒng)結(jié)構(gòu) 8/20/20223新結(jié)構(gòu)對操作系統(tǒng)的要求:多任務(wù)并行支持,希望同一進(jìn)程的程序可同時在多CPU上運(yùn)行,同時還共享進(jìn)程存儲空間。同步支持,當(dāng)運(yùn)行在不同CPU上的程序訪問共享數(shù)據(jù)時要有利用硬件支持的同步手段(如:Test_and_set指令。每個CPU都應(yīng)該能夠運(yùn)行操作系統(tǒng)調(diào)度程序自行調(diào)度。多CPU cache一致性的要求(全部由硬件實現(xiàn)或由硬件和操作系統(tǒng)合作實現(xiàn))。8/20/20224 線程概念將原進(jìn)程的PCB內(nèi)容分成兩局部。描述進(jìn)程資源,空間的局部。描述執(zhí)行現(xiàn)場,狀態(tài)及調(diào)度的局部。將第二局部內(nèi)容作為線程描述表的內(nèi)容且進(jìn)程內(nèi)允許多個線程存在
3、。8/20/20225一.進(jìn)程與線程區(qū)別新的進(jìn)程被定義為:資源分配單位。線程定義為:CPU分配單位執(zhí)行單位。新進(jìn)程描述:一個獨(dú)立的進(jìn)程空間,可裝入進(jìn)程映像。一個獨(dú)立的進(jìn)程關(guān)聯(lián)的執(zhí)行文件。進(jìn)程所用系統(tǒng)其它資源(如設(shè)備、文件等。一個或多個線程。 進(jìn)程在創(chuàng)立時一般同時創(chuàng)立好第一個線程,其它線程按需要由用戶程序請求創(chuàng)立。8/20/20226線程TCB描述:線程標(biāo)識信息;狀態(tài)和調(diào)度信息;現(xiàn)場信息組織成棧幀;線程私有存儲區(qū);指針指向PCB。8/20/20227傳統(tǒng)進(jìn)程與多線程進(jìn)程比較PCB用戶棧用戶空間描述核心棧a.傳統(tǒng)進(jìn)程模型用戶棧核心棧用戶棧核心棧用戶空間描述PCBTCBTCB.b.多線程進(jìn)程模型8/
4、20/20228二.線程狀態(tài)變化 進(jìn)程產(chǎn)生時同時產(chǎn)生第一個線程,其它線程在以后由任一線程請求創(chuàng)立。 線程創(chuàng)立后運(yùn)行過程中三個主要狀態(tài)是:運(yùn)行、就緒、阻塞。8/20/20229運(yùn)行就緒結(jié)束阻塞結(jié)束被調(diào)度時間片完或被剝奪等待事件事件發(fā)生重新初始化創(chuàng)立 原進(jìn)程的運(yùn)行、就緒、阻塞狀態(tài)已變?yōu)獒槍€程,而原掛起狀態(tài)反映進(jìn)程映像在不在內(nèi)存故還是進(jìn)程的狀態(tài)。8/20/202210三.多線程應(yīng)用多線程可以方便實現(xiàn)CPU之間的并行,CPU與外設(shè)間的并行。多線程與多進(jìn)程比,多線程天然地共享空間,而多進(jìn)程要通過如shmget系統(tǒng)調(diào)用才可共享局部用戶空間。舉例:有兩個任務(wù):任務(wù)1和任務(wù)2,把它們組織到單進(jìn)程中,和多線程
5、中運(yùn)行的時間花費(fèi)比較。8/20/202211任務(wù)1等I/O任務(wù)1任務(wù)2等I/O任務(wù)2a.單線程進(jìn)程單CPU執(zhí)行任務(wù)1任務(wù)1等I/O任務(wù)2任務(wù)2等I/O線程1處理機(jī)1線程2處理機(jī)2b.多線程進(jìn)程多CPU執(zhí)行線程1線程2CPU切換任務(wù)1等I/O等CPU任務(wù)1任務(wù)2等I/O任務(wù)2c.多線程進(jìn)程單CPU執(zhí)行等CPU8/20/202212四、線程間通訊與同步。線程間通過共享空間通訊。可以通過同步原語(系統(tǒng)調(diào)用/或利用硬同步指令的同步函數(shù)),實現(xiàn)互斥與同步。8/20/202213五多線程編程接口舉例UNIX的pthread庫所提供的有關(guān)線程函數(shù)。1創(chuàng)立線程 int pthread_create (pthr
6、ead_t tid, const pthread_attr_t attr, void (func)(void ), void arg); 2 等待某線程結(jié)束int pthread_join(pthread_t tid,void status); tid是我們必須要等待線程的tid, 3 獲得正在執(zhí)行線程的IDpthread_t pthread_self(void); 8/20/2022144. 將線程變?yōu)楠?dú)立狀態(tài)int pthread_detach(pthread_t tid); 線程或者是可集合的joinable或者是獨(dú)立的detached。當(dāng)可集合的線程終止時,其線程ID和退出狀態(tài)將保存,
7、直到另外一個線程調(diào)用pthread_join。獨(dú)立的線程終止時,所有的資源都釋放,我們不能等待它終止。如果一個線程需要知道另一個線程什么時候終止,最好保存第二個線程的可集合性。 5 線程結(jié)束void pthread_exit(void status); 6加鎖/解鎖int pthread_mutex_lock(pthread_mutex_t *mutex)int pthread_mutex_unlock(pthread_mutex_t *mutex)這兩個函數(shù)用于對臨界區(qū)的加鎖和解鎖。以保證對共享數(shù)據(jù)的互斥操作。Mutex是指向鎖結(jié)構(gòu)的地址。8/20/2022158.1.3. 線程實現(xiàn) 兩種典
8、型實現(xiàn)多線程方法:多線庫方法和核心方法。一多線庫實現(xiàn)的用戶級線程 不改變操作系統(tǒng)內(nèi)核,開發(fā)一個多線程函數(shù)庫,這是一種非操作系統(tǒng)內(nèi)核的實現(xiàn)方法,是一種過渡的方法。 由多線程庫提供線程創(chuàng)立,結(jié)束,同步等函數(shù),進(jìn)程主程序作為主線程運(yùn)行,以后可調(diào)用多線程庫的創(chuàng)立線程函數(shù)創(chuàng)立用戶級線程。 操作系統(tǒng)只看到進(jìn)程,只做進(jìn)程調(diào)度。由多線庫調(diào)度用戶級線程分時地在進(jìn)程中運(yùn)行。 8/20/202216多線庫P多線庫P進(jìn)程1進(jìn)程2進(jìn)程調(diào)度CPU由傳統(tǒng)進(jìn)程支持實現(xiàn)用戶級多線程示意圖 8/20/202217創(chuàng)立用戶級線程函數(shù)處理過程:接收新線程執(zhí)行函數(shù)及初始變量值;在進(jìn)程用戶空間中分配TCB表,棧區(qū)和私有存儲區(qū);初始化上述
9、表格;將TCB表中的線程狀態(tài)改為就緒;運(yùn)行線程調(diào)度程序;返回到被調(diào)度線程的現(xiàn)場運(yùn)行。* 8/20/202218進(jìn)程調(diào)度與多線庫線程調(diào)度比照:用戶程序調(diào)用任一多線程庫函數(shù),在函數(shù)處理結(jié)束時都去運(yùn)行線程調(diào)度,調(diào)用返回時可能返回到另一線程。用戶程序在自陷或被中斷進(jìn)入內(nèi)核,在內(nèi)核處理結(jié)束時都去運(yùn)行進(jìn)程調(diào)度程序。用戶級線程與進(jìn)程的關(guān)系:多線程分時地在進(jìn)程內(nèi)運(yùn)行,多線庫線程調(diào)度是選取線程占用進(jìn)程,內(nèi)核進(jìn)程調(diào)度是選取進(jìn)程占用CPU。*8/20/202219用戶級線程的優(yōu)勢:線程管理開銷小;無需修改操作系統(tǒng)核心;缺點(diǎn):不能做到同一進(jìn)程內(nèi)線程在多CPU并行;線程因I/0等原因阻塞于內(nèi)核時,多線庫調(diào)度器不知道。8/20/202220在線教務(wù)輔導(dǎo)網(wǎng): 更多課程配套課件資源請訪問在線教務(wù)輔導(dǎo)網(wǎng)8/20/2022218/20/2022228/20/2022238/20/2022248/20/2022258/20/202226饞死8/20/2022278/20/2022288/20/2022298/20/2022308/20/2
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物質(zhì)燃燒發(fā)電與氣化發(fā)電對比考核試卷
- 2025年購買房產(chǎn)合同格式
- 2025物流貨車合作經(jīng)營合同
- 2025電子產(chǎn)品采購合同
- 2025書畫約稿合同的范本
- 2025設(shè)備抵押借款合同范本「版」
- 二零二五版二手房出租托管合同書范例
- 北京信托借款合同范例
- 多個居間人的居間合同范例
- 2025租賃合同版范文
- 21《楊氏之子》公開課一等獎創(chuàng)新教案
- 車輛應(yīng)急預(yù)案方案惡劣天氣
- 【部編版】語文五年級下冊第五單元《交流平臺 初試身手》精美課件
- 枇杷文化知識講座
- 浙江偉鋒藥業(yè)有限公司年產(chǎn)100噸拉米夫定、50噸恩曲他濱、30噸卡培他濱技改項目環(huán)境影響報告
- 公路養(yǎng)護(hù)安全作業(yè)規(guī)程-四級公路養(yǎng)護(hù)作業(yè)控制區(qū)布置
- 八年級家長會領(lǐng)導(dǎo)講話4篇
- 美世國際職位評估體系IPE3.0使用手冊
- 焦慮抑郁患者護(hù)理課件
- 戶外招牌安全承諾書
- JGT471-2015 建筑門窗幕墻用中空玻璃彈性密封膠
評論
0/150
提交評論