計算機操作系統(tǒng)(第二版)課件:線程機制_第1頁
計算機操作系統(tǒng)(第二版)課件:線程機制_第2頁
計算機操作系統(tǒng)(第二版)課件:線程機制_第3頁
計算機操作系統(tǒng)(第二版)課件:線程機制_第4頁
計算機操作系統(tǒng)(第二版)課件:線程機制_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

線程機制線程基本概念線程實現(xiàn)機制Linux線程機制(自學)3.8線程機制3.8.1線程基本概念基于同數(shù)據(jù)區(qū)的同時多請求問題的進程解決思路什么是線程?線程擁有哪些資源?線程與進程的區(qū)別4.線程狀態(tài)設(shè)置5.線程控制:線程創(chuàng)建、終止、阻塞、喚醒6.線程同步7.線程調(diào)度線程通信

多線程應(yīng)用依據(jù)進程知識學習哪些場合適合使用多線程解決問題?有什么好處?哪些場合又不適合多線程機制呢?3.8線程機制1.線程的引入

“基于同數(shù)據(jù)區(qū)的同時多請求”問題的解決思路:例:數(shù)據(jù)庫服務(wù)器需要同時處理來自多個客戶端的數(shù)據(jù)查詢請求,這些請求都是針對同一數(shù)據(jù)庫的數(shù)據(jù)的。

基于進程的解決思路:(1)設(shè)置一個進程順序處理所有請求;(2)設(shè)置多個進程分別處理多個請求;3.8.1線程基本概念進程同步復雜;系統(tǒng)開銷大。存在的問題進程的兩個屬性:(1)進程是系統(tǒng)擁有資源的獨立單位;(2)進程是獨立調(diào)度和分派的基本單位;3.8線程機制3.8.1線程基本概念1.線程的引入線程擁有的資源:3.8線程機制3.8.1線程基本概念2.什么是線程線程是隸屬于進程的一個實體,是比進程“更小”的一個運行單位。

一個線程ID

一組寄存器堆棧:內(nèi)核棧、用戶棧一個私有存儲區(qū)線程控制塊TCB進程3.8線程機制3.8.1線程基本概念3.線程與進程的比較

調(diào)度:線程是CPU的調(diào)度單位

并發(fā)性:進程間可并發(fā)執(zhí)行;線程間也可并發(fā)執(zhí)行

擁有資源:進程是資源分配和擁有單位,線程基本不擁有資

源,同一進程中所有線程共享進程所擁有的資源

系統(tǒng)開銷:線程開銷<進程開銷

創(chuàng)建及刪除線程的開銷<進程

線程切換開銷<進程線程與進程有哪些不同呢?4.線程管理

(1)就緒態(tài)(2)運行態(tài)(3)阻塞態(tài)(等待態(tài))(4)終止態(tài)Windows2000/xp的線程狀態(tài):(1)初始化狀態(tài)(2)就緒狀態(tài)

(3)備用狀態(tài)(4)運行狀態(tài)(5)等待狀態(tài)(6)轉(zhuǎn)換狀態(tài)(7)終止狀態(tài)

3.8線程機制3.8.1線程基本概念

線程狀態(tài)線程創(chuàng)建線程終止線程阻塞線程喚醒4.線程管理3.8線程機制3.8.1線程基本概念

線程控制

線程同步

線程調(diào)度

線程通信3.8線程機制3.8.2線程的實現(xiàn)機制用戶級線程內(nèi)核級線程兩者相結(jié)合的組合方式1.用戶級線程(ULT)完全由用戶應(yīng)用程序?qū)崿F(xiàn)的線程機制。

POSIXPthreads;MachC-threads;Solaristhreads通信服務(wù)器線程管理程序

OS管理線程通信服務(wù)器進程3.8.2.線程實現(xiàn)機制運行時系統(tǒng)(線程庫):提供多線程應(yīng)用程序的開發(fā)環(huán)境和運行環(huán)境。由一組管理和控制線程的函數(shù)集合組成。它們作為進程代碼的一部分,駐留在進程的用戶空間。運行時系統(tǒng)的功能:1.用戶級線程(ULT)3.8.2.線程實現(xiàn)機制

