程序是伴隨著多道程式技術而引入的
和程序一樣,執行緒有它的tcb和id,也有就緒,阻塞,執行三種狀態
執行緒幾乎不擁有系統資源,系統資源是分配給程序的,同一程序內的執行緒共享程序的資源
同一程序內的執行緒間切換,不用切換程序環境。
執行緒分為 使用者級執行緒 和 核心級執行緒(即守護執行緒)
使用者級執行緒 由 應用程式 通過 執行緒庫 建立和管理
使用者級執行緒間的切換 也由 應用程式 負責管理(在使用者態下就可以完成)
事實上,對使用者來說,是有多個執行緒,但是對作業系統核心來說,並看不見執行緒的存在。
使用者級執行緒只有使用者能看到,作業系統根本看不到!!!
核心級執行緒 由作業系統負責管理
核心級執行緒的切換 需要在核心態下完成
核心級執行緒 就是 作業系統能看到的
注意: 核心級執行緒 才是 處理機分配的 單位
下圖中的這個程序有三個使用者級程序,兩個核心級執行緒。但即使在乙個四核cpu上,最多只能占用兩個核,只能有兩個使用者執行緒並行執行。
多執行緒模型問題:
所謂多執行緒模型就是指 幾個使用者級執行緒對映到幾個核心級執行緒的問題
多對一模式:多個使用者執行緒對映到乙個核心執行緒
優點:使用者級執行緒 在 使用者態 即可完成切換,開銷小
缺點:併發度低,乙個使用者執行緒阻塞將導致整個程序阻塞。多個執行緒也不能在多處理機上執行
一對一模式:乙個使用者執行緒對應乙個核心級執行緒
優點:併發度高,乙個執行緒阻塞後其它執行緒可以繼續執行
缺點:執行緒切換要在核心態下完成,開銷大
多對多模式:
n個使用者執行緒對映到m個核心執行緒(n>=m)
既克服了 多對一模型中併發度低的缺點,又克服了一對一模型中占用太多核心級執行緒的缺點
回顧:執行緒是處理機排程的單位
核心級執行緒才是作業系統進行處理機分配的單位
多對一模型中,乙個使用者級執行緒阻塞將導致整個程序的阻塞
王道 執行緒概念和多執行緒模型
6 多執行緒模型 在引入程序之前,系統中各個程式只能序列執行 引入程序之後,系統中各個程序之間可以併發執行 有的程序可能需要 同時 做很多事情,而傳統的程序只能序列地執行一系列程式。為此,引入了 執行緒 來增加併發度 傳統的程序是程式執行流的最小單位,也就是說cpu處理的是乙個個程序 在程序中引入了...
6 執行緒的概念和多執行緒模型
系統在建立乙個新進 程時,便為它分配乙個任務資料區 ptda per task data area 其中包括若干個執行緒控制塊tcb空間。只要其所建立的執行緒數目未超過系統的允許值 通常為數十至數百個 系統可再為之分配新的tcb空間 1 執行時系統 2 核心控制線程 輕型程序 light weigh...
多執行緒概念
概念 多執行緒 是指從軟體或者硬體上實現多個執行緒併發執行的技術,多執行緒包括軟體多執行緒和硬體多執行緒。軟體多執行緒 即便處理器只能執行乙個執行緒,作業系統也可以通過快速的在不同執行緒之間進行切換,由於時間間隔很小,來給使用者造成一種多個執行緒同時執行的假象。程序 是指計算機中已執行的程式.並行 ...