學習筆記——OS線程

一、線程的引入

多處理機OS中

進程回顧

        1)進程是一個擁有資源的獨立單位; 

        2)是一個可獨立調度和分派的基本單位。

進程一系列操作

        1)創建進程:分配除CPU以外的全部資源(如內存、I/O設備等),建立PCB

        2)撤銷進程:資源回收,撤銷PCB

        3)進程切換:保留當前進程的CPU環境,設置新選中進程的CPU環境

進程是一個資源的擁有者,創建、撤銷及切換,需要巨大的時空開銷,從而限制了OS中的進程數目,進程切換也不能過於頻繁。

引入線程目的:爲了更好地提高程序的並行執行程度,減少程序在併發執行時所付出的時空開銷,使OS具有更好的併發性。

                         不僅併發執行,而且減少時空開銷。

                         將進程的兩個作用分開,進程作爲擁有資源的獨立單位;線程作爲獨立調度和分配的基本單位,減少切換開銷。

二、線程與進程的比較

1.調度的基本單位

      1)傳統OS,進程同時作爲擁有資源的獨立單位和調度與分配的基本單位,每次調度,上下文切換,開銷巨大;

      2)引入線程的OS,線程作爲調度與分配的基本單位,線程切換,僅需保存和設置少量寄存器的內容,開銷遠小於進程開銷;

          同一進程中的線程切換,不會引起進程切換;但不同進程中的線程切換,必然引起進程的切換。

2.併發性

      1)傳統OS,進程之間併發;

      2)引入線程的OS,不僅進程之間能併發,不同進程的多個線程以及同一進程的多個線程都能併發。

3.擁有資源

      1)傳統OS,進程作爲擁有資源的獨立單位;

      2)引入線程的OS,進程還是擁有資源的基本單位,線程僅有一點必不可少的、能保證獨立運行的資源。如寄存器及堆棧;

         線程除了擁有自己的少量資源外,還允許多個線程共享該進程擁有的資源。如地址空間、文件、I/O設備等。

4.獨立性

      同一進程的不同線程之間的獨立性遠小於不同進程之間的獨立性。

5.系統開銷

      1)創建和撤銷進程時,爲之分配和回收PCB、分配和回收資源;創建線程時,分配和回收寄存器和堆棧,開銷小得多

      2)進程的切換,涉及進程上下文的切換;線程切換開銷小得多

6.支持多處理機系統

       一個進程的多個不同線程可以分配到多個處理機上。

三、線程的狀態和線程控制塊

1.線程的三個狀態

       線程之間也存在着共享資源和相互合作的制約關係,致使線程也有間斷性。

       三種基本狀態:執行狀態、就緒狀態及阻塞狀態。狀態之間切換同進程。

2.線程控制塊(TCB)

       如PCB一樣,將所有用於控制和管理線程的信息記錄在TCB中。如線程標識符、寄存器、優先級及堆棧指針等。

3.多線程OS的進程屬性

        1)進程是一個可擁有資源的基本單位;

        2)多個線程可併發執行;

        3)進程已不是可執行的實體。把線程作爲獨立運行與調度處的基本單位。

              所謂進程處於“執行”狀態,實際上是指進程中的某線程正在執行;

              對進程所施加的與進程狀態相關的操作也對其線程起作用。

四、線程的實現方式

1.用戶級線程(User-Level Thread,ULT)

         有關線程管理的所有工作都由應用程序完成,內核意識不到線程的存在。應用程序可以通過線程庫設計成多線程程序。

2.內核級線程(Kernel-Level Thread,KLT)

         線程管理的所有工作由內核完成,應用程序沒有進行線程管理的代碼,只有一個到內核級線程的編程接口。

3.組合方式

         線程創建完全在用戶空間完成,線程的調度和同步也在應用程序中進行。

         一個應用程序中的多個用戶級線程被映射到一些內核級線程(<=用戶級線程數目)上。5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章