線程控制;

線程調(diào)度;

線程同步;

線程通信;Linux的Posix線程機制應(yīng)用舉例:用戶級線程的優(yōu)點:

線程的調(diào)度及切換開銷小;

線程調(diào)度由應(yīng)用程序完成,可以選擇最適當?shù)乃惴?

可運行在任何操作系統(tǒng)上。用戶級線程的缺點:

線程調(diào)用阻塞型系統(tǒng)調(diào)用時,將導致所屬進程阻塞;

核心只將處理器分配給進程,同一進程中的多個線程不能同時

運行于多個處理器上;1.用戶級線程(ULT):3.8.2線程實現(xiàn)機制2.內(nèi)核級線程(KLT)完全由OS內(nèi)核實現(xiàn)的線程機制。

Windows2000/xpSolarisDigitalUNIX

3.8.2線程實現(xiàn)機制內(nèi)核級線程優(yōu)點:(1)對多處理器,核心可以同時調(diào)度同一進程的多個線程;(2)阻塞是在線程一級完成;(3)核心例程是多線程的;內(nèi)核級線程缺點:同一進程內(nèi)的線程切換調(diào)用內(nèi)核,系統(tǒng)開銷大。用戶線程:運行在用戶態(tài)內(nèi)核線程:運行在內(nèi)核態(tài)運行狀態(tài)用戶級線程:線程庫內(nèi)核級線程:操作系統(tǒng)內(nèi)核實現(xiàn)及管理3.組合方式內(nèi)核支持內(nèi)核級線程,線程庫支持用戶級線程,如Solaris3.8.2線程實現(xiàn)機制優(yōu)點:線程管理開銷小,效率高;

多對一模型缺點:線程系統(tǒng)調(diào)用時,將導致所屬進程阻塞;核心只將處理器分配給進程,同一進程中的兩個線程不能同時

運行于兩個處理器上;把多個用戶級線程映射到一個內(nèi)核級線程上3.8.2線程實現(xiàn)機制缺點:線程管理開銷大;

一對一模型優(yōu)點:線程系統(tǒng)調(diào)用時,僅阻塞線程能獲得多處理器的好處把一個用戶級線程映射到一個內(nèi)核級線程上。3.組合方式內(nèi)核支持內(nèi)核級線程,線程庫支持用戶級線程,如Solaris3.8.2線程實現(xiàn)機制

多對多模型優(yōu)點:線程系統(tǒng)調(diào)用時,僅阻塞線程能獲得多處理器的好處線程管理開銷不至于增加太大把多個用戶級線程映射到較少或同樣數(shù)量的內(nèi)核級線程上。3.組合方式內(nèi)核支持內(nèi)核級線程,線程庫支持用戶級線程,如Solaris3.8線程機制線程的定義、擁有的資源線程與進程的區(qū)別線程控制線程實現(xiàn)機制:用戶級線程、內(nèi)核級線程、組合模型本節(jié)知識小結(jié)哪個小組來總結(jié)下?3.8線程機制3.8.3Linux/openEuler線程機制創(chuàng)建線程clone()Pthread線程庫介紹Linux內(nèi)核線程3.8.3Linux/openEuler線程機制1.創(chuàng)建線程clone()#include<sched.h>intclone(int(*fn)(void*),void*child_stack,intflags,void*arg);參數(shù)說明:(1)fn:新線(進)程即將要執(zhí)行的函數(shù)。(2)child_stack:為新線程分配的內(nèi)核堆??臻g的起始地址。(3)arg:傳給新線程要執(zhí)行的函數(shù)fn的參數(shù)。(4)flags:創(chuàng)建標志,描述新線(進)程將從父進程繼承哪些資源1.創(chuàng)建線程clone()flags:創(chuàng)建標志參數(shù)說明:標志名稱說明CLONE_VM

父子進程運行于相同的內(nèi)存空間:共享內(nèi)存描述符和所有的頁表CLONE_FS

父子進程共享相同的文件系統(tǒng),包括根目錄、當前目錄、權(quán)限掩碼umaskCLONE_FILES父子進程共享打開文件表CLONE_SIGHAND

父子進程共享相同的信號處理(signalhandler)表、阻塞信號表和掛起信號表CLONE_PARENT新進程與創(chuàng)建它的進程擁有同一個父進程,即新進程與創(chuàng)建它的進程是兄弟進程CLONE_VFORK父進程被掛起,直至子進程終止,vfork()中設(shè)置CLONE_THREAD父子進程屬于同一個線程組,設(shè)置該標志時,必須同時設(shè)置CLONE_SIGHANDCLONE_SETTLS為新線程創(chuàng)建局部存儲段(TLS),該段由tls參數(shù)所指向的結(jié)構(gòu)描述3.8.3Linux/openEuler線程機制2.Linux/openEuler的Pthread線程庫intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*routines)(void*),void*arg)功能:創(chuàng)建新線程,屬性為attr,將運行的函數(shù)為routines(arg)intpthread_join(pthread_tthread,void**status)功能:調(diào)用者等待指定線程結(jié)束,并將結(jié)束狀態(tài)寫入status中voidpthread_exit(void*retval)功能:終止調(diào)用線程相關(guān)系統(tǒng)調(diào)用:3.8.3Linux/openEuler線程機制互斥鎖,條件變量,Posix信號量Pthread線程庫同步機制互斥鎖實現(xiàn)多個線程對臨界資源的互斥使用

創(chuàng)建鎖:intpthread_mutex_init(pthread_mutex_t*mutex,constpthread_mutexattr_t*attr)

初始化鎖的屬性:pthread_mutexattr_init(pthread_mutexattr_t*mattr)3.8.3Linux/openEuler線程機制2.Linux/openEuler的Pthread線程庫Pthread線程庫同步機制互斥鎖實現(xiàn)多個線程對臨界資源的互斥使用

加鎖操作:intpthread_mutex_lock(pthread_mutex_t*mutex)intpthread_mutex_trylock(pthread_mutex_t*mutex)

開鎖操作:intpthread_mutex_unlock(pthread_mutex_t*mutex)

銷毀鎖:intpthread_mutex_destroy(pthread_mutex_t*mutex)3.8.3Linux/openEuler線程機制2.Linux/openEuler的Pthread線程庫條件變量創(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ù)運行所需要等待的某種條件,它是利用線程間共享的全局變量進行同步的一種機制。Pthread線程庫同步機制2.Linux/openEuler的Pthread線程庫通知線程條件已滿足:intpthread_cond_signal(pthread_cond_t*cond);

intpthread_cond_broadcast(pthread_cond_t*cond)銷毀條件變量:intpthread_cond_destroy(pthread_cond_t*cond)3.Linux內(nèi)核線程3.8.3Linux/openEuler線程機制3.Linux內(nèi)核線程structtask_struct*kthread_create(int(*threadfn)(void*data),void*data,constchar*namefmt,...)功能:創(chuàng)建一個內(nèi)核線程,但處于不可運行狀態(tài),需調(diào)用wake_up_process()顯式地喚醒它#definekthread_run(threadfn,data,namefmt,...)

創(chuàng)建一個內(nèi)核線程并讓它能運行intkthread_stop(structtask_struct*thread);給指定線程發(fā)出結(jié)束運行信號,并一直等待指定線程的結(jié)束3.8.3Linux/openEuler線程機制3.9本章小結(jié)1.進程基本概念

進程定義和特征進程映像進程狀態(tài)進程控制2.進程互斥與同步

進程互斥的概念臨界資源及臨界區(qū)概念進程同步機制應(yīng)遵循的4個準則進程同步的概念進程同步機制:禁止中斷、專用機器指令、軟件方法、鎖機制、信號量機制、管程機制經(jīng)典進程同步問題:

生產(chǎn)者-消費者問題,哲學家進餐問題,讀者-寫者問題,理發(fā)師問題3.進程調(diào)度

調(diào)度的層次

高級調(diào)度,中級調(diào)度,低級調(diào)度

選擇調(diào)度算法要考慮的因素

評價調(diào)度性能的指

溫馨提示

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

評論

0/150

提交評論