操作系統-線程


操作系統-線程

操作系統

線程是為了更好的使多個程序並發執行,同時減少系統的開銷而出現的
 

線程與進程的比較

  • 調度的基本單位 
    傳統的OS中,進程作為獨立調度和分派的基本單文,每一次調度的時候,都要進行上下文的切換,開銷比較大,而用線程作為獨立運行的基本單文是,線程的切換只需要保存和設置少量的寄存器內容,開銷比進程的銷。在同一進程能切換線程不會引起進程的切換,如果切換到另一個進程的線程,則需要切換進程
  • 並發性 
    在引入線程之后,不僅進程之間可以並發執行,一個進程中的多個線程也可以並發執行,甚至還允許一個進程中所有的線程並發執行,更加有效的提高了系統資源的利用率和系統的吞吐量
  • 擁有資源 
    線程本身不像進程那樣擁有系統資源,僅有一些必不可少的,能保證獨立運行的資源,例如線程控制塊TCB等,除此之外,多個線程共享進程所擁有的資源
  • 獨立性 
    在獨立性方面,線程不夠進程好,進程為了防止進程之間干擾,破壞,每個進程都擁有一個獨立的地址空間和其他資源,而線程是為了提高並發性以及進程相互之間的合作而創建的
  • 系統開銷 
    進程在系統上的開銷主要是創建進程,撤銷進程,進程切換,特別是在進程切換的時候,涉及到上下文的切換,開銷比較大,而由於線程只有少量的資源,在上下文切換的時候,開銷比較小
  • 支持多處理機系統
 

線程的控制塊TCB

線程和進程一樣,擁有控制塊TCB,在TCB中有:

  • 線程標識符 
    每個線程的唯一標識
  • 寄存器 
    包括程序計數器PC,狀態寄存器和通用寄存器的內容
  • 線程運行狀態 
    用於描述線程在哪一個狀態
  • 優秀級 
    描述線程執行的優先級
  • 線程專有存儲區 
    用於線程切換時存放的現場保護信息,和與該新城的統計信息
  • 信號屏蔽 
    對某些信號屏蔽
  • 堆棧指針 
    保存局部變量和返回地址。在線程中設置了兩個專項堆棧的指針 
    • 指向用戶自己堆棧的指針 
      在用戶態時,使用用戶自己的用戶棧來保存局部變量和返回地址
    • 指向核心棧的指針 
      在內核態,線程運行在核心態使用系統的核心棧
 

線程的實現方式

  • 內核支持線程KST 
    線程的創建,阻塞,撤銷和切換等都是內核空間實現,在內核控制中也設置了線程控制塊TCB,用來管理內核線程 
    • 優點 
      • 能夠同時調度同意進程中的多個線程並執行
      • 進程中的一個線程被阻塞的時候,內核可以調度該進程中其他線程占有處理器運行,也可運行其他進程的線程
      • 支持線程具有很小的數據結構和堆棧,切換快,開銷小
      • 采用了多線程的技術,提高了系統的效率
    • 缺點 
      • 對於用戶的線程切換的話,切換開銷大,需要從用戶態切換到核心態,這是因為用戶線程在用戶態運行,而線程調度和管理在內核實現。
  • 用戶級線程ULT 
    線程的創建,阻塞,撤銷和切換等都是用戶空間實現,不需要內核的支持,與內核無關

    • 優點 
      • 線程切換不需要轉換到內核空間,在用戶態進行,開銷小
      • 用戶線程與OS平台無關
      • 調度算法可以使進程專用
    • 缺點 
      • 系統調用的阻塞問題,大多數的系統調用都會使進程阻塞,所以當線程執行系統調用時,進程內所有的線程都會被擇善
  • 組合方式

    • 多對一模型 
    • 一對一模型 
    • 多對多模型 
 

線程的實現

  • 內核支持線程的實現 
    在僅設置內核支持的線程OS中,一種可能的線程控制方法是系統在創建一個新進程時,為它分配一個任務數據區PTDA,但進程要創建一個線程的時候,就分配一個TCB,將相關信息填入該TCB,並分配資源。在撤銷線程事不立即回收該線程的資源和TCB,在創建新線程時,直接利用這個。 

  • 用戶級線程的實現 
    用戶線程在用戶空間實現,所有的用戶線程都具有相同的結構,都運行在一個中間系統上。有兩種方式實現中間系統,運行時系統和內核控制線程

    • 運行時系統 
      運行時系統實質是用於管理和控制線程的函數(過程)的集合,所有的函數都駐留在用戶空間,並作為用戶級線程與內核的接口
    • 內核控制線程 
      這種線程有叫做輕型進程LWP,在系統中,LWP不會設置太多,而是把這些LWP做成一個緩沖池,成為“線程池”,當用戶級線程需要與內核通信的時候,借助LWP就可以實現,有LWP實現了內核與用戶級線程直接的隔離 
+

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM