關(guān)于什么是進(jìn)程調(diào)度,什么是進(jìn)程這個(gè)問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!
1、什么是系統(tǒng)進(jìn)程 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序;線程是系統(tǒng)分配處理器時(shí)間資源的基本單元,或者說進(jìn)程之內(nèi)獨(dú)立執(zhí)行的一個(gè)單元。
2、對(duì)于操 作系統(tǒng)而言,其調(diào)度單元是線程。
3、一個(gè)進(jìn)程至少包括一個(gè)線程,通常將該線程稱為主線程。
4、一個(gè)進(jìn)程從主線程的執(zhí)行開始進(jìn)而創(chuàng)建一個(gè)或多個(gè)附加線程,就是所謂基于多線程的多任務(wù)。
5、 那進(jìn)程與線程的區(qū)別到底是什么?進(jìn)程是執(zhí)行程序的實(shí)例。
6、例如,當(dāng)你運(yùn)行記事本程序(Nodepad)時(shí),你就創(chuàng)建了一個(gè)用來容納組成Notepad.exe的代碼及其所需調(diào)用動(dòng)態(tài)鏈接庫的進(jìn)程。
7、每個(gè)進(jìn)程均運(yùn)行在其專用且受保護(hù)的地址空間內(nèi)。
8、因此,如果你同時(shí)運(yùn)行記事本的兩個(gè)拷貝,該程序正在使用的數(shù)據(jù)在各自實(shí)例中是彼此獨(dú)立的。
9、在記事本的一個(gè)拷貝中將無法看到該程序的第二個(gè)實(shí)例打開的數(shù)據(jù)。
10、 以沙箱為例進(jìn)行闡述。
11、一個(gè)進(jìn)程就好比一個(gè)沙箱。
12、線程就如同沙箱中的孩子們。
13、孩子們?cè)谏诚渥又信軄砼苋?,并且可能將沙子攘到別的孩子眼中,他們會(huì)互相踢打或撕咬。
14、但是,這些沙箱略有不同之處就在于每個(gè)沙箱完全由墻壁和頂棚封閉起來,無論箱中的孩子如何狠命地攘沙,他們也不會(huì)影響到其它沙箱中的其他孩子。
15、因此,每個(gè)進(jìn)程就象一個(gè)被保護(hù)起來的沙箱。
16、未經(jīng)許可,無人可以進(jìn)出。
17、 實(shí)際上線程運(yùn)行而進(jìn)程不運(yùn)行。
18、兩個(gè)進(jìn)程彼此獲得專用數(shù)據(jù)或內(nèi)存的唯一途徑就是通過協(xié)議來共享內(nèi)存塊。
19、這是一種協(xié)作策略。
20、下面讓我們分析一下任務(wù)管理器里的進(jìn)程選項(xiàng)卡。
21、 這里的進(jìn)程是指一系列進(jìn)程,這些進(jìn)程是由它們所運(yùn)行的可執(zhí)行程序?qū)嵗齺碜R(shí)別的,這就是進(jìn)程選項(xiàng)卡中的第一列給出了映射名稱的原因。
22、請(qǐng)注意,這里并沒有進(jìn)程名稱列。
23、進(jìn)程并不擁有獨(dú)立于其所歸屬實(shí)例的映射名稱。
24、換言之,如果你運(yùn)行5個(gè)記事本拷貝,你將會(huì)看到5個(gè)稱為Notepad.exe的進(jìn)程。
25、它們是如何彼此區(qū)別的呢?其中一種方式是通過它們的進(jìn)程ID,因?yàn)槊總€(gè)進(jìn)程都擁有其獨(dú)一無二的編碼。
26、該進(jìn)程ID由Windows NT或Windows 2000生成,并可以循環(huán)使用。
27、因此,進(jìn)程ID將不會(huì)越編越大,它們能夠得到循環(huán)利用。
28、 第三列是被進(jìn)程中的線程所占用的CPU時(shí)間百分比。
29、它不是CPU的編號(hào),而是被進(jìn)程占用的CPU時(shí)間百分比。
30、此時(shí)我的系統(tǒng)基本上是空閑的。
31、盡管系統(tǒng)看上去每一秒左右都只使用一小部分CPU時(shí)間,但該系統(tǒng)空閑進(jìn)程仍舊耗用了大約99%的CPU時(shí)間。
32、 第四列,CPU時(shí)間,是CPU被進(jìn)程中的線程累計(jì)占用的小時(shí)、分鐘及秒數(shù)。
33、請(qǐng)注意,我對(duì)進(jìn)程中的線程使用占用一詞。
34、這并不一定意味著那就是進(jìn)程已耗用的CPU時(shí)間總和,因?yàn)?,如我們一?huì)兒將看到的,NT計(jì)時(shí)的方式是,當(dāng)特定的時(shí)鐘間隔激發(fā)時(shí),無論誰恰巧處于當(dāng)前的線程中,它都將計(jì)算到CPU周期之內(nèi)。
35、通常情況下,在大多數(shù)NT系統(tǒng)中,時(shí)鐘以10毫秒的間隔運(yùn)行。
36、每10毫秒NT的心臟就跳動(dòng)一下。
37、有一些驅(qū)動(dòng)程序代碼片段運(yùn)行并顯示誰是當(dāng)前的線程。
38、讓我們將CPU時(shí)間的最后10毫秒記在它的帳上。
39、因此,如果一個(gè)線程開始運(yùn)行,并在持續(xù)運(yùn)行8毫秒后完成,接著,第二個(gè)線程開始運(yùn)行并持續(xù)了2毫秒,這時(shí),時(shí)鐘激發(fā),請(qǐng)猜一猜這整整10毫秒的時(shí)鐘周期到底記在了哪個(gè)線程的帳上?答案是第二個(gè)線程。
40、因此,NT中存在一些固有的不準(zhǔn)確性,而NT恰是以這種方式進(jìn)行計(jì)時(shí),實(shí)際情況也如是,大多數(shù)32位操作系統(tǒng)中都存在一個(gè)基于間隔的計(jì)時(shí)機(jī)制。
41、請(qǐng)記住這一點(diǎn),因?yàn)?,有時(shí)當(dāng)你觀察線程所耗用的CPU總和時(shí),會(huì)出現(xiàn)盡管該線程或許看上去已運(yùn)行過數(shù)十萬次,但其CPU時(shí)間占用量卻可能是零或非常短暫的現(xiàn)象,那么,上述解釋便是原因所在。
42、上述也就是我們?cè)谌蝿?wù)管理器的進(jìn)程選項(xiàng)卡中所能看到的基本信息列。
43、 結(jié)束進(jìn)程就是把某個(gè)進(jìn)程給關(guān)掉 除了系統(tǒng)進(jìn)程都可以關(guān)掉 沒有影響 但是你正在使用的軟件的進(jìn)程不要關(guān)否則程序也會(huì)關(guān)掉 比如你用QQ聊天的時(shí)候 進(jìn)程里會(huì)有個(gè)qq.exe 如果關(guān)掉了 QQ也就會(huì)被關(guān)掉 Ctrl+Alt+del 可以打開任務(wù)管理器 在里面可以看到正在運(yùn)行的進(jìn)程 并可以關(guān)閉。
本文分享完畢,希望對(duì)大家有所幫助。
標(biāo)簽:
免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!