版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
線程機(jī)制線程基本概念線程實(shí)現(xiàn)機(jī)制Linux線程機(jī)制(自學(xué))3.8線程機(jī)制3.8.1線程基本概念基于同數(shù)據(jù)區(qū)的同時(shí)多請(qǐng)求問(wèn)題的進(jìn)程解決思路什么是線程?線程擁有哪些資源?線程與進(jìn)程的區(qū)別4.線程狀態(tài)設(shè)置5.線程控制:線程創(chuàng)建、終止、阻塞、喚醒6.線程同步7.線程調(diào)度線程通信
多線程應(yīng)用依據(jù)進(jìn)程知識(shí)學(xué)習(xí)哪些場(chǎng)合適合使用多線程解決問(wèn)題?有什么好處?哪些場(chǎng)合又不適合多線程機(jī)制呢?3.8線程機(jī)制1.線程的引入
“基于同數(shù)據(jù)區(qū)的同時(shí)多請(qǐng)求”問(wèn)題的解決思路:例:數(shù)據(jù)庫(kù)服務(wù)器需要同時(shí)處理來(lái)自多個(gè)客戶端的數(shù)據(jù)查詢請(qǐng)求,這些請(qǐng)求都是針對(duì)同一數(shù)據(jù)庫(kù)的數(shù)據(jù)的。
基于進(jìn)程的解決思路:(1)設(shè)置一個(gè)進(jìn)程順序處理所有請(qǐng)求;(2)設(shè)置多個(gè)進(jìn)程分別處理多個(gè)請(qǐng)求;3.8.1線程基本概念進(jìn)程同步復(fù)雜;系統(tǒng)開(kāi)銷(xiāo)大。存在的問(wèn)題進(jìn)程的兩個(gè)屬性:(1)進(jìn)程是系統(tǒng)擁有資源的獨(dú)立單位;(2)進(jìn)程是獨(dú)立調(diào)度和分派的基本單位;3.8線程機(jī)制3.8.1線程基本概念1.線程的引入線程擁有的資源:3.8線程機(jī)制3.8.1線程基本概念2.什么是線程線程是隸屬于進(jìn)程的一個(gè)實(shí)體,是比進(jìn)程“更小”的一個(gè)運(yùn)行單位。
一個(gè)線程ID
一組寄存器堆棧:內(nèi)核棧、用戶棧一個(gè)私有存儲(chǔ)區(qū)線程控制塊TCB進(jìn)程3.8線程機(jī)制3.8.1線程基本概念3.線程與進(jìn)程的比較
調(diào)度:線程是CPU的調(diào)度單位
并發(fā)性:進(jìn)程間可并發(fā)執(zhí)行;線程間也可并發(fā)執(zhí)行
擁有資源:進(jìn)程是資源分配和擁有單位,線程基本不擁有資
源,同一進(jìn)程中所有線程共享進(jìn)程所擁有的資源
系統(tǒng)開(kāi)銷(xiāo):線程開(kāi)銷(xiāo)<進(jìn)程開(kāi)銷(xiāo)
創(chuàng)建及刪除線程的開(kāi)銷(xiāo)<進(jìn)程
線程切換開(kāi)銷(xiāo)<進(jìn)程線程與進(jìn)程有哪些不同呢?4.線程管理
(1)就緒態(tài)(2)運(yùn)行態(tài)(3)阻塞態(tài)(等待態(tài))(4)終止態(tài)Windows2000/xp的線程狀態(tài):(1)初始化狀態(tài)(2)就緒狀態(tài)
(3)備用狀態(tài)(4)運(yùn)行狀態(tài)(5)等待狀態(tài)(6)轉(zhuǎn)換狀態(tài)(7)終止?fàn)顟B(tài)
3.8線程機(jī)制3.8.1線程基本概念
線程狀態(tài)線程創(chuàng)建線程終止線程阻塞線程喚醒4.線程管理3.8線程機(jī)制3.8.1線程基本概念
線程控制
線程同步
線程調(diào)度
線程通信3.8線程機(jī)制3.8.2線程的實(shí)現(xiàn)機(jī)制用戶級(jí)線程內(nèi)核級(jí)線程兩者相結(jié)合的組合方式1.用戶級(jí)線程(ULT)完全由用戶應(yīng)用程序?qū)崿F(xiàn)的線程機(jī)制。
POSIXPthreads;MachC-threads;Solaristhreads通信服務(wù)器線程管理程序
OS管理線程通信服務(wù)器進(jìn)程3.8.2.線程實(shí)現(xiàn)機(jī)制運(yùn)行時(shí)系統(tǒng)(線程庫(kù)):提供多線程應(yīng)用程序的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境。由一組管理和控制線程的函數(shù)集合組成。它們作為進(jìn)程代碼的一部分,駐留在進(jìn)程的用戶空間。運(yùn)行時(shí)系統(tǒng)的功能:1.用戶級(jí)線程(ULT)3.8.2.線程實(shí)現(xiàn)機(jī)制
線程控制;
線程調(diào)度;
線程同步;
線程通信;Linux的Posix線程機(jī)制應(yīng)用舉例:用戶級(jí)線程的優(yōu)點(diǎn):
線程的調(diào)度及切換開(kāi)銷(xiāo)小;
線程調(diào)度由應(yīng)用程序完成,可以選擇最適當(dāng)?shù)乃惴?
可運(yùn)行在任何操作系統(tǒng)上。用戶級(jí)線程的缺點(diǎn):
線程調(diào)用阻塞型系統(tǒng)調(diào)用時(shí),將導(dǎo)致所屬進(jìn)程阻塞;
核心只將處理器分配給進(jìn)程,同一進(jìn)程中的多個(gè)線程不能同時(shí)
運(yùn)行于多個(gè)處理器上;1.用戶級(jí)線程(ULT):3.8.2線程實(shí)現(xiàn)機(jī)制2.內(nèi)核級(jí)線程(KLT)完全由OS內(nèi)核實(shí)現(xiàn)的線程機(jī)制。
Windows2000/xpSolarisDigitalUNIX
3.8.2線程實(shí)現(xiàn)機(jī)制內(nèi)核級(jí)線程優(yōu)點(diǎn):(1)對(duì)多處理器,核心可以同時(shí)調(diào)度同一進(jìn)程的多個(gè)線程;(2)阻塞是在線程一級(jí)完成;(3)核心例程是多線程的;內(nèi)核級(jí)線程缺點(diǎn):同一進(jìn)程內(nèi)的線程切換調(diào)用內(nèi)核,系統(tǒng)開(kāi)銷(xiāo)大。用戶線程:運(yùn)行在用戶態(tài)內(nèi)核線程:運(yùn)行在內(nèi)核態(tài)運(yùn)行狀態(tài)用戶級(jí)線程:線程庫(kù)內(nèi)核級(jí)線程:操作系統(tǒng)內(nèi)核實(shí)現(xiàn)及管理3.組合方式內(nèi)核支持內(nèi)核級(jí)線程,線程庫(kù)支持用戶級(jí)線程,如Solaris3.8.2線程實(shí)現(xiàn)機(jī)制優(yōu)點(diǎn):線程管理開(kāi)銷(xiāo)小,效率高;
多對(duì)一模型缺點(diǎn):線程系統(tǒng)調(diào)用時(shí),將導(dǎo)致所屬進(jìn)程阻塞;核心只將處理器分配給進(jìn)程,同一進(jìn)程中的兩個(gè)線程不能同時(shí)
運(yùn)行于兩個(gè)處理器上;把多個(gè)用戶級(jí)線程映射到一個(gè)內(nèi)核級(jí)線程上3.8.2線程實(shí)現(xiàn)機(jī)制缺點(diǎn):線程管理開(kāi)銷(xiāo)大;
一對(duì)一模型優(yōu)點(diǎn):線程系統(tǒng)調(diào)用時(shí),僅阻塞線程能獲得多處理器的好處把一個(gè)用戶級(jí)線程映射到一個(gè)內(nèi)核級(jí)線程上。3.組合方式內(nèi)核支持內(nèi)核級(jí)線程,線程庫(kù)支持用戶級(jí)線程,如Solaris3.8.2線程實(shí)現(xiàn)機(jī)制
多對(duì)多模型優(yōu)點(diǎn):線程系統(tǒng)調(diào)用時(shí),僅阻塞線程能獲得多處理器的好處線程管理開(kāi)銷(xiāo)不至于增加太大把多個(gè)用戶級(jí)線程映射到較少或同樣數(shù)量的內(nèi)核級(jí)線程上。3.組合方式內(nèi)核支持內(nèi)核級(jí)線程,線程庫(kù)支持用戶級(jí)線程,如Solaris3.8線程機(jī)制線程的定義、擁有的資源線程與進(jìn)程的區(qū)別線程控制線程實(shí)現(xiàn)機(jī)制:用戶級(jí)線程、內(nèi)核級(jí)線程、組合模型本節(jié)知識(shí)小結(jié)哪個(gè)小組來(lái)總結(jié)下?3.8線程機(jī)制3.8.3Linux/openEuler線程機(jī)制創(chuàng)建線程clone()Pthread線程庫(kù)介紹Linux內(nèi)核線程3.8.3Linux/openEuler線程機(jī)制1.創(chuàng)建線程clone()#include<sched.h>intclone(int(*fn)(void*),void*child_stack,intflags,void*arg);參數(shù)說(shuō)明:(1)fn:新線(進(jìn))程即將要執(zhí)行的函數(shù)。(2)child_stack:為新線程分配的內(nèi)核堆棧空間的起始地址。(3)arg:傳給新線程要執(zhí)行的函數(shù)fn的參數(shù)。(4)flags:創(chuàng)建標(biāo)志,描述新線(進(jìn))程將從父進(jìn)程繼承哪些資源1.創(chuàng)建線程clone()flags:創(chuàng)建標(biāo)志參數(shù)說(shuō)明:標(biāo)志名稱說(shuō)明CLONE_VM
父子進(jìn)程運(yùn)行于相同的內(nèi)存空間:共享內(nèi)存描述符和所有的頁(yè)表CLONE_FS
父子進(jìn)程共享相同的文件系統(tǒng),包括根目錄、當(dāng)前目錄、權(quán)限掩碼umaskCLONE_FILES父子進(jìn)程共享打開(kāi)文件表CLONE_SIGHAND
父子進(jìn)程共享相同的信號(hào)處理(signalhandler)表、阻塞信號(hào)表和掛起信號(hào)表CLONE_PARENT新進(jìn)程與創(chuàng)建它的進(jìn)程擁有同一個(gè)父進(jìn)程,即新進(jìn)程與創(chuàng)建它的進(jìn)程是兄弟進(jìn)程CLONE_VFORK父進(jìn)程被掛起,直至子進(jìn)程終止,vfork()中設(shè)置CLONE_THREAD父子進(jìn)程屬于同一個(gè)線程組,設(shè)置該標(biāo)志時(shí),必須同時(shí)設(shè)置CLONE_SIGHANDCLONE_SETTLS為新線程創(chuàng)建局部存儲(chǔ)段(TLS),該段由tls參數(shù)所指向的結(jié)構(gòu)描述3.8.3Linux/openEuler線程機(jī)制2.Linux/openEuler的Pthread線程庫(kù)intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*routines)(void*),void*arg)功能:創(chuàng)建新線程,屬性為attr,將運(yùn)行的函數(shù)為routines(arg)intpthread_join(pthread_tthread,void**status)功能:調(diào)用者等待指定線程結(jié)束,并將結(jié)束狀態(tài)寫(xiě)入status中voidpthread_exit(void*retval)功能:終止調(diào)用線程相關(guān)系統(tǒng)調(diào)用:3.8.3Linux/openEuler線程機(jī)制互斥鎖,條件變量,Posix信號(hào)量Pthread線程庫(kù)同步機(jī)制互斥鎖實(shí)現(xiàn)多個(gè)線程對(duì)臨界資源的互斥使用
創(chuàng)建鎖:intpthread_mutex_init(pthread_mutex_t*mutex,constpthread_mutexattr_t*attr)
初始化鎖的屬性:pthread_mutexattr_init(pthread_mutexattr_t*mattr)3.8.3Linux/openEuler線程機(jī)制2.Linux/openEuler的Pthread線程庫(kù)Pthread線程庫(kù)同步機(jī)制互斥鎖實(shí)現(xiàn)多個(gè)線程對(duì)臨界資源的互斥使用
加鎖操作:intpthread_mutex_lock(pthread_mutex_t*mutex)intpthread_mutex_trylock(pthread_mutex_t*mutex)
開(kāi)鎖操作:intpthread_mutex_unlock(pthread_mutex_t*mutex)
銷(xiāo)毀鎖:intpthread_mutex_destroy(pthread_mutex_t*mutex)3.8.3Linux/openEuler線程機(jī)制2.Linux/openEuler的Pthread線程庫(kù)條件變量創(chuàng)建條件變量:int
pthread_cond_init(pthread_cond_t
*cond,pthread_condattr_t
*cond_attr)等待條件成立:int
pthread_cond_wait(pthread_cond_t
*cond,pthread_mutex_t
*mutex);intpthread_cond_timedwait(pthread_cond_t*restrictcond,pthread_mutex_t*restrictmutex,conststructtimespec*restricttimeout)條件變量代表線程繼續(xù)運(yùn)行所需要等待的某種條件,它是利用線程間共享的全局變量進(jìn)行同步的一種機(jī)制。Pthread線程庫(kù)同步機(jī)制2.Linux/openEuler的Pthread線程庫(kù)通知線程條件已滿足:intpthread_cond_signal(pthread_cond_t*cond);
intpthread_cond_broadcast(pthread_cond_t*cond)銷(xiāo)毀條件變量:intpthread_cond_destroy(pthread_cond_t*cond)3.Linux內(nèi)核線程3.8.3Linux/openEuler線程機(jī)制3.Linux內(nèi)核線程structtask_struct*kthread_create(int(*threadfn)(void*data),void*data,constchar*namefmt,...)功能:創(chuàng)建一個(gè)內(nèi)核線程,但處于不可運(yùn)行狀態(tài),需調(diào)用wake_up_process()顯式地喚醒它#definekthread_run(threadfn,data,namefmt,...)
創(chuàng)建一個(gè)內(nèi)核線程并讓它能運(yùn)行intkthread_stop(structtask_struct*thread);給指定線程發(fā)出結(jié)束運(yùn)行信號(hào),并一直等待指定線程的結(jié)束3.8.3Linux/openEuler線程機(jī)制3.9本章小結(jié)1.進(jìn)程基本概念
進(jìn)程定義和特征進(jìn)程映像進(jìn)程狀態(tài)進(jìn)程控制2.進(jìn)程互斥與同步
進(jìn)程互斥的概念臨界資源及臨界區(qū)概念進(jìn)程同步機(jī)制應(yīng)遵循的4個(gè)準(zhǔn)則進(jìn)程同步的概念進(jìn)程同步機(jī)制:禁止中斷、專(zhuān)用機(jī)器指令、軟件方法、鎖機(jī)制、信號(hào)量機(jī)制、管程機(jī)制經(jīng)典進(jìn)程同步問(wèn)題:
生產(chǎn)者-消費(fèi)者問(wèn)題,哲學(xué)家進(jìn)餐問(wèn)題,讀者-寫(xiě)者問(wèn)題,理發(fā)師問(wèn)題3.進(jìn)程調(diào)度
調(diào)度的層次
高級(jí)調(diào)度,中級(jí)調(diào)度,低級(jí)調(diào)度
選擇調(diào)度算法要考慮的因素
評(píng)價(jià)調(diào)度性能的指
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度互聯(lián)網(wǎng)公司股權(quán)激勵(lì)與約束合同
- 2025年度化工廠員工勞動(dòng)合同模板全面修訂版
- 二零二四年新能源發(fā)電設(shè)備采購(gòu)與安裝合同3篇
- 2025年度數(shù)據(jù)中心能源優(yōu)化合同能源服務(wù)協(xié)議書(shū)
- 2025年度國(guó)際健康養(yǎng)生旅游項(xiàng)目合同
- 2025版廠區(qū)環(huán)境監(jiān)測(cè)與風(fēng)險(xiǎn)評(píng)估合同4篇
- 2025年度大型公共場(chǎng)所消防設(shè)施維護(hù)保養(yǎng)合同
- 2025年度文化產(chǎn)業(yè)項(xiàng)目投資合同履約擔(dān)保函
- 2025年度新能源發(fā)電項(xiàng)目EPC總承包合同
- 2025年度品牌推廣顧問(wèn)聘請(qǐng)合同(品牌戰(zhàn)略)
- 小學(xué)六年級(jí)數(shù)學(xué)上冊(cè)《簡(jiǎn)便計(jì)算》練習(xí)題(310題-附答案)
- 地理標(biāo)志培訓(xùn)課件
- 培訓(xùn)如何上好一堂課
- 高教版2023年中職教科書(shū)《語(yǔ)文》(基礎(chǔ)模塊)下冊(cè)教案全冊(cè)
- 2024醫(yī)療銷(xiāo)售年度計(jì)劃
- 稅務(wù)局個(gè)人所得稅綜合所得匯算清繳
- 人教版語(yǔ)文1-6年級(jí)古詩(shī)詞
- 上學(xué)期高二期末語(yǔ)文試卷(含答案)
- 人教版英語(yǔ)七年級(jí)上冊(cè)閱讀理解專(zhuān)項(xiàng)訓(xùn)練16篇(含答案)
- 死亡病例討論模板
- 宜城安達(dá)特種水泥有限公司雙寨子礦區(qū)鋁土礦礦產(chǎn)資源開(kāi)發(fā)利用與生態(tài)復(fù)綠方案
評(píng)論
0/150
提交評(píng)論