區(qū)別與聯(lián)系:
要了解二者的區(qū)別與聯(lián)系哟冬,首先得對(duì)進(jìn)程與線程有一個(gè)宏觀上的了解。
進(jìn)程,是并發(fā)執(zhí)行的程序在執(zhí)行過(guò)程中分配和管理資源的基本單位,是一個(gè)動(dòng)態(tài)概念香府,竟?fàn)幱?jì)算機(jī)系統(tǒng)資源的基本單位。每一個(gè)進(jìn)程都有一個(gè)自己的地址空間声搁,即進(jìn) 程空間或(虛空間)幻捏。進(jìn)程空間的大小 只與處理機(jī)的位數(shù)有關(guān),一個(gè) 16 位長(zhǎng)處理機(jī)的進(jìn)程空間大小為 216 殿遂,而 32 位處理機(jī)的進(jìn)程空間大小為 232 诈铛。進(jìn)程至少有 5 種基本狀態(tài),它們是:初始態(tài)墨礁,執(zhí)行態(tài)幢竹,等待狀態(tài),就緒狀態(tài)恩静,終止?fàn)顟B(tài)焕毫。
線程,在網(wǎng)絡(luò)或多用戶(hù)環(huán)境下驶乾,一個(gè)服務(wù)器通常需要接收大量且不確定數(shù)量用戶(hù)的并發(fā)請(qǐng)求邑飒,為每一個(gè)請(qǐng)求都創(chuàng)建一個(gè)進(jìn)程顯然是行不通的,——無(wú)論是從系統(tǒng)資源 開(kāi)銷(xiāo)方面或是響應(yīng)用戶(hù)請(qǐng)求的效率方面來(lái)看级乐。因此疙咸,操作系統(tǒng)中線程的概念便被引進(jìn)了。線程风科,是進(jìn)程的一部分撒轮,一個(gè)沒(méi)有線程的進(jìn)程可以被看作是單線程的。線程 有時(shí)又被稱(chēng)為輕權(quán)進(jìn)程或輕量級(jí)進(jìn)程贼穆,也是 CPU 調(diào)度的一個(gè)基本單位题山。
說(shuō)到這里,我們對(duì)進(jìn)程與線程都有了一個(gè)大體上的印象故痊,現(xiàn)在開(kāi)始說(shuō)說(shuō)二者大致的區(qū)別顶瞳。
進(jìn)程的執(zhí)行過(guò)程是線狀的,盡管中間會(huì)發(fā)生中斷或暫停,但該進(jìn)程所擁有的資源只為該線狀執(zhí)行過(guò)程服務(wù)慨菱。一 旦發(fā)生進(jìn)程上下文切換焰络,這些資源都是要被保護(hù)起來(lái)的。這是進(jìn)程宏觀上的執(zhí)行過(guò)程抡柿。而進(jìn)程又可有單線程進(jìn)程與多線程進(jìn)程兩種舔琅。我們知道,進(jìn)程有 一個(gè)進(jìn)程控制塊 PCB 洲劣,相關(guān)程序段 和 該程序段對(duì)其進(jìn)行操作的數(shù)據(jù)結(jié)構(gòu)集 這三部分备蚓,單線程進(jìn)程的執(zhí)行過(guò)程在宏觀上是線性的,微觀上也只有單一的執(zhí)行過(guò)程囱稽;而多線程進(jìn)程在宏觀上的執(zhí)行過(guò)程同樣為線性的郊尝,但微觀上卻可以有多個(gè)執(zhí)行 操作(線程),如不同代碼片段以及相關(guān)的數(shù)據(jù)結(jié)構(gòu)集战惊。線程的改變只代表了 CPU 執(zhí)行過(guò)程的改變流昏,而沒(méi)有發(fā)生進(jìn)程所擁有的資源變化。出了 CPU 之外吞获,計(jì)算機(jī)內(nèi)的軟硬件資源的分配與線程無(wú)關(guān)况凉,線程只能共享它所屬進(jìn)程的資源。與進(jìn)程控制表和 PCB 相似各拷,每個(gè)線程也有自己的線程控制表 TCB 刁绒,而這個(gè) TCB 中所保存的線程狀態(tài)信息則要比 PCB 表少得多,這些信息主要是相關(guān)指針用堆棧(系統(tǒng)棧和用戶(hù)棧)烤黍,寄存器中的狀態(tài)數(shù)據(jù)知市。進(jìn)程擁有一個(gè)完整的虛擬地址空間,不依賴(lài)于線程而獨(dú)立存在速蕊;反之嫂丙,線程是進(jìn)程的一部分,沒(méi)有自己的地址空間规哲,與進(jìn)程內(nèi)的其他線程一起共享分配給該進(jìn)程的所有資源跟啤。
線程可以有效地提高系統(tǒng)的執(zhí)行效率,但并不是在所有計(jì)算機(jī)系統(tǒng)中都是適用的唉锌,如某些很少做進(jìn)程調(diào)度和切換的實(shí)時(shí)系統(tǒng)腥光。使用線程的好處是有多個(gè)任務(wù)需要處理 機(jī)處理時(shí),減少處理機(jī)的切換時(shí)間糊秆;而且,線程的創(chuàng)建和結(jié)束所需要的系統(tǒng)開(kāi)銷(xiāo)也比進(jìn)程的創(chuàng)建和結(jié)束要小得多议双。最適用使用線程的系統(tǒng)是多處理機(jī)系統(tǒng)和網(wǎng)絡(luò)系統(tǒng) 或分布式系統(tǒng)痘番。
----------------------------------
1. 線程的執(zhí)行特性。
線程只有 3 個(gè)基本狀態(tài):就緒,執(zhí)行汞舱,阻塞伍纫。
線程存在 5 種基本操作來(lái)切換線程的狀態(tài):派生,阻塞昂芜,激活莹规,調(diào)度,結(jié)束泌神。
2. 進(jìn)程通信良漱。
單機(jī)系統(tǒng)中進(jìn)程通信有 4 種形式:主從式,會(huì)話(huà)式欢际,消息或郵箱機(jī)制母市,共享存儲(chǔ)區(qū)方式。
主從式典型例子:終端控制進(jìn)程和終端進(jìn)程损趋。
會(huì)話(huà)式典型例子:用戶(hù)進(jìn)程與磁盤(pán)管理進(jìn)程之間的通信患久。