OS中線程的實(shí)現(xiàn)有三種,一種是用戶級(jí)線程ULT(UserLevelThreads),一種是內(nèi)核支持線程KST(KernelSupportedThreads)曹傀,還有一種是前兩種的組合方式。
所以我們大可以將OS實(shí)現(xiàn)線程的方式分為兩類,一類是用戶級(jí)宛篇,一類是內(nèi)核級(jí)。這兩類的不同在于用戶級(jí)線程是在用戶空間實(shí)現(xiàn)的薄湿,而內(nèi)核級(jí)線程是在OS內(nèi)核空間實(shí)現(xiàn)的叫倍。設(shè)置用戶級(jí)線程的系統(tǒng),調(diào)度是以進(jìn)程為單位的豺瘤。而設(shè)置了內(nèi)核級(jí)進(jìn)程的而是以線程為單位進(jìn)行調(diào)度的吆倦。
OS內(nèi)核常駐在內(nèi)存中,所以將內(nèi)存空間分為內(nèi)核空間和用戶空間坐求。 線程在內(nèi)核中實(shí)現(xiàn)有以下幾個(gè)好處
a.內(nèi)核可以在多處理器系統(tǒng)中調(diào)度同一進(jìn)程中的多個(gè)線程并行執(zhí)行蚕泽。
b.如果某一個(gè)進(jìn)程中的線程阻塞了,可以跨進(jìn)程調(diào)度其他線程進(jìn)行執(zhí)行
c.線程的切換速度快桥嗤,開銷小须妻。并且內(nèi)核本身支持多線程技術(shù)可以提高系統(tǒng)的執(zhí)行速度和效率。
但是也有個(gè)缺點(diǎn)泛领,當(dāng)用戶將線程交付下來時(shí)要將線程由用戶態(tài)切換為核心態(tài)再進(jìn)行調(diào)度等操作荒吏,因此也會(huì)造成模式切換的開銷較大。
線程在用戶空間實(shí)現(xiàn)的主要優(yōu)點(diǎn):
a.首先線程的切換不需要轉(zhuǎn)換到內(nèi)核空間渊鞋,所以節(jié)省了模式切換的開銷
b.用戶級(jí)線程的實(shí)現(xiàn)和OS平臺(tái)無關(guān)绰更,對(duì)于線程管理的代碼是屬于用戶程序的一部分。用戶級(jí)線程甚至可以在不支持線程機(jī)制的OS上實(shí)現(xiàn)篓像。
用戶級(jí)線程的缺點(diǎn):
一個(gè)進(jìn)程被分配一個(gè)CPU动知,同一時(shí)刻只能有一個(gè)線程運(yùn)行。
若進(jìn)程中的正在運(yùn)行的線程阻塞员辩,則當(dāng)前進(jìn)程的其他線程全被阻塞盒粮。
組合方式: 組合方式綜合前兩種的優(yōu)點(diǎn),分為三種模型:多對(duì)一奠滑、一對(duì)一丹皱、多對(duì)多 簡(jiǎn)單理解下就是 不同數(shù)量的用戶級(jí)線程 搭配
不同數(shù)量的內(nèi)核級(jí)線程妒穴。此處不再做過多的介紹。
以上便是操作系統(tǒng)中線程的實(shí)現(xiàn)