進(jìn)程的定義和特征
在多道程序環(huán)境下,程序的執(zhí)行屬于并發(fā)執(zhí)行樟插,此時(shí)它們將失去其封閉性,并具
有間斷性失息,以及運(yùn)行結(jié)果不可再現(xiàn)的特性凭语。為了使參與并發(fā)執(zhí)行的每個(gè)程序都能
獨(dú)立地運(yùn)行峭范,在操作系統(tǒng)中有一個(gè)與之相配的數(shù)據(jù)結(jié)構(gòu)墓造,稱為進(jìn)程控制塊.
(Process Control Block,PCB).操作系統(tǒng)利用PCB來描述進(jìn)程的基本情況和活動(dòng)
過程杏愤,進(jìn)而控制和管理進(jìn)程。這樣推掸,由程序段桶蝎、相關(guān)的數(shù)據(jù)段和PCB三部分便
構(gòu)成了進(jìn)程實(shí)體(又稱進(jìn)程映像)。一般情況下谅畅,我們把進(jìn)程實(shí)體就簡(jiǎn)稱為進(jìn)程
例如,所謂創(chuàng)建進(jìn)程就是創(chuàng)建進(jìn)程中的PCB噪服;而撤銷進(jìn)程就是撤銷進(jìn)程的PCB
進(jìn)程的定義:
1.進(jìn)程是程序的一次執(zhí)行
2.進(jìn)程是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時(shí)所發(fā)生的活動(dòng)毡泻。
3.進(jìn)程是具有獨(dú)立功能的程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程,它是系統(tǒng)進(jìn)行資源
分配和調(diào)度的一個(gè)獨(dú)立單位粘优。
傳統(tǒng)os的進(jìn)程定義為:進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過程仇味,是系統(tǒng)進(jìn)行資源分配和調(diào)度的
一個(gè)獨(dú)立單位。
進(jìn)程的特征
1.動(dòng)態(tài)性雹顺。進(jìn)程的實(shí)質(zhì)是進(jìn)程實(shí)體的執(zhí)行過程丹墨。由創(chuàng)建而生,調(diào)度而執(zhí)行嬉愧,撤銷而消亡贩挣。
2.并發(fā)性。是指多個(gè)進(jìn)程實(shí)體同存于內(nèi)存中没酣,且能在一段時(shí)間內(nèi)同時(shí)運(yùn)行王财。
3.獨(dú)立性。是指進(jìn)程實(shí)體是一個(gè)能獨(dú)立運(yùn)行裕便、獨(dú)立獲得資源和獨(dú)立接受調(diào)度的基本單位绒净。未建立PCB的程序都不能作為一個(gè)獨(dú)立的單位參與運(yùn)行。
4.異步性偿衰。即進(jìn)程按各自獨(dú)立的挂疆、不可預(yù)知的速度向前推進(jìn)。
進(jìn)程的基本狀態(tài)及轉(zhuǎn)換
進(jìn)程的三種基本狀態(tài)
1.就緒狀態(tài)下翎。萬事俱備缤言,只欠CPU。
2.執(zhí)行狀態(tài)漏设。進(jìn)程已獲cpu墨闲,程序正在執(zhí)行。
3.阻塞狀態(tài)郑口。若處于執(zhí)行狀態(tài)的進(jìn)程發(fā)生如IO鸳碧,申請(qǐng)緩沖區(qū)失敗盾鳞,暫時(shí)無法繼續(xù)執(zhí)
行的狀態(tài)。此時(shí)引起進(jìn)程調(diào)度瞻离,OS把處理機(jī)分配給另一個(gè)就緒進(jìn)程腾仅,讓受阻進(jìn)
程處于暫停狀態(tài)。
三種基本狀態(tài)的轉(zhuǎn)換
Paste_Image.png
創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)
1.創(chuàng)建狀態(tài):進(jìn)程是由創(chuàng)建而生
首先由進(jìn)程申請(qǐng)一個(gè)空白PCB套利,并向PCB中填寫用于控制和管理進(jìn)程的信息推励;
然后為該進(jìn)程分配運(yùn)行時(shí)所必須的資源;最后肉迫,把該進(jìn)程轉(zhuǎn)入就緒狀態(tài)并插入
就緒隊(duì)列中验辞。
若進(jìn)程所需資源不住,此時(shí)創(chuàng)建工作尚未完成喊衫,進(jìn)程不能被調(diào)度運(yùn)行跌造,于是把
此時(shí)進(jìn)程所處的狀態(tài)稱為創(chuàng)建狀態(tài)。
2.終止?fàn)顟B(tài)
首先族购,等待操作系統(tǒng)進(jìn)行善后處理壳贪,最后將其PCB清零,并將PCB空間返回系統(tǒng)寝杖。
掛起操作和進(jìn)程狀態(tài)的轉(zhuǎn)換
掛起操作的引入
1.終端用戶的需要
2.父進(jìn)程請(qǐng)求
3.負(fù)荷調(diào)節(jié)的需要
4.操作系統(tǒng)的需要
引入掛起操作后五個(gè)進(jìn)程狀態(tài)的轉(zhuǎn)換
1.NULL -> 創(chuàng)建:一個(gè)新進(jìn)程產(chǎn)生時(shí)违施,該進(jìn)程處于創(chuàng)建狀態(tài)
2.創(chuàng)建 -> 活動(dòng)就緒:在系統(tǒng)的資源允許的情況下,完成對(duì)進(jìn)程創(chuàng)建的必要操作后瑟幕,
相應(yīng)的系統(tǒng)進(jìn)程將進(jìn)程的狀態(tài)轉(zhuǎn)換為活動(dòng)就緒狀態(tài)
3.創(chuàng)建 -> 靜止就緒:在系統(tǒng)資源不足的情況下磕蒲,系統(tǒng)將其轉(zhuǎn)為靜止就緒態(tài),安置在
外存收苏,不參與調(diào)度亿卤,此時(shí)進(jìn)程創(chuàng)建工作尚未完成
4.執(zhí)行 -> 終止
進(jìn)程管理中的數(shù)據(jù)結(jié)構(gòu)
便于對(duì)計(jì)算機(jī)中的各類資源的使用和管理,os將它們抽象為相應(yīng)的各種數(shù)據(jù)結(jié)構(gòu)
操作系統(tǒng)中用于管理控制的數(shù)據(jù)結(jié)構(gòu)
內(nèi)存表鹿霸,設(shè)備表排吴,文件表和進(jìn)程表
進(jìn)程控制塊PCB的作用
1.作為獨(dú)立運(yùn)行基本單位的標(biāo)志
2.能實(shí)現(xiàn)間斷性運(yùn)行方式
3.提供進(jìn)程管理所需要的信息
4.提供進(jìn)程調(diào)度所需要的信息
5.實(shí)現(xiàn)與其他進(jìn)程的同步與通信
進(jìn)程控制
進(jìn)程控制一般是由os的內(nèi)核中的原語來實(shí)現(xiàn)的。
操作系統(tǒng)內(nèi)核
包括一些與硬件緊密相關(guān)的模塊(如中斷處理程序)懦鼠、各種常用設(shè)備的驅(qū)動(dòng)程序以及
運(yùn)行頻率較高的模塊(如時(shí)鐘管理钻哩、進(jìn)程調(diào)度和許多模塊所公用的一些基本操作)
將它們常駐內(nèi)存。這種安排的目的有:1.便于對(duì)這些軟件進(jìn)行保護(hù)肛冶,防止遭受其他
應(yīng)用程序的破壞街氢;2.可以提高os的運(yùn)行效率
支撐功能
1.中斷處理
2.時(shí)鐘管理
3.原語操作
資源管理功能
1.進(jìn)程管理
2.存儲(chǔ)器管理
3.設(shè)備管理
進(jìn)程的創(chuàng)建
引起進(jìn)程創(chuàng)建的事件
1.用戶登錄
2.作業(yè)調(diào)度
3.提供服務(wù)
4.應(yīng)用請(qǐng)求
進(jìn)程的創(chuàng)建
1.申請(qǐng)空白PCB
2.為新進(jìn)程分配其運(yùn)行所需的資源
3.初始化進(jìn)程控制塊
a.初始化標(biāo)識(shí)信息,將系統(tǒng)分配的標(biāo)識(shí)符和父進(jìn)程標(biāo)識(shí)符填入新pcb中
b.初始化處理機(jī)控制信息睦袖,使程序計(jì)數(shù)器指向程序的入口地址珊肃,使棧頂
指針指向棧頂
c.初始化處理機(jī)控制信息,將其設(shè)為就緒或靜止就緒狀態(tài)
4.若進(jìn)程就緒隊(duì)列能夠接納新進(jìn)程則將其插入就緒隊(duì)列
進(jìn)程的終止
引起進(jìn)程終止的事件
1.正常結(jié)束
2.異常結(jié)束
a.越界錯(cuò)
b.保護(hù)錯(cuò)
c.非法指令
d.特權(quán)指令錯(cuò)
e.運(yùn)行超時(shí)
f.等待超時(shí)
g.I/O故障
3.外界干預(yù)
進(jìn)程的阻塞與喚醒
引起進(jìn)程阻塞和喚醒的事件
1.向系統(tǒng)請(qǐng)求共享資源失敗
2.等待某種操作的完成
3.新數(shù)據(jù)尚未到達(dá)
4.等待新任務(wù)的到達(dá)