計算機操作系統(第3版)課件 第4章 線程_第1頁
計算機操作系統(第3版)課件 第4章 線程_第2頁
計算機操作系統(第3版)課件 第4章 線程_第3頁
計算機操作系統(第3版)課件 第4章 線程_第4頁
計算機操作系統(第3版)課件 第4章 線程_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章線程Threads本章目標ChapterObjectives引入線程的概念Tointroducethenotionofathread4.1概述Overview在操作系統中引入進程的目的是使多道程序能并發執行,以改善資源利用率及提高系統吞吐量;在操作系統中再引入線程,則是為了減少程序并發執行所付出的時空開銷,使操作系統具有更好的并發性。4.1.1動機Motivation進程具有兩個屬性:

Theconceptofaprocessasembodyingtwocharacteristics:擁有資源的獨立單位UnitofResourceownership調度和分派的基本單位UnitofDispatching為使進程并發執行,則必須進行諸如創建、撤消、切換等一系列操作,這些操作涉及到資源管理,所花費的時空開銷較大,為此引入了線程。動機2Motivation操作系統獨立對待這兩個屬性Thesetwocharacteristicsaretreatedindependentlybytheoperatingsystem調度及分派單位稱為線程或輕型進程Dispatchingisreferredtoasathreadorlightweightprocess擁有資源的單位稱為進程或任務Resourceofownershipisreferredtoasaprocessortask重型進程進程有虛擬地址空間、打開文件及I/O資源等Process

Haveavirtualaddressspace,openfiles,andI/Oresources傳統進程或重型進程等價于只有一個線程的任務Atraditionalorheavyweightprocessisequaltoataskwithonethread.線程定義

線程是CPU使用的一個基本單元,包括:AthreadisabasicunitofCPUutilization,itconsistsof:線程標識athreadID程序計數器programcounter寄存器集registerset棧

stack線程與屬于同一進程的線程共享:Athreadshareswiththreadsbelongingtothesameprocess:

代碼段codesection數據段datasection其他操作系統資源otheroperating-systemresources單線程進程和多線程進程

SingleandMultithreadedProcesses線程其他定義線程的定義情況與進程類似,存在多種不同的提法。下面列出一些較權威的定義:線程是進程內的一個執行單元。線程是進程內的一個可調度實體。線程是程序(或進程)中相對獨立的一個控制流序列。線程是進程內一個相對獨立的、可調度的執行單元。線程擁有資源線程自己基本上不擁有資源,只擁有一點在運行時必不可少的資源(如程序計數器、一組寄存器和棧),但它可以與同屬一個進程的其他線程共享進程擁有的全部資源。線程擁有的資源(續)進程中的線程具有執行狀態executionstate線程上下文threadcontext執行棧executionstack線程靜態存儲局部變量someper-threadstaticstorageforlocalvariables寄存器register對所屬進程資源的訪問accesstothememoryandresourcesofitsprocess線程的狀態和進程類似,線程也有運行、就緒、阻塞等狀態。創建:當創建一個新進程時,也為該進程創建了一個線程。線程還可以創建新線程。就緒:線程已獲得除處理機外的所有資源。運行:線程正在處理機上執行。阻塞:線程因等待某事件而暫停運行。終止:一個線程已完成。線程的同步與通信與進程類似。進程的掛起及終止將影響到其中的所有線程。4.1.2優點Benefits響應能力強Responsiveness:aprogramtocontinuerunningevenifpartofitisblocked資源共享ResourceSharing:threadssharetheresourcesoftheprocesstowhichthembelong經濟性Economy:itismoreeconomicaltocreateandcontext-switchthreads多處理器體系結構的利用UtilizationofMPArchitectures:threadsmayberunninginparallelondifferentprocessors

優點續Takeslesstimetocreate(ortoterminate)anewthreadthanaprocessLesstimetoswitchbetweentwothreadswithinthesameprocessSincethreadswithinthesameprocesssharememoryandfiles,theycancommunicatewitheachotherwithoutinvokingthekernel4.2多線程模型

MultithreadingModels操作系統中有多種方式實現對線程的支持:內核線程KernelThreads用戶線程UserThreads上述兩種方法的組合實現內核線程內核線程(也稱內核級線程kernel-levelthread

)是指依賴于內核,由操作系統內核完成創建和撤消工作的線程。在支持內核線程的OS中,內核維護進程和線程的上下文信息并完成線程切換。一個內核線程阻塞時不會影響其他線程的運行。處理機時間分配的對象是線程,所以有多個線程的進程將獲得更多處理機時間。內核線程例子ExamplesWindows95/98/NT/2000SolarisTru64UNIXBeOSLinux用戶線程用戶線程(也稱用戶級線程user-levelthread)是指不依賴于操作系統核心,由應用進程利用線程庫提供創建、同步、調度和管理線程的函數來控制的線程。用戶線程的維護由應用進程完成,可以用于不支持內核線程的操作系統。當一個線程阻塞時,整個進程都必須等待,處理機時間是分配給進程的,進程內有多個線程時,每個線程的執行時間相對少一些。

用戶線程續Examples例子POSIXPthreadsMachC-threadsSolaristhreads兩種方法的組合在有些系統中,提供了上述兩種方法的組合實現。在這種系統中,內核支持多線程的建立、調度與管理;同時,系統中又提供使用線程庫的便利,允許用戶應用程序建立、調度和管理用戶線程。因此可以很好地將內核線程和用戶線程的優點結合起來。用戶線程與內核線程的關系

relationshipbetweenuserthreadsandkernelthreads多對一Many-to-One

一對一One-to-One多對多

Many-to-Many

4.2.1多對一模型

Many-to-OneModel多對一模型將多個用戶線程映射到一個內核線程Themanytoonemodelmapmanyuserthreadstoonekernelthread.線程管理由線程庫在用戶空間進行

Threadmanagementisdoneinuserspace,soitisefficientExamples:Greenthreads--athread

libraryavailableforSolaris2多對一模型2

Many-to-OneModel4.2.2

一對一模型

One-to-OneModel一對一模型將每個用戶線程映射到一個內核線程Theonetoonemodelmapeachuser-levelthreadmapstoakernelthread.這種模型的絕大多數實現限制了系統支持的線程數量Mostimplementationsofthismodelrestrictthenumberofthreadssupportedbythesystem.ExamplesWindows95/98/NT/2000OS/24.2.2

一對一模型2

One-to-OneModel4.2.3多對多模型

Many-to-ManyModel多對多模型多路復用多個用戶線程到同樣數量或數量更少的內核線程上Themanytomanymodelmultiplexesmanyuserthreadstoasmallerorequalnumberofkernelthreads.ExamplesSolaris2WindowsNT/2000IRIXHP-UXTru64UNIX多對多模型2

Many-to-ManyModel二級模型Two-levelModel一個流行的多對多模型變種:二級模型SimilartoM:M,exceptthatitallowsauserthreadtobeboundtokernelthread4.3線程庫線程庫為程序員提供創建和管理線程的API。目前使用的三種主要線程庫POSIXPthreadJavathreadsWin32線程庫4.4多線程問題多線程是指一個進程中有多個線程,這些線程共享該進程的狀態和資源,它們駐留在同一地址空間,并且可以訪問到相同的數據。4.4.1fork和exec系統調用在多線程程序中,系統調用fork和exec的語義有所改變。有的UNIX系統有兩種形式的fork,一種復制所有線程,另一種只復制調用了系統調用fork的線程。如果一個線程調用了exec,那么exec參數所指定的程序會替換整個進程,包括所有線程。4.4.2取消線程取消是在線程完成之前終止線程。要取消的線程通常稱為目標線程目標線程的取消可在以下兩種情況下發生異步取消Asynchronouscancellation延遲取消Deferredcancellation取消2異步取消:一個線程立即終止目標線程延遲取消:目標線程不斷檢查它是否應該終止如果資源已分配給要取消的線程或要取消的線程正在更新與其他線程共享的數據時,取消就會有困難線程與進程的比較調度:在傳統OS中,進程是調度和分配資源的基本單位;引入線程后,線程是調度和分派的基本單位,進程是擁有資源的基本單位。擁有資源:進程是擁有資源的基本單位,由一個或多個線程及相關資源構成。并發性:進程之間可以并發執行,同一進程中的各線程之間也可以并發執行。系統開銷:進程創建、撤銷及切換的開銷大于線程。而同一進程的線程間同步與通信開銷小。習題習題44.6Whatresourcesareusedwhenathreadiscreated?Howdotheydifferfromthoseusedwhenaprocessiscreated?4.10Whichofthefollowingcomponentsofprogramstatearesharedacrossthreadsinamultithreadedprocess?a.Registervaluesb.Heapmemoryc.Globalvariablesd.Stackmemory習題習題25選擇題關于線程和進程,下列說法中正確的是____。A.線程一定是分配處理機時間的基本單位B.進程一定是分配處理機時間的基本單位C.一個線程可以屬于多個進程

D.一個進程可以擁有多個線

溫馨提示

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

評論

0/150

提交評論