操作系统之(一篇文章让你简单搞定:什么是进程和线程)
文章目錄
- 1.為什么引入進(jìn)程
- 2.進(jìn)程究竟是什么?進(jìn)程的定義和屬性:
- 3.進(jìn)程的狀態(tài)和轉(zhuǎn)換
- 4.什么是進(jìn)程上下文
- 5.進(jìn)程的控制和管理
- 6.為什么要引入線程
- 7.線程的概念
- 8.引入線程的好處
- 9.進(jìn)程和線程的區(qū)別
1.為什么引入進(jìn)程
1、我們知道,最早出現(xiàn)的OS系統(tǒng)是單道批處理系統(tǒng),它是順序執(zhí)行程序的,即一個(gè)一個(gè)地按先到先執(zhí)行的順序依次執(zhí)行。
作業(yè)運(yùn)行過程中如果發(fā)生I/O請求,高速的CPU便需要等待低速的I/O操作完成,導(dǎo)致CPU資源利用率和系統(tǒng)吞吐量降低。
2、 而后為了緩解這個(gè)矛盾,人們引入了多道批處理系統(tǒng),該系統(tǒng)讓程序宏觀上并發(fā)執(zhí)行,即在一道程序發(fā)起I/O請求時(shí)CPU不再選擇等待I/O完全運(yùn)行結(jié)束,而是當(dāng)一道程序因I/O請求而暫停運(yùn)行時(shí),CPU便立即轉(zhuǎn)去運(yùn)行另一道程序,用戶既不能了解自己程序的運(yùn)行情況,也不能控制計(jì)算機(jī)【因?yàn)槿f一有其中一道程序根本不會占用CPU資源,但是系統(tǒng)還是會給它分配了同等的資源,所以根本不能達(dá)到人工控制】
3、再然后就誕生了分時(shí)操作系統(tǒng),把處理器的運(yùn)行時(shí)間分成很短的時(shí)間片,按時(shí)間片輪流把處理器分配給各聯(lián)機(jī)作業(yè)使用。若某個(gè)作業(yè)在分配給它的時(shí)間片內(nèi)不能完成其計(jì)算,則該作業(yè)暫時(shí)停止運(yùn)行,把處理器讓給其他作業(yè)使用,等待下一輪再繼續(xù)運(yùn)行;將程序分成一小片一小片的,這個(gè)進(jìn)程執(zhí)行一點(diǎn),那個(gè)進(jìn)程執(zhí)行一點(diǎn)。雖然在內(nèi)部進(jìn)程的執(zhí)行是一段一段的,但是CPU的速度很快的(速度都是納秒級別的),所以我們是感受不到進(jìn)程執(zhí)行過程中的停頓。
解釋:
1.上面的簡單操作系統(tǒng)通過一些系統(tǒng)指令去操作程序,然而程序本身也是一組指令的集合,指令操作指令,這是一個(gè)靜態(tài)的概念,無法描述程序在內(nèi)存中的執(zhí)行情況,即我們無法從程序的字面上看出它何時(shí)執(zhí)行,何時(shí)停頓,也無法看出它與其它執(zhí)行程序的關(guān)系。
2.多道程序在執(zhí)行時(shí),需要共享系統(tǒng)資源,從而導(dǎo)致各程序在執(zhí)行過程中出現(xiàn)相互制約的關(guān)系,程序的執(zhí)行表現(xiàn)出間斷性的特征.這些特征都是在程序的執(zhí)行過程中發(fā)生的,是動態(tài)的過程。
3.程序這個(gè)靜態(tài)概念已不能如實(shí)反映程序并發(fā)執(zhí)行過程的特征.**為了深刻描述程序動態(tài)執(zhí)行過程的性質(zhì),**人們引入“進(jìn)程(Process)”概念。
4.引入進(jìn)程想要實(shí)現(xiàn)的目標(biāo)是什么呢?
-資源對多個(gè)應(yīng)用程序是可用的;
-物理處理器在多個(gè)應(yīng)用程序間切換以保障所有程序都在執(zhí)行中;
-處理器和IO設(shè)備能得到充分利用。
5.所有現(xiàn)代操作系統(tǒng)采用的方法都是依據(jù)對應(yīng)于一個(gè)或多個(gè)進(jìn)程存在的應(yīng)用程序執(zhí)行的一種模型。
2.進(jìn)程究竟是什么?進(jìn)程的定義和屬性:
程序是一個(gè)沒有生命的實(shí)體,只有處理器賦予程序生命時(shí),它才能成為一個(gè)活動的實(shí)體,我們稱其為進(jìn)程
1、從理論角度看:進(jìn)程是對正在運(yùn)行的程序過程的抽象;
怎么理解這句話呢
正在運(yùn)行的程序過程的抽象
你想象一下你在打LOL程序的時(shí)候,電腦需要把程序抽象成進(jìn)程進(jìn)行管理,什么時(shí)候操作什么指令。
從實(shí)現(xiàn)角度看:是一種數(shù)據(jù)結(jié)構(gòu),目的在于清晰地刻劃動態(tài)系統(tǒng)的內(nèi)在規(guī)律,有效管理和調(diào)度進(jìn)入計(jì)算機(jī)系統(tǒng)主存儲器運(yùn)行的程序。
2、上面的話也許有點(diǎn)難以理解,那是因?yàn)闆]了解它的狹義和廣義定義:
狹義定義:進(jìn)程就是一段程序的執(zhí)行過程。
?
廣義定義【官方定義】:進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進(jìn)程既是基本的分配單元,也是基本的執(zhí)行單元。
仔細(xì)看就會發(fā)現(xiàn),進(jìn)程的目的是在于清晰地刻畫動態(tài)系統(tǒng)的內(nèi)在規(guī)律,進(jìn)而才能有效管理和調(diào)度進(jìn)入計(jì)算機(jī)系統(tǒng)主存儲器運(yùn)行的程序
進(jìn)程的定義總結(jié)為一句話:一個(gè)執(zhí)行中的程序的實(shí)例!
進(jìn)程提供給應(yīng)用程序的關(guān)鍵抽象:
①進(jìn)程是一個(gè)獨(dú)立的邏輯控制流,它提供一個(gè)假象,好像我們的程序獨(dú)占地使用處理器。
②進(jìn)程是一個(gè)私有的地址空間,它提供一個(gè)假象,好像我們的程序獨(dú)占地使用存儲器系統(tǒng)。
3、進(jìn)程的一般特征:
**動態(tài)性:**進(jìn)程的實(shí)質(zhì)是程序在多道程序系統(tǒng)中的一次執(zhí)行過程,進(jìn)程是動態(tài)產(chǎn)生,動態(tài)消亡的。【這個(gè)很關(guān)鍵】
**并發(fā)性:**任何進(jìn)程都可以同其他進(jìn)程一起并發(fā)執(zhí)行
**獨(dú)立性:**進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單位,同時(shí)也是系統(tǒng)分配資源和調(diào)度的獨(dú)立單位;【這個(gè)也很關(guān)鍵】
**異步性:**由于進(jìn)程間的相互制約,使進(jìn)程具有執(zhí)行的間斷性,即進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)
4、進(jìn)程的結(jié)構(gòu)特征:進(jìn)程由進(jìn)程控制塊【PCB】、數(shù)據(jù)段和正文段三部分組成:
進(jìn)程控制塊(PCB):進(jìn)程控制塊包含了充分的信息,這樣就可以中斷一個(gè)進(jìn)程的執(zhí)行,并且在后來恢復(fù)執(zhí)行進(jìn)程時(shí)就好像進(jìn)程未被中斷過一樣。PCB是進(jìn)程存在的唯一標(biāo)志,PCB與進(jìn)程同生死。系統(tǒng)創(chuàng)建進(jìn)程時(shí)會產(chǎn)生一個(gè)PCB,撤銷進(jìn)程時(shí),PCB也自動消失。
數(shù)據(jù)段系統(tǒng)把進(jìn)程的數(shù)據(jù)段又劃分成三部分:
用戶棧區(qū)(供用戶程序使用的信息區(qū));
用戶數(shù)據(jù)區(qū)(包括用戶工作數(shù)據(jù)和非可重入的程序段);
系統(tǒng)數(shù)據(jù)區(qū)(包括系統(tǒng)變量和對換信息)。
正文段能被若干進(jìn)程共享,為了管理可共享的正文段,UNIX設(shè)置了一張正文表,每個(gè)正文段都占用一個(gè)表目,用來指出該正文段在內(nèi)存和磁盤上的位置、段的大小以及調(diào)用該段的進(jìn)程數(shù)等情況。
**注意:**多個(gè)不同的進(jìn)程可以包含相同的程序:一個(gè)程序在不同的數(shù)據(jù)集里就構(gòu)成不同的進(jìn)程,能得到不同的結(jié)果;
但是執(zhí)行過程中,程序不能發(fā)生改變。
可以這么說:進(jìn)程 = 程序代碼 + 相關(guān)數(shù)據(jù) + 進(jìn)程控制塊
3.進(jìn)程的狀態(tài)和轉(zhuǎn)換
進(jìn)程的三種基本狀態(tài):
**1. 就緒狀態(tài):**進(jìn)程已獲得除處理器外的所需資源,等待分配處理器資源;只要分配了處理器進(jìn)程就可執(zhí)行。就緒進(jìn)程可以按多個(gè)優(yōu)先級來劃分隊(duì)列。例如,當(dāng)一個(gè)進(jìn)程由于時(shí)間片用完而進(jìn)入就緒狀態(tài)時(shí),排入低優(yōu)先級隊(duì)列;當(dāng)進(jìn)程由I/O操作完成而進(jìn)入就緒狀態(tài)時(shí),排入高優(yōu)先級隊(duì)列。
???**2. 運(yùn)行狀態(tài):**進(jìn)程占用處理器資源;處于此狀態(tài)的進(jìn)程的數(shù)目小于等于處理器的數(shù)目。在沒有其他進(jìn)程可以 執(zhí)行時(shí)(如所有進(jìn)程都在阻塞狀態(tài)),通常會自動執(zhí)行系統(tǒng)的空閑進(jìn)程。
? ?**3. 阻塞狀態(tài):**由于進(jìn)程等待某種條件(如I/O操作或進(jìn)程同步),在條件滿足之前無法繼續(xù)執(zhí)行。該事件發(fā)生 前即使把處理機(jī)分配給該進(jìn)程,也無法運(yùn)行。
? ?
進(jìn)程狀態(tài)的轉(zhuǎn)換:
? ?
運(yùn)行—>就緒:這是由資源調(diào)度引起的,主要是進(jìn)程占用CPU的時(shí)間過長,人家嫌棄它就讓它去等待一下
就緒—>運(yùn)行:運(yùn)行的進(jìn)程的時(shí)間片用完,調(diào)度就轉(zhuǎn)到就緒隊(duì)列中選擇合適的進(jìn)程分配CPU
運(yùn)行—>阻塞:發(fā)生了I/O請求或等待某件事的發(fā)生,突然就有別的請求發(fā)生,導(dǎo)致運(yùn)行變阻塞
阻塞—>就緒:進(jìn)程所等待的事件發(fā)生,就進(jìn)入就緒隊(duì)列【隊(duì)列是先進(jìn)先出的表】
這里可以比喻成去超市排隊(duì)買菜,【運(yùn)行—>就緒】攤位只有一個(gè)窗口的時(shí)候一次性只能和一個(gè)人買菜,買菜時(shí)間太久了就一邊去繼續(xù)排隊(duì),排隊(duì)的過程其實(shí)就是就緒狀態(tài),【就緒—>運(yùn)行】輪到你了才可以再次購買,【運(yùn)行—>阻塞】當(dāng)你正在窗口前買菜的時(shí)候,突然有人插隊(duì)了,直接推開你,【阻塞—>就緒】這時(shí)候你只能重新去排隊(duì),誰讓插隊(duì)那個(gè)人比較霸道。
以上4種情況可以相互正常轉(zhuǎn)換,不是還有兩種情況嗎?
阻塞–>運(yùn)行:即使給阻塞進(jìn)程分配CPU,也無法執(zhí)行,操作系統(tǒng)載進(jìn)行調(diào)度時(shí)不會載阻塞隊(duì)列進(jìn)行挑選,其調(diào)度的選擇對象為就緒隊(duì)列:
就緒–>阻塞:因?yàn)榫途w態(tài)根本就沒有執(zhí)行,何來進(jìn)入阻塞態(tài)?
這里可以比喻成,你去超市買菜的時(shí)候,看到很多很多人在排隊(duì)買菜,【阻塞–>運(yùn)行】你想強(qiáng)制插隊(duì)進(jìn)去窗口直接買菜,但是排隊(duì)的人就不同意了,同樣,【就緒–>阻塞】你在排隊(duì)買菜的時(shí)候快排到自己了會考慮強(qiáng)制插隊(duì)嗎?
4.什么是進(jìn)程上下文
一開始小編也是很疑惑,什么是上下文,上面和下面的內(nèi)容嗎?其實(shí)不然,我們都知道萬物必有因果,有上文才有下文,因此
操作系統(tǒng)中把進(jìn)程運(yùn)行的時(shí)的物理實(shí)體和運(yùn)行的環(huán)境合稱為進(jìn)程上下文
△那么進(jìn)程上下文我們知道其實(shí)是系統(tǒng)運(yùn)行時(shí)提供的環(huán)境了,系統(tǒng)調(diào)度新進(jìn)程占有處理器【可以暫時(shí)看做CPU】的時(shí)候,新老進(jìn)程隨之發(fā)生上下文切換,這個(gè)上下文是什么概念呢?老進(jìn)程退出處理器的時(shí)候需要先保存其退出運(yùn)行環(huán)境,然后退出,也就是說保存其退出進(jìn)程上下文,然后退出處理器,這時(shí)候新進(jìn)程要進(jìn)來處理器了,為了適應(yīng)處理器的環(huán)境,新進(jìn)程需要先創(chuàng)建新的運(yùn)行環(huán)境,也就是說先創(chuàng)建新的進(jìn)程上下文。新老進(jìn)程發(fā)生上下文切換,進(jìn)程的運(yùn)行被認(rèn)為是在上下文中執(zhí)行。
進(jìn)程切換的步驟:
1.保存中斷進(jìn)程的處理器現(xiàn)場情況
2.修改被中斷進(jìn)程的進(jìn)程控制塊有關(guān)信息,相當(dāng)于創(chuàng)建一個(gè)新的上下文環(huán)境
3.把被中斷進(jìn)程的PCB加入有關(guān)隊(duì)列
4.選擇下一個(gè)占有處理器運(yùn)行的進(jìn)程,這時(shí)候新進(jìn)程要準(zhǔn)備進(jìn)來了,因?yàn)榈诙揭呀?jīng)為它創(chuàng)建好了環(huán)境
5.修改被選中進(jìn)程的PCB的有關(guān)信息
6.設(shè)置被選中進(jìn)程的地址空間,回復(fù)存儲管理信息
7.根據(jù)被選中進(jìn)程的上下文信息恢復(fù)處理器現(xiàn)場
8.處理器開始新的進(jìn)程處理
怎么樣,是不是覺得進(jìn)程的切換很簡單。
5.進(jìn)程的控制和管理
上面說了進(jìn)程從何而來,進(jìn)程有什么定義,進(jìn)程有什么狀態(tài)的切換,進(jìn)程切換的進(jìn)程上下文是什么…說了這些,相信你一定很好奇,進(jìn)程這么厲害,那么進(jìn)程是如何控制,誰來控制的呢?
進(jìn)程是由處理器控制,控制的內(nèi)容包括:進(jìn)程創(chuàng)建、進(jìn)程撤銷、進(jìn)程阻塞和喚醒進(jìn)程等,這種功能由操作系統(tǒng)中的原語實(shí)現(xiàn)
原語是什么呢?
原語是在管態(tài)下執(zhí)行的,就是有管理員權(quán)限的時(shí)候執(zhí)行,這個(gè)原語和我們所學(xué)的機(jī)器指令類似,其特點(diǎn)就是執(zhí)行過程中不允許被中斷,是一個(gè)不可分割的基本單位,執(zhí)行的時(shí)候是順序的不是并發(fā)的。
因此進(jìn)程有兩種執(zhí)行模式:
一種是:非特權(quán)態(tài)常稱為用戶態(tài)/目態(tài),這是因?yàn)橛脩舫绦蛲ǔT谠撃J较逻\(yùn)行
另一種是特權(quán)態(tài)可稱為系統(tǒng)態(tài)/內(nèi)核態(tài)/管態(tài)
既然知道了處理器可以進(jìn)行進(jìn)程的控制,現(xiàn)在,我們用掌握的知識創(chuàng)建一個(gè)進(jìn)程吧
步驟:給新進(jìn)程分配一個(gè)唯一的進(jìn)程標(biāo)識符->給進(jìn)程分配空間->初始化進(jìn)程控制塊PCB->設(shè)置正確的連接->創(chuàng)建或擴(kuò)充其他數(shù)據(jù)結(jié)構(gòu)
創(chuàng)建成功后假設(shè)計(jì)算機(jī)里面有很多進(jìn)程該如何切換呢?
步驟:在某一時(shí)刻,一個(gè)正在運(yùn)行的進(jìn)程被中斷,操作系統(tǒng)指定另一個(gè)進(jìn)程為運(yùn)行態(tài),并把控制權(quán)交給這個(gè)進(jìn)程
這時(shí)候系統(tǒng)不需要一個(gè)進(jìn)程該如何撤銷呢?
進(jìn)程的阻塞和喚醒:
1.引起進(jìn)程阻塞和喚醒的事件
1)請求系統(tǒng)服務(wù)
2)啟動某種操作
3)新數(shù)據(jù)尚未到達(dá)
4)無新工作可做
2.進(jìn)程阻塞過程:
正在執(zhí)行的進(jìn)程,當(dāng)發(fā)現(xiàn)上述某事件后,由于無法繼續(xù)執(zhí)行,于是進(jìn)程便通過調(diào)用阻塞原語block把自己阻塞。可見,進(jìn)程的阻塞是進(jìn)程自身的一種主動行為。進(jìn)入block過程后,由于此時(shí)該進(jìn)程還處于執(zhí)行狀態(tài),所以應(yīng)先立即停止執(zhí)行,把進(jìn)程控制塊中的現(xiàn)行狀態(tài)由執(zhí)行改為阻塞,并將PCB插入阻塞隊(duì)列。如果系統(tǒng)中設(shè)置了因不同事件而阻塞的多個(gè)阻塞隊(duì)列,則應(yīng)將本進(jìn)程插入到具有相同事件的阻塞 (等待)隊(duì)列。最后,轉(zhuǎn)調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另一就緒進(jìn)程,并進(jìn)行切換,亦即, 保留被阻塞進(jìn)程的處理機(jī)狀態(tài)(在PCB中),再按新進(jìn)程的PCB中的處理機(jī)狀態(tài)設(shè)置CPU環(huán)境。
3.進(jìn)程喚醒過程:
當(dāng)被阻塞的進(jìn)程所期待的事件出現(xiàn)時(shí),如I/O完成或者其所期待的數(shù)據(jù)已經(jīng)到達(dá),則由有關(guān)進(jìn)程(比如, 用完并釋放了該I/O設(shè)備的進(jìn)程)調(diào)用喚醒原語wakeup(),將等待該事件的進(jìn)程喚醒。喚醒原語執(zhí)行的過程是:首先把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該P(yáng)CB插入到就緒隊(duì)列中。
6.為什么要引入線程
前面所學(xué)的進(jìn)程我們了解到,創(chuàng)建和切換進(jìn)程的時(shí)候既有進(jìn)程上下文環(huán)境初始化,又有進(jìn)程退出處理器時(shí)要保存其進(jìn)程結(jié)束的上下文環(huán)境,這樣對系統(tǒng)的時(shí)間空間開銷都很大,效率很低,這時(shí)候,圍繞著效率低這件事情,我們引入線程的概念,以小的開銷來提高進(jìn)程內(nèi)的并發(fā)程度。
那么要提高效率,我們提供了一種基本思路:
- 把進(jìn)程的兩項(xiàng)功能①獨(dú)立分配資源②被調(diào)度分派執(zhí)行進(jìn)行分離
- 進(jìn)程作為系統(tǒng)資源分配和保護(hù)的獨(dú)立單位,不需要頻繁地切換和加載
- 線程作為系統(tǒng)調(diào)度和分派執(zhí)行的基本單位,會被頻繁地調(diào)度和切換
7.線程的概念
線程是進(jìn)程內(nèi)的一個(gè)相對獨(dú)立的可執(zhí)行單元;
線程是操作系統(tǒng)中的基本調(diào)度單元,在線程中包含調(diào)度所需的信息。
一個(gè)進(jìn)程至少有一個(gè)線程,可有多個(gè)線程。
線程并不擁有資源,而是共享和使用包含它的進(jìn)程所擁有的所有資源。
線程在需要時(shí)也可創(chuàng)建其他線程。線程有自己的生命期,也有狀態(tài)變化。
和進(jìn)程一樣,進(jìn)程有進(jìn)程控制塊【PCB】里面存儲了充分被調(diào)用的信息,因此,每一個(gè)線程都有一個(gè)線程控制塊【thread】,用于保護(hù)自己私有信息,主要由四個(gè)基本部分組成:
一個(gè)唯一的線程標(biāo)識符 、一組寄存器 、兩個(gè)棧指針 、一個(gè)私有存儲區(qū)
為什么線程又被叫做輕量級進(jìn)程呢?
線程運(yùn)行在進(jìn)程的上下文中,并共享使用進(jìn)程的資源和環(huán)境。
系統(tǒng)調(diào)度的基本單位是線程而不是進(jìn)程,每當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),至少要同時(shí)為該進(jìn)程創(chuàng)建一個(gè)線程。
線程狀態(tài)有:運(yùn)行、就緒、等待和終止,狀態(tài)轉(zhuǎn)換也類似于進(jìn)程。
線程必須在某個(gè)進(jìn)程內(nèi)執(zhí)行,一個(gè)進(jìn)程可以包含一個(gè)線程或多個(gè)線程
8.引入線程的好處
1.兩個(gè)線程的調(diào)度切換方便:線程是調(diào)度的基本單位,進(jìn)程是資源的擁有單位。
2.進(jìn)程可以由一個(gè)或多個(gè)線程組成。在同一進(jìn)程中,線程的切換不會引起進(jìn)程的切換,不同進(jìn)程間的線程切換則會引起進(jìn)程切換。
3.共享同一地址空間資源:不同進(jìn)程間的地址空間是相對獨(dú)立的,而同一進(jìn)程的各線程共享同一地址空間,可訪問其隸屬的進(jìn)程資源。
4.線程通信方便:同一進(jìn)程內(nèi)的線程共享內(nèi)存和文件,因此它們之間可以相互通信,無須調(diào)用內(nèi)核。
5.占用資源少:線程除了必不可少的一點(diǎn)資料 (私有堆棧和程序計(jì)數(shù)器)外,自己不擁有系統(tǒng)資源.
9.進(jìn)程和線程的區(qū)別
1.進(jìn)程是cpu資源分配的最小單位,線程是cpu調(diào)度的最小單位。以前進(jìn)程既是資源分配也是調(diào)度的最小單位,后來為了更合理的使用cpu(實(shí)際上是cpu性能越來越好),才將資源分配和調(diào)度分開,就有了線程。線程是建立在進(jìn)程的基礎(chǔ)上的一次程序運(yùn)行單位。
2.進(jìn)程是應(yīng)用程序的執(zhí)行實(shí)例。比如說,當(dāng)你雙擊的Microsoft Word的圖標(biāo),你就開始運(yùn)行的Word的進(jìn)程。線程是執(zhí)行進(jìn)程中的路徑。另外,一個(gè)過程可以包含多個(gè)線程。啟動Word時(shí),操作系統(tǒng)創(chuàng)建一個(gè)進(jìn)程并開始執(zhí)行該進(jìn)程的主線程。由于一個(gè)進(jìn)程可以由多個(gè)線程,線程可以被認(rèn)為是“輕量級”的過程。【參考】
內(nèi)核不知道線程的活動,但仍然管理線程的進(jìn)程的活動。當(dāng)線程調(diào)用系統(tǒng)調(diào)用時(shí),整個(gè)進(jìn)程阻塞,但對線程庫來說,線程仍然是運(yùn)行狀態(tài),即線程狀態(tài)是與進(jìn)程狀態(tài)獨(dú)立的。
總結(jié)
以上是生活随笔為你收集整理的操作系统之(一篇文章让你简单搞定:什么是进程和线程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssms没有弹出服务器验证_使用SSMS
- 下一篇: 现代操作系统初理解