王道操作系统考研笔记——2.1.5 线程概念与多线程模型
文章目錄
- 2.1.5 線(xiàn)程概念與多線(xiàn)程模型
- 2.1.5.1 線(xiàn)程的來(lái)源
- 2.1.5.2 線(xiàn)程機(jī)制帶來(lái)的變化
- 2.1.5.3 線(xiàn)程的屬性
- 2.1.5.4 線(xiàn)程的實(shí)現(xiàn)方式
- 2.1.5.5 多線(xiàn)程模型
- 2.1.5.6 小結(jié)
2.1.5 線(xiàn)程概念與多線(xiàn)程模型
2.1.5.1 線(xiàn)程的來(lái)源
在很久以前還沒(méi)有引入進(jìn)程之前,系統(tǒng)中的各個(gè)程序只能串行執(zhí)行。比如你想要邊聽(tīng)歌邊開(kāi)QQ,這是不可能做到的,只能先做一件事再做一件事。
后來(lái)引入進(jìn)程后,系統(tǒng)中的各個(gè)程序可以并發(fā)執(zhí)行。也就是說(shuō),可以同時(shí)聽(tīng)歌和開(kāi)QQ。但是,即使引入了進(jìn)程,也不能在QQ中同時(shí)視頻聊天和傳輸文件。這是因?yàn)椴僮飨到y(tǒng)每一次執(zhí)行都是按照進(jìn)程為單位來(lái)執(zhí)行的。
從上面的例子來(lái)看,進(jìn)程是程序的一次執(zhí)行。但是這些功能顯然不可能是由一個(gè)程序順序處理就能實(shí)現(xiàn)的。
有的進(jìn)程可能需要“同時(shí)做很多事”,而傳統(tǒng)的進(jìn)程只能串行地執(zhí)行一系列程序。為此,引入了線(xiàn)程來(lái)提高并發(fā)度。
在傳統(tǒng)中,進(jìn)程是程序執(zhí)行流的最小單位,也就是說(shuō),CPU每次執(zhí)行任務(wù),最少執(zhí)行一個(gè)進(jìn)程。而后在現(xiàn)在,CPU每次執(zhí)行任務(wù),最少執(zhí)行一個(gè)線(xiàn)程,線(xiàn)程是進(jìn)程的子集。也就是說(shuō),引入線(xiàn)程后,線(xiàn)程成為了程序執(zhí)行流的最小單位。
綜上所述,我們可以把線(xiàn)程理解為“輕量級(jí)進(jìn)程”。線(xiàn)程是一個(gè)基本的CPU執(zhí)行單元,也是程序執(zhí)行流的最小單位。引入線(xiàn)程之后,不僅是進(jìn)程之間可以并發(fā),進(jìn)程內(nèi)的各線(xiàn)程之間也可以并發(fā),從而進(jìn)一步提升了系統(tǒng)的并發(fā)度,使得一個(gè)進(jìn)程內(nèi)也可以并發(fā)處理各種任務(wù)(如QQ視頻、文字聊天、傳文件)。引入線(xiàn)程后,進(jìn)程只作為除CPU之外的系統(tǒng)資源的分配單元(如打印機(jī)、內(nèi)存地址空間等都是分配給進(jìn)程的)。
2.1.5.2 線(xiàn)程機(jī)制帶來(lái)的變化
| 傳統(tǒng)進(jìn)程機(jī)制中,進(jìn)程是資源分配、調(diào)度的基本單位 | 傳統(tǒng)進(jìn)程機(jī)制中,只能進(jìn)程間并發(fā) | 傳統(tǒng)的進(jìn)程間并發(fā),需要切換進(jìn)程的運(yùn)行環(huán)境,系統(tǒng)開(kāi)銷(xiāo)很大。 |
| 引入線(xiàn)程后,進(jìn)程是資源分配的基本單位,線(xiàn)程是調(diào)度的基本單位 | 引入線(xiàn)程后,各線(xiàn)程間也能并發(fā),提高了并發(fā)度 | 線(xiàn)程間并發(fā),如果是同一進(jìn)程內(nèi)的線(xiàn)程切換,則不需要切換進(jìn)程環(huán)境,系統(tǒng)開(kāi)銷(xiāo)小,也就是說(shuō)引入線(xiàn)程后,并發(fā)所帶來(lái)的系統(tǒng)開(kāi)銷(xiāo)減小。 |
切換進(jìn)程環(huán)境的類(lèi)比:
去圖書(shū)館看書(shū)。
切換進(jìn)程運(yùn)行環(huán)境 = 有一個(gè)不認(rèn)識(shí)的人要用桌子,你需要把你的書(shū)(運(yùn)行環(huán)境)收走,他把自己的書(shū)(運(yùn)行環(huán)境)放到桌上。
同一進(jìn)程內(nèi)的線(xiàn)程切換 = 你的舍友要用到這張書(shū)桌,可以不把桌子上的書(shū)收走,因?yàn)榇蠹冶舜苏J(rèn)識(shí)(屬于同一個(gè)進(jìn)程)。
2.1.5.3 線(xiàn)程的屬性
2.1.5.4 線(xiàn)程的實(shí)現(xiàn)方式
用戶(hù)級(jí)線(xiàn)程由應(yīng)用程序通過(guò)線(xiàn)程庫(kù)實(shí)現(xiàn)。所有的線(xiàn)程管理工作都由應(yīng)用程序負(fù)責(zé)(包括線(xiàn)程切換)。用戶(hù)級(jí)線(xiàn)程中,線(xiàn)程切換可以在用戶(hù)態(tài)下即可完成,無(wú)需操作系統(tǒng)干預(yù)。在用戶(hù)看來(lái),是有多個(gè)線(xiàn)程;但是對(duì)于操作系統(tǒng)內(nèi)核來(lái)說(shuō),并意識(shí)不到線(xiàn)程的存在。即用戶(hù)級(jí)線(xiàn)程對(duì)用戶(hù)不透明,對(duì)操作系統(tǒng)透明。
內(nèi)核級(jí)線(xiàn)程(Kernel-Level Thread,KTL,又稱(chēng)為“內(nèi)核支持的線(xiàn)程”)
內(nèi)核級(jí)線(xiàn)程的管理工作由操作系統(tǒng)內(nèi)核完成。線(xiàn)程調(diào)度、切換等工作都由內(nèi)核負(fù)責(zé),因此內(nèi)核級(jí)線(xiàn)程的切換必然需要在核心態(tài)下才能完成。
在同時(shí)支持用戶(hù)級(jí)線(xiàn)程和內(nèi)核級(jí)線(xiàn)程的系統(tǒng)中,可采用兩者組合的方式:將n個(gè)用戶(hù)級(jí)線(xiàn)程映射到m個(gè)內(nèi)核級(jí)線(xiàn)程上(n>=m)
需要重點(diǎn)關(guān)注的是:操作系統(tǒng)只“看得見(jiàn)”內(nèi)核級(jí)線(xiàn)程,因此只有內(nèi)核級(jí)線(xiàn)程才是處理機(jī)分配的單位。
拿上面的映射圖來(lái)說(shuō),該進(jìn)程由兩個(gè)內(nèi)核級(jí)線(xiàn)程和三個(gè)用戶(hù)級(jí)線(xiàn)程構(gòu)成,在用戶(hù)看來(lái),這個(gè)進(jìn)程中有三個(gè)線(xiàn)程。但即使該進(jìn)程在一個(gè)4核處理機(jī)的計(jì)算機(jī)上運(yùn)行,也最多只能被分配到兩個(gè)核,最多只能有兩個(gè)用戶(hù)線(xiàn)程并行執(zhí)行。
2.1.5.5 多線(xiàn)程模型
在同時(shí)支持用戶(hù)級(jí)線(xiàn)程和內(nèi)核級(jí)線(xiàn)程的系統(tǒng)中,由幾個(gè)用戶(hù)級(jí)線(xiàn)程映射到幾個(gè)內(nèi)核級(jí)線(xiàn)程的問(wèn)題引出了“多線(xiàn)程模型”問(wèn)題。
多對(duì)一模型
多個(gè)用戶(hù)及線(xiàn)程映射到一個(gè)內(nèi)核級(jí)線(xiàn)程。每個(gè)用戶(hù)進(jìn)程只對(duì)應(yīng)一個(gè)內(nèi)核級(jí)線(xiàn)程。
優(yōu)點(diǎn):用戶(hù)級(jí)線(xiàn)程的切換在用戶(hù)空間即可完成,不需要切換到核心態(tài),線(xiàn)程管理的系統(tǒng)開(kāi)銷(xiāo)小,效率高。
缺點(diǎn):當(dāng)一個(gè)用戶(hù)級(jí)線(xiàn)程被阻塞后,整個(gè)進(jìn)程都會(huì)被阻塞,并發(fā)度不高。多個(gè)線(xiàn)程不可在多核處理機(jī)上并行運(yùn)行。
一對(duì)一模型
一個(gè)用戶(hù)及線(xiàn)程映射到一個(gè)內(nèi)核級(jí)線(xiàn)程。每個(gè)用戶(hù)進(jìn)程有與用戶(hù)級(jí)線(xiàn)程同數(shù)量的內(nèi)核級(jí)線(xiàn)程。
優(yōu)點(diǎn):當(dāng)一個(gè)線(xiàn)程被阻塞后,別的線(xiàn)程還可以繼續(xù)執(zhí)行,并發(fā)能力強(qiáng),多線(xiàn)程可在多核處理機(jī)上并行執(zhí)行。
缺點(diǎn):一個(gè)用戶(hù)進(jìn)程會(huì)占用多個(gè)內(nèi)核級(jí)線(xiàn)程,線(xiàn)程切換由操作系統(tǒng)內(nèi)核完成,需要切換到核心態(tài),因此線(xiàn)程管理的成本高,開(kāi)銷(xiāo)大。
多對(duì)多模型
n用戶(hù)線(xiàn)程映射到m個(gè)內(nèi)核級(jí)線(xiàn)程(n>=m)。每個(gè)用戶(hù)進(jìn)程對(duì)于m個(gè)內(nèi)核級(jí)線(xiàn)程。
其克服了多對(duì)一模型和一對(duì)多模型的缺點(diǎn)。
2.1.5.6 小結(jié)
這一小節(jié)的知識(shí)點(diǎn)易作為選擇題考查。
總結(jié)
以上是生活随笔為你收集整理的王道操作系统考研笔记——2.1.5 线程概念与多线程模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 八种ADSL接入情况中断流现象分析
- 下一篇: 构建Windows Server 200