我們能真正從本質上了解執行緒嗎?

2021-10-24 03:14:23 字數 1903 閱讀 7268

開篇總覽——執行緒

cpu依次為程序分配資源,使得程序能夠併發執行。

但是有的程序可能需要「同時」做很多事,而傳統的程序只能序列地執行一系列程式。為此,引入了「執行緒」,來增加併發度。

引入執行緒後,程序只作為除cpu之外地系統資源地分配單位(如印表機、記憶體位址空間等都是分配給程序的)。

對於切換程序或者執行緒的執行環境這一點,我們可以看下面這裡例子來更好地理解。

去圖書館看書:

切換程序執行環境:有乙個不認識的人要用我的桌子,我需要把我的書收走,他把自己的書放到桌子上。

切換執行緒執行環境:我的舍友要用這張桌子,可以不把我的書拿走。

4.1 使用者級執行緒

可以這樣理解,「使用者級執行緒」就是「從使用者視角看能看到的執行緒」。

4.2 核心級執行緒

核心級執行緒的管理工作由作業系統核心完成。執行緒排程、切換等工作都由核心負責,因此核心級執行緒的切換必然需要在核心態下才能完成。

可以這樣理解:「核心級執行緒」就是「從作業系統核心角度看能看到的執行緒」。

在同時支援使用者級執行緒和核心級執行緒的系統中,可採用而這組合的方式:將n個使用者級執行緒對映到m個核心級執行緒上(n > m)

作業系統只 「看得見」 核心級執行緒,因此只有核心級執行緒才是處理機分配的單位

例如上邊這個例子:給程序由兩個核心級執行緒,三個使用者級執行緒,在使用者看來,這個程序中有三個執行緒。但即使該程序在乙個4核處理機的計算機上執行,也最多 只能被分配到兩個核,最多只能有兩個使用者執行緒並行執行。

在同時支援使用者級執行緒和核心級執行緒的系統中,由幾個使用者級執行緒對映到幾個核心級執行緒的問題引出了「多執行緒模型」問題。

多對一模型:多個使用者級執行緒對映到乙個核心級執行緒。每個使用者級程序只對應乙個核心級執行緒。

一對一模型:乙個使用者級執行緒對映到乙個核心級執行緒。每個使用者程序有與使用者級執行緒同數量的核心級執行緒。

多對多模型:n個使用者級執行緒對映到m個核心級執行緒(n > m)。每個使用者程序對應m個核心級執行緒。

克服了多對一模型併發度不高的缺點,有克服了一對一模型中乙個使用者程序占用太多核心級執行緒,開銷太大的缺點。

Android Wear缺少本質上的創新

3月19日,google正式宣布推出面向穿戴領域的android wear 專案,該專案一經推出即受到 的廣泛關注。android wear廣受關注的原因在於,它是第乙個由巨頭推出的面向穿戴領域的 可穿戴作業系統 其次在於它的推出時機,在這個可穿戴市場最火熱又最混亂的時候,它的推出讓人看到希望,也讓...

Android Wear缺少本質上的創新

3月19日,google正式宣布推出面向穿戴領域的android wear 專案,該專案一經推出即受到 的廣泛關注。android wear廣受關注的原因在於,它是第乙個由巨頭推出的面向穿戴領域的 可穿戴作業系統 其次在於它的推出時機,在這個可穿戴市場最火熱又最混亂的時候,它的推出讓人看到希望,也讓...

AUC本質上反應的是分類器對樣本的排序能力

實際上auc和mann whitney u test有密切的聯絡。從 mann whitney u statistic的角度來解釋,auc就是從所有1樣本中隨機選取乙個樣本,quad 從所有0 樣本中隨機選取乙個樣本,然後根據你的分類器對兩個隨機樣本進行 把1樣本 為1的概率 為p1,把0樣本 為1...