計(jì)算機(jī)操作系統(tǒng)線(xiàn)程的概念
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著軟件設(shè)計(jì)技術(shù)的發(fā)展,上述以進(jìn)程為基礎(chǔ)的并發(fā)技術(shù)出現(xiàn)了一系列的問(wèn)題。其中,主要問(wèn)題是系統(tǒng)的并發(fā)程度過(guò)低,系統(tǒng)在進(jìn)行進(jìn)程切換時(shí)的時(shí)間和空間開(kāi)銷(xiāo)過(guò)大。究其原因,就是以進(jìn)程作為分配處理器資源的基本單位顯得過(guò)于龐大和笨重。于是,就促使人們把程序的運(yùn)行過(guò)程再分割為更小的單位----線(xiàn)程,即把一個(gè)進(jìn)程再分割為多個(gè)線(xiàn)程。這樣,應(yīng)用程序在系統(tǒng)中的運(yùn)行過(guò)程就有了兩個(gè)概念:進(jìn)程和線(xiàn)程。
一個(gè)在操作系統(tǒng)管理下的程序,在內(nèi)存中既有一個(gè)代表進(jìn)程的進(jìn)程控制塊,也有多個(gè)代表線(xiàn)程的線(xiàn)程控制塊。當(dāng)然,這些線(xiàn)程控制塊是歸屬于進(jìn)程控制塊的,這兩者之間的關(guān)系可參見(jiàn)圖。
如果把進(jìn)程控制塊看作一個(gè)家庭的檔案,那么線(xiàn)程控制塊就相當(dāng)于家庭成員的檔案。
操作系統(tǒng)在進(jìn)行資源的分配時(shí),對(duì)于存儲(chǔ)空間資源,系統(tǒng)仍然以進(jìn)程為單位來(lái)進(jìn)行分配,而對(duì)于處理器資源則以線(xiàn)程為單位來(lái)進(jìn)行分配。也就是說(shuō),同一個(gè)進(jìn)程中的所有線(xiàn)程共享進(jìn)程的資源,由于線(xiàn)程是基本運(yùn)行單位,因此在線(xiàn)程控制塊中要包含模塊代碼的指針和代碼運(yùn)行時(shí)所需的私有堆棧。
由于線(xiàn)程沒(méi)有獨(dú)占的存儲(chǔ)空間,所以系統(tǒng)在調(diào)度切換線(xiàn)程時(shí),只是考慮如何給線(xiàn)程分配處理器,而無(wú)須考慮其他資源的分配,所以調(diào)度工作所需的時(shí)間開(kāi)銷(xiāo)就小得多。如果把進(jìn)程看作一個(gè)家庭,那么線(xiàn)程就相當(dāng)于家庭成員。顯然,調(diào)動(dòng)一個(gè)家庭成員要比調(diào)動(dòng)一個(gè)家庭容易得多。
擁有多個(gè)線(xiàn)程的進(jìn)程叫做多線(xiàn)程進(jìn)程。一個(gè)多線(xiàn)程進(jìn)程的示意圖如圖所示。
圖 多線(xiàn)程進(jìn)程示意圖
綜上所述,在多線(xiàn)程操作系統(tǒng)中,進(jìn)程是系統(tǒng)分配資源的基本單位,而線(xiàn)程是系統(tǒng)調(diào)度的基本單位。線(xiàn)程是進(jìn)程的組成部分,同一個(gè)進(jìn)程中的所有線(xiàn)程共享這個(gè)進(jìn)程所獲得的資源。
歡迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)()
ks99