天天看點

計算機作業系統學習之使用者級/核心級線程和多線程模型一.概念二.線程帶來的變化三.線程的屬性四.使用者級線程和核心級線程五.線程的實作方式六.多線程模型七.小結

文章目錄

  • 一.概念
  • 二.線程帶來的變化
  • 三.線程的屬性
  • 四.使用者級線程和核心級線程
    • 1.使用者級線程
    • 2.核心級線程
    • 3.兩者的關聯性
  • 五.線程的實作方式
  • 六.多線程模型
    • 1.多對一模型
    • 2.一對一模型
    • 3.多對多模型
  • 七.小結

一.概念

  • 有的程序可能需要“同時”做很多事情,而傳統程序隻能串行的執行一系列程式。為此,引入了線程,來增加并發度
  • 可以把線程了解為輕量級程序
  • 線程是一個基本的CPU執行單元,也是程式執行流的最小單元

二.線程帶來的變化

  • 程序隻是資源配置設定的基本機關,線程成為排程的基本機關
  • 各線程間也可以并發,提高了并發性
  • 線程間并發,如果是同一程序内的線程,則不需要切換程序環境,系統開銷減小

三.線程的屬性

  • 線程是處理機排程的機關
  • 多CPU計算機中,各個線程可以占用不同的CPU
  • 每個線程都有一個線程控制塊(TCB)
  • 線程也有運作,就緒,阻塞三種基本狀态
  • 線程幾乎不擁有系統資源(因為引入線程以後,程序是資源配置設定的基本機關,線程隻是處理機排程的基本機關)
  • 同一程序的不同線程共享程序的資源
  • 由于共享記憶體空間位址,同一程序内的線程間進行通信甚至不需要系統幹預
  • 同一程序中的線程切換,不會引起程序切換
  • 不同程序中的線程切換,會引起程序切換

四.使用者級線程和核心級線程

1.使用者級線程

計算機作業系統學習之使用者級/核心級線程和多線程模型一.概念二.線程帶來的變化三.線程的屬性四.使用者級線程和核心級線程五.線程的實作方式六.多線程模型七.小結
  • 使用者級線程由應用程式通過線程庫實作
  • 所有線程管理工作由應用程式負責
  • 使用者級線程,線程切換可以在使用者态下完成,無需作業系統幹預
  • 在使用者看來,是有多個線程,但是作業系統核心并意識不到使用者級線程的存在

2.核心級線程

計算機作業系統學習之使用者級/核心級線程和多線程模型一.概念二.線程帶來的變化三.線程的屬性四.使用者級線程和核心級線程五.線程的實作方式六.多線程模型七.小結
  • 核心級線程的管理工作都由作業系統核心完成
  • 是以核心級線程的切換必須在核心态下才能完成
  • 當有多個處理機時,一個程序的多個線程可以同時執行
  • 核心級線程是作業系統核心可以感覺到的

3.兩者的關聯性

  • 它們之間的差别在于性能
  • 核心支援線程是OS核心可感覺的,而使用者級線程是OS核心不可感覺的
  • 使用者級線程的建立、撤消和排程不需要OS核心的支援
  • 使用者級線程執行系統調用指令時将導緻其所屬程序被中斷,而核心支援線程執行系統調用指令時,隻導緻該線程被中斷
  • 在隻有使用者級線程的系統内,CPU排程還是以程序為機關,處于運作狀态的程序中的多個線程,由使用者程式控制線程的輪換運作;在有核心支援線程的系統内,CPU排程則以線程為機關,由OS的線程排程程式負責線程的排程
  • 使用者級線程的程式實體是運作在使用者态下的程式,而核心支援線程的程式實體則是可以運作在任何狀态下的程式

五.線程的實作方式

  • 在同時支援核心級線程和使用者級線程的系統中,可采用二者組合的方式:将n個使用者級線程映射到m個核心級線程(n>m)
  • 由于作業系統隻感覺得到核心級線程,是以隻有核心級線程是處理機配置設定的機關

    eg:

    計算機作業系統學習之使用者級/核心級線程和多線程模型一.概念二.線程帶來的變化三.線程的屬性四.使用者級線程和核心級線程五.線程的實作方式六.多線程模型七.小結
上圖中,該程序由兩個核心級線程和三個使用者級線程組成。在使用者看來,這個程序中有三個線程,但因為隻有兩個核心級線程,即使該程序在一個四核處理機上運作,也最多隻能配置設定到兩個核,最多有兩個使用者級線程并行執行。

六.多線程模型

1.多對一模型

計算機作業系統學習之使用者級/核心級線程和多線程模型一.概念二.線程帶來的變化三.線程的屬性四.使用者級線程和核心級線程五.線程的實作方式六.多線程模型七.小結
  • 多個使用者級線程映射到一個核心級線程
  • 優點:

    使用者級線程的切換可以直接在使用者态實作,不用切換到核心态,效率高

  • 缺點:

    當一個使用者級線程被阻塞時,整個程序都會被阻塞(因為多對一,對作業系統而言它隻能看到一個核心級程序,當一個使用者級線程阻塞了,該核心級程序也就阻塞了,作業系統就會去處理别的核心級線程),并發度不高。多個線程不可在多核處理機上并行運作。

2.一對一模型

計算機作業系統學習之使用者級/核心級線程和多線程模型一.概念二.線程帶來的變化三.線程的屬性四.使用者級線程和核心級線程五.線程的實作方式六.多線程模型七.小結
  • 一個使用者級線程映射到一個核心級線程
  • 優點:

    當一個線程阻塞時,别的線程還可以繼續執行,并發能力強,多線程可在多核處理機上并行執行

  • 缺點:

    一個使用者程序(注意這是程序)會占用多個核心級線程,線程切換由作業系統核心完成,需要切換到核心态,線程管理的成本高,開銷大。

3.多對多模型

計算機作業系統學習之使用者級/核心級線程和多線程模型一.概念二.線程帶來的變化三.線程的屬性四.使用者級線程和核心級線程五.線程的實作方式六.多線程模型七.小結
  • n個使用者級線程映射到m個核心級線程(n>m)
  • 克服了多對一的并發性不高的問題,也克服了一對一開銷太大的缺點

七.小結

  • 線程就是輕量級程序,就是把程序細分了
  • 有了線程以後,線程就成為了排程的基本機關
  • 使用者級線程就是使用者視角下的線程,與核心牽扯不是很大
  • 核心級線程是作業系統核心視角下的線程,是由核心進行管理的
  • 隻有核心級線程是處理機配置設定的機關,因為作業系統看不到使用者級線程

繼續閱讀