版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章 多線程(thread),線程是近年來操作系統(tǒng)領(lǐng)域出現(xiàn)的一個(gè)非常重要的機(jī)制和技術(shù),其重要程度不亞于進(jìn)程。線程機(jī)制可以提高程序執(zhí)行的效率,而且也方便用戶編程,不但適用于多機(jī)系統(tǒng),對大多數(shù)單CPU的個(gè)人計(jì)算機(jī)也同樣帶來好處,因此當(dāng)代操作系統(tǒng)都支持線程。,1、 線程的引入,進(jìn)程的兩個(gè)基本屬性: 資源分配的基本單位: 給每個(gè)進(jìn)程分配一虛擬地址空間,保存進(jìn)程映像,控制一些資源(文件,I/O設(shè)備),有狀態(tài)、優(yōu)先級、調(diào)度 調(diào)度基本單位: 進(jìn)程是一個(gè)執(zhí)行軌跡。 以上兩個(gè)屬性構(gòu)成進(jìn)程并發(fā)執(zhí)行的基礎(chǔ)。,對進(jìn)程系統(tǒng)必須完成的操作: 創(chuàng)建進(jìn)程 撤消進(jìn)程 進(jìn)程切換 缺點(diǎn): 時(shí)間空間開銷大,限制并發(fā)度的提高,引入線
2、程的目的,進(jìn)程的局限性 在操作系統(tǒng)中,進(jìn)程的引入提高了計(jì)算機(jī)資源的利用效率。但在進(jìn)一步提高進(jìn)程的并發(fā)性時(shí),人們發(fā)現(xiàn)進(jìn)程切換開銷占的比重越來越大; 傳統(tǒng)的進(jìn)程不能很好的利用多處理器,因?yàn)橐粋€(gè)進(jìn)程在某個(gè)時(shí)刻只能使用一個(gè)處理器; 進(jìn)程間通信的效率受到限制; 引入線程的目的: 減小(進(jìn)程/線程)上下文切換開銷; 更好支持多處理器(MP),達(dá)到最大程度的并行 ; 簡化進(jìn)程間的通信;,2、 線程的概念,定義:線程是進(jìn)程內(nèi)一個(gè)相對獨(dú)立的、可調(diào)度的執(zhí)行單元。有時(shí)稱輕量級進(jìn)程。 將原來進(jìn)程的兩個(gè)屬性分開處理。 每個(gè)線程都具有 執(zhí)行狀態(tài); 受保護(hù)的線程上下文,當(dāng)線程不運(yùn)行時(shí),用于存儲現(xiàn)場信息 獨(dú)立的程序指令計(jì)數(shù)器
3、 執(zhí)行堆棧 容納局部變量的靜態(tài)存儲器 可存取所在進(jìn)程的內(nèi)存和其他資源,線程的特性,并行性:同一進(jìn)程的多個(gè)線程可在一個(gè)或多個(gè)處理器上并發(fā)或并行運(yùn)行 共享性:同一個(gè)進(jìn)程中的所有線程共享進(jìn)程獲得的主存空間和一切資源 動態(tài)性:線程也是程序在相應(yīng)數(shù)據(jù)集上的一次執(zhí)行,由創(chuàng)建而產(chǎn)生,至撤銷而消亡,有其生命周期,線程的性質(zhì),線程是進(jìn)程內(nèi)一個(gè)相對獨(dú)立的可執(zhí)行單元 線程是操作系統(tǒng)中的基本的調(diào)度單元 進(jìn)程中至少要有一個(gè)或一個(gè)以上的線程 線程可以創(chuàng)建其他線程 線程并不擁有資源,只是使用他們,進(jìn)程是資源分配和擁有的基本單元。 由于共享資源,線程間需要通信和同步機(jī)制 線程有生命期,有誕生和死亡,線程的好處,創(chuàng)建一個(gè)新線程
4、花費(fèi)時(shí)間少(結(jié)束亦如此) 同一進(jìn)程中兩個(gè)線程的切換花費(fèi)時(shí)間少,如果機(jī)器設(shè)有“存儲恢復(fù)所有寄存器”指令,則整個(gè)切換過程用幾條指令即可完成) 由于同一進(jìn)程內(nèi)的線程共享內(nèi)存和文件,因此它們之間相互通信無須調(diào)用內(nèi)核 適合多處理機(jī)系統(tǒng),線程的應(yīng)用,前臺和后臺工作 異步處理工作 加快執(zhí)行速度 組織復(fù)雜工作 多用戶服務(wù),線程的狀態(tài),由于線程是調(diào)度和執(zhí)行的基本單位,在它的生命過程中有狀態(tài)的變化: 就緒狀態(tài) 線程已具備執(zhí)行的條件,等待調(diào)度程序分配給一個(gè)CPU運(yùn)行 運(yùn)行狀態(tài) 線程正在CPU上運(yùn)行 等待狀態(tài) 線程正等待某事件發(fā)生,進(jìn)程與線程的比較,調(diào)度: 進(jìn)程中可能有多個(gè)線程,一個(gè)線程阻塞并不影響整個(gè)進(jìn)程,進(jìn)程中的
5、其他線程仍然可以參與調(diào)度運(yùn)行 并發(fā)性: 進(jìn)程間可并發(fā),同一進(jìn)程中的線程間亦可并發(fā) 擁有資源:進(jìn)程擁有資源,進(jìn)程中有掛起操作,線程不擁有資源,沒有權(quán)力決定進(jìn)程或自己從主存撤出,掛起只是進(jìn)程一級的概念 系統(tǒng)開銷:線程上下文切換比進(jìn)程上下文切換要快得多,同一進(jìn)程中的線程切換系統(tǒng)開銷小。 地址空間和其他資源(如打開文件):進(jìn)程間相互獨(dú)立,同一進(jìn)程的各線程間共享某進(jìn)程內(nèi)的線程在其他進(jìn)程不可見。 通信:進(jìn)程間通信通過IPC,線程間可以直接讀寫進(jìn)程數(shù)據(jù)段(如全局變量)來進(jìn)行通信需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性,線程控制原語,創(chuàng)建線程原語 撤消線程原語 阻塞或等待原語 掛起一個(gè)線程 恢復(fù)一個(gè)線
6、程 改變優(yōu)先數(shù),線程組(thread group),每個(gè)線程屬于某個(gè)線程組 每個(gè)線程創(chuàng)建時(shí),用戶可以顯示的說明為它創(chuàng)建一個(gè)新的線程組;也可以由系統(tǒng)自動把該線程歸入創(chuàng)建該線程的線程所在的線程組 線程組是多個(gè)線程的集合,系統(tǒng)將它們歸入一個(gè)單獨(dú)的對象,統(tǒng)一加以管理 可為線程組設(shè)置不同的特性和保密安全方法 一個(gè)線程在已被創(chuàng)建后,不能更改移入其他線程組,單線程進(jìn)程,多線程進(jìn)程,基于線程的操作系統(tǒng)分類,單進(jìn)程和單線程系統(tǒng) 單進(jìn)程和多線程系統(tǒng) 多進(jìn)程和單線程系統(tǒng) 多進(jìn)程和多線程系統(tǒng),3、線程的實(shí)現(xiàn),用戶級線程 內(nèi)核級線程 混合式線程,用戶級線程(ULT)User-Level Thread),由用戶應(yīng)用程序建
7、立、調(diào)度和管理的線程。 不依賴于OS內(nèi)核,應(yīng)用進(jìn)程利用線程庫提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。如:數(shù)據(jù)庫系統(tǒng)informix,圖形處理Aldus PageMaker。調(diào)度由應(yīng)用軟件內(nèi)部進(jìn)行,通常采用非搶先式和更簡單的規(guī)則,也無需用戶態(tài)/核心態(tài)切換,所以速度特別快。一個(gè)線程發(fā)起系統(tǒng)調(diào)用而阻塞,則整個(gè)進(jìn)程在等待。時(shí)間片分配給進(jìn)程,多線程則每個(gè)線程就慢。 線程庫:基于多線程的應(yīng)用程序的開發(fā)和運(yùn)行環(huán)境。 創(chuàng)建、撤消線程 在線程之間傳遞消息和數(shù)據(jù) 調(diào)度線程執(zhí)行 保護(hù)和恢復(fù)線程上下文,用戶級線程的活動,內(nèi)核不知道線程的活動,但仍然管理線程所屬進(jìn)程的活動 當(dāng)線程調(diào)用系統(tǒng)調(diào)用時(shí),整個(gè)進(jìn)程阻塞
8、 但對線程庫來說,線程仍然是運(yùn)行狀態(tài) 即線程狀態(tài)是與進(jìn)程狀態(tài)獨(dú)立的,用戶級線程的優(yōu)點(diǎn),線程切換不調(diào)用內(nèi)核 調(diào)度是應(yīng)用程序特定的:可以選擇最好的算法 ULT可運(yùn)行在任何操作系統(tǒng)上(只需要線程庫),用戶級線程的缺點(diǎn),大多數(shù)系統(tǒng)調(diào)用是阻塞的,因此核心阻塞進(jìn)程,故進(jìn)程中所有線程將被阻塞 核心只將處理器分配給進(jìn)程,同一進(jìn)程中的兩個(gè)線程不能同時(shí)運(yùn)行于兩個(gè)處理器上,內(nèi)核級線程(KLT)Kernel-Level Thread,由操作系統(tǒng)的內(nèi)核建立、調(diào)度和管理的線程。 所有線程管理由內(nèi)核完成 沒有線程庫,但對內(nèi)核線程工具提供API 內(nèi)核維護(hù)進(jìn)程和線程的上下文 線程之間的切換需要內(nèi)核支持 以線程為基礎(chǔ)進(jìn)行調(diào)度 例
9、子:Windows NT,OS/2,內(nèi)核級線程的優(yōu)點(diǎn)及缺點(diǎn),優(yōu)點(diǎn): 對多處理器,內(nèi)核可以同時(shí)調(diào)度同一進(jìn)程的多個(gè)線程 阻塞是在線程一級完成 內(nèi)核例程是多線程的 缺點(diǎn): 在同一進(jìn)程內(nèi)的線程切換調(diào)用內(nèi)核,導(dǎo)致速度下降,用戶級和內(nèi)核級線程比較,調(diào)度和切換速度 ULT切換快, KLT切換與進(jìn)程切換相似。ULT通常發(fā)生在一個(gè)應(yīng)用進(jìn)程的諸線程中,無需通過中斷進(jìn)入內(nèi)核。 系統(tǒng)調(diào)用 ULT進(jìn)行系統(tǒng)調(diào)用時(shí),會引起進(jìn)程的阻塞;KLT進(jìn)行系統(tǒng)調(diào)用時(shí)只會引起該線程阻塞。 線程執(zhí)行時(shí)間 ULT以進(jìn)程為單位調(diào)度,KLT以線程為單位調(diào)度。 ULT:進(jìn)程A有1個(gè)線程,進(jìn)程B有100個(gè)線程,則A的線程比B快 KLT:進(jìn)程A有1個(gè)
10、線程,進(jìn)程B有100個(gè)線程,則B比A快 使用范圍: ULT廣,任何OS, KLT需OS內(nèi)核支持 調(diào)度算法 ULT與OS調(diào)度算法無關(guān),可針對應(yīng)用優(yōu)化 多處理器支持 KLT可充分利用多處理器,ULT和KLT結(jié)合方法,線程創(chuàng)建在用戶空間完成 大量線程調(diào)度和同步在用戶空間完成 程序員可以調(diào)整KLT的數(shù)量 可以取兩者中最好的 例子:Solaris,用戶級和內(nèi)核級線程,根據(jù)線程運(yùn)行的地址空間 用戶線程: 運(yùn)行在用戶地址空間的線程。 內(nèi)核線程: 運(yùn)行在內(nèi)核空間的線程。 所有用戶級線程都是用戶線程; 內(nèi)核級線程可以是用戶線程,也可以是內(nèi)核線程。,NT線程的有關(guān)API,CreateThread()函數(shù)在調(diào)用進(jìn)程的地址空間上創(chuàng)建一個(gè)線程,以執(zhí)行指定的函數(shù);返回值為所創(chuàng)建線程的句柄。 ExitThread()函數(shù)用于結(jié)束
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46696-2025永久性阻焊材料規(guī)范
- 賈敏才課件教學(xué)課件
- 2026春招:新興際華筆試題及答案
- 2026年建筑設(shè)備能效管理與自動化系統(tǒng)
- 2026春招:維修技術(shù)員試題及答案
- 貨運(yùn)安全生產(chǎn)培訓(xùn)知識課件
- 貨物類投標(biāo)培訓(xùn)課件
- 2026年邯鄲幼兒師范高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測試備考題庫有答案解析
- 醫(yī)療大數(shù)據(jù)在公共衛(wèi)生事件應(yīng)對中的應(yīng)用
- 醫(yī)院醫(yī)療質(zhì)量管理與醫(yī)療質(zhì)量提升路徑
- 學(xué)校德育處工作崗位職責(zé)
- DLT 5717-2015 農(nóng)村住宅電氣工程技術(shù)規(guī)范
- 員工保守商業(yè)秘密和與知識產(chǎn)權(quán)有關(guān)的保密協(xié)議(范本)
- 氧氣理化特性表
- 物資、百貨、五金采購 投標(biāo)技術(shù)方案技術(shù)標(biāo)
- 路面工程試驗(yàn)檢測-路面基層底基層試驗(yàn)檢測
- 文旅項(xiàng)目立項(xiàng)報(bào)告
- 京張高鐵現(xiàn)場觀摩會整體策劃方案
- 安捷倫1200標(biāo)準(zhǔn)操作規(guī)程
- 合伙人合同協(xié)議書電子版
- 離婚協(xié)議書下載電子版完整離婚協(xié)議書下載三篇
評論
0/150
提交評論