操作系统(十二)线程的实现方式、多线程模型
生活随笔
收集整理的這篇文章主要介紹了
操作系统(十二)线程的实现方式、多线程模型
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2.1.6 線程的實現(xiàn)方式、多線程模型
目錄
2.1.6 線程的實現(xiàn)方式、多線程模型
2.1.6.1 線程的實現(xiàn)方式
2.1.6.2 多線程模型
2.1.6.1 線程的實現(xiàn)方式
? 線程已在許多系統(tǒng)中實現(xiàn),但各系統(tǒng)的實現(xiàn)方式并不完全相同。在有的系統(tǒng)中,特別是一些數(shù)據(jù)庫管理系統(tǒng),所實現(xiàn)的是用戶級線程;而另一些系統(tǒng)所實現(xiàn)的是內(nèi)核級線程; 還有一些系統(tǒng)如 Solaris 操作系統(tǒng),則同時實現(xiàn)了這兩種類型的線程。? 用戶級線程:在早期的操作系統(tǒng)中只支持進程還不支持線程,線程這一功能的實現(xiàn)是采取代碼書寫的線程庫來實現(xiàn)的。 ? 在這時,“線程”其實就是一行行代碼,線程庫的實現(xiàn)就類似于代碼的調(diào)用,因此此時的用戶級線程就運行在用戶態(tài)中。下面這個代碼中while語句的作用實際就相當于線程庫。 int main(){int num;while(true){if(num==1){線程1;}if(num==2){線程2;}if(num==3){線程3;}} } ? 根據(jù)上面這種圖我們可以看出,用戶級線程的管理工作(創(chuàng)建,切換,撤銷等)均有應用程序來完成,不需要操作系統(tǒng)的介入。從用戶的角度來看,確實可以感受到多個線程的存在(因為有直觀的代碼邏輯),但是在操作系統(tǒng)看來,操作系統(tǒng)并意識不到有多個用戶級線程的存在。所以,“用戶級線程”就是“從用戶視角看能看到的線程”。 這種用戶級線程的優(yōu)點十分明顯:進程切換較快,線程管理的系統(tǒng)開銷較小,效率高。但是如果某一線程被阻塞了,那么整個進程都會停滯不前,而且因為用戶級線程是用代碼書寫的所以這些代碼不能在多核處理機上并發(fā),只能在一個處理及上執(zhí)行,這也是用戶級線程的一個缺點。 內(nèi)核級線程:無論是用戶進程中的線程,還是系統(tǒng)進程中的線程,他們的創(chuàng)建、撤消和切換等也是依靠內(nèi)核,在內(nèi)核空間實現(xiàn)的。 相較于用戶級線程,從下圖中我們可以看到:內(nèi)核級線程的管理工作(創(chuàng)建,切換,撤銷等)均有操作系統(tǒng)內(nèi)核來完成,所以內(nèi)核級線程的切換必須進入核心態(tài)才能完成。每個內(nèi)核級線程都會有一個TCB(Thread Control Block,線程控制塊),通過TCB操作系統(tǒng)可以對內(nèi)核級線程進行管理,所以,“內(nèi)核級線程”就是“從操作系統(tǒng)內(nèi)核視角看能看到的線程”。?與用戶級線程的優(yōu)缺點正好相反,內(nèi)核級線程的缺點是進程切換較慢,線程管理的系統(tǒng)開銷較大。同時如果某一線程被阻塞了,別的線程可以繼續(xù)并發(fā)執(zhí)行,同時不同的線程還可以進入不同的處理機運行,這是他的優(yōu)點。
2.1.6.2 多線程模型
? 一對一模型:該模型是為每一個用戶線程都設(shè)置一個內(nèi)核控制線程與之連接,當一個線程阻塞時,允許調(diào)度另一個線程運行。在多處理機系統(tǒng)中,則有多個線程并行執(zhí)行。該模型并行能力較強,但每創(chuàng)建一個用戶線程相應地就需要創(chuàng)建一個內(nèi)核線程,開銷較大,因此需要限制整個系統(tǒng)的線程數(shù)。
多對一模型:多個用戶級線程映射到一個內(nèi)核級線程。且一個進程只被分配一個內(nèi)核級線程。
? 該模型的主要優(yōu)點是線程管理的開銷小,效率高;但當一個線程在訪問內(nèi)核時發(fā)生阻塞,則整個進程都會被阻塞,而且在多處理機系統(tǒng)中,一個進程的多個線程無法實現(xiàn)并行。? 這里我們需要知道:操作系統(tǒng)只“看得見”內(nèi)核級線程,因此只有內(nèi)核級線程才是處理機分配的單位。
? 多對多模型:用戶級線程映射到 m 個內(nèi)核級線程(n >= m)。每個用戶進程對應 m 個內(nèi)核級線程。
對于這個多對多模型,一個線程阻塞并不會引起整個進程阻塞,只有這兩個線程同時阻塞才會將進程阻塞,因此多對多線程模型的并發(fā)性較好。因為內(nèi)核級線程才是處理機分配的基本單位,所以這個多對多模型最多被分配兩個處理機。總結(jié)
以上是生活随笔為你收集整理的操作系统(十二)线程的实现方式、多线程模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统(十一)线程的概念和特点
- 下一篇: 操作系统(十三)处理机调度的概念、层次