进程的解析
1.什么是進(jìn)程?
對(duì)于進(jìn)程的定義,從不同的角度可以有不同的定義,典型的定義有:
???? (1)進(jìn)程 是程序的一次執(zhí)行。
???? (2)進(jìn)程是一個(gè)程序以及其數(shù)據(jù)在處理機(jī)順序執(zhí)行時(shí)所發(fā)生的活動(dòng)。
???? (3)進(jìn)程是具有獨(dú)立運(yùn)行功能的程序在數(shù)據(jù)集合上運(yùn)行的過(guò)程,它是資源分配的基本單位。
2.進(jìn)程的特征:
? (1)動(dòng)態(tài)性
? (2)并發(fā)性
??(3)獨(dú)立性
? (4)異步性
3.進(jìn)程的管理:
? (1)進(jìn)程的控制
? (2)進(jìn)程的同步
? (3)進(jìn)程的通信
?
4.對(duì)于進(jìn)程的控制這部分有以下重點(diǎn)
(1)操作系統(tǒng)內(nèi)核
??????? 1.支撐功能:
??????????? 中斷處理
??????????? 時(shí)鐘管理
??????????? 原語(yǔ)操作
??????? 2.資源管理功能:
?????????? 進(jìn)程管理
????????? ?存儲(chǔ)器管理
???????????設(shè)備管理
(2)進(jìn)程的創(chuàng)建
??????1 .申請(qǐng)空白PCB,為新進(jìn)程申請(qǐng)獲得唯一的數(shù)字標(biāo)識(shí)符,并從PCB集合中索取一個(gè)空白PCB。
???????????? 初始化處理機(jī)狀態(tài)信息將系統(tǒng)分配的標(biāo)志符和父進(jìn)程的標(biāo)識(shí)符填入新PCB中
???????????? 初始化處理機(jī)控制信息
????? 4.將新進(jìn)程插入就緒隊(duì)列中 (3)進(jìn)程的終止
????? 1.正常結(jié)束
????? 2.異常結(jié)束
????? 3.外界干預(yù)
(4)進(jìn)程的基本狀態(tài)及轉(zhuǎn)換
??????1.就緒狀態(tài)
???????????當(dāng)進(jìn)程已分配到除CPU以外的所有必要資源后,只要獲得CPU,便可以立即執(zhí)行,這時(shí)候的進(jìn)程狀態(tài)稱(chēng)為就緒狀態(tài),如果系統(tǒng)有很多就緒狀態(tài)的進(jìn)程,通常將它們按照一定的策略 (優(yōu)先級(jí)策略)排成一個(gè)隊(duì)列,稱(chēng)該隊(duì)列為就緒隊(duì)
??????2.執(zhí)行狀態(tài)
?????????? 進(jìn)程已獲得CPU,其程序正在執(zhí)行的狀態(tài)。在單處理機(jī)系統(tǒng)中,只有一個(gè)進(jìn)程處于執(zhí)行狀態(tài),而多處理機(jī)系統(tǒng)中,有多個(gè)進(jìn)程處于執(zhí)行狀態(tài)。
??????3.阻塞狀態(tài)
???????????正在執(zhí)行的進(jìn)程由于發(fā)生某事件(如I/0請(qǐng)求,申請(qǐng)緩沖失敗)暫時(shí)無(wú)法執(zhí)行狀態(tài),進(jìn)程發(fā)生阻塞,把這種進(jìn)程的狀態(tài)稱(chēng)之為 阻塞狀
(5)掛起操作與進(jìn)程狀態(tài)的轉(zhuǎn)換出于用戶觀察需要,進(jìn)程可以執(zhí)行掛起和激活兩種操作。掛起是將活躍狀態(tài)轉(zhuǎn)為掛起狀態(tài),使進(jìn)程不再被系統(tǒng)調(diào)用;激活是將掛起狀態(tài)轉(zhuǎn)為活躍狀態(tài)。
進(jìn)程掛起的幾種情況:
- 終端用戶的需要:當(dāng)終端用戶在運(yùn)行程序期間發(fā)現(xiàn)有可疑問(wèn)題,希望暫停程序的運(yùn)行以便研究其執(zhí)行情況或做一定的修改;
- 父進(jìn)程請(qǐng)求;
- 符合調(diào)節(jié)的需要;
- 操作系統(tǒng)的需要:有時(shí)希望掛起某些進(jìn)程以便檢查運(yùn)行中的資源使用情況或進(jìn)行記賬。
掛起原語(yǔ)(Suspend)的執(zhí)行過(guò)程如下:
激活原語(yǔ)(Active)的執(zhí)行過(guò)程如下:
?
? (6)進(jìn)程狀態(tài)
- 運(yùn)行狀態(tài):進(jìn)程正在處理機(jī)上運(yùn)行。在單處理機(jī)環(huán)境下,每一時(shí)刻最多只有一個(gè)進(jìn)程處于運(yùn)行狀態(tài);
- 就緒狀態(tài):進(jìn)程已處于準(zhǔn)備運(yùn)行的狀態(tài),獲得了除處理機(jī)之外的一切所需資源,一旦得到處理機(jī)即可運(yùn)行。
- 阻塞狀態(tài),又稱(chēng)等待狀態(tài):進(jìn)程正在等待某一事件而暫停運(yùn)行,如等待某資源為可用(不包括處理機(jī))或等待輸入/輸出完成。即使處理機(jī)空閑,該進(jìn)程也不能運(yùn)行。
- 創(chuàng)建狀態(tài):進(jìn)程正在被創(chuàng)建,尚未轉(zhuǎn)到就緒狀態(tài)。創(chuàng)建步驟包括:申請(qǐng)空白的 PCB,向 PCB 中填寫(xiě)一些控制和管理信息,系統(tǒng)向進(jìn)程分配運(yùn)行時(shí)所需的資源。
- 結(jié)束狀態(tài):進(jìn)程正常結(jié)束、發(fā)生錯(cuò)誤或者系統(tǒng)中斷退出運(yùn)行。系統(tǒng)必須首先將進(jìn)程置為結(jié)束狀態(tài),再進(jìn)一步處理資源釋放及回收工作。
總結(jié)