国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

進(jìn)程管理1--進(jìn)程的概念與操作

2024-06-28 13:24:26
字體:
供稿:網(wǎng)友
進(jìn)程管理1--進(jìn)程的概念與操作

從進(jìn)程的觀點(diǎn)研究操作系統(tǒng),把OS看作是由若干個(gè)可獨(dú)立運(yùn)行的程序和一個(gè)可對(duì)這些程序進(jìn)行協(xié)調(diào)控制的核心(內(nèi)核)組成。

這些運(yùn)行的程序稱為進(jìn)程,它是資源分配和獨(dú)立運(yùn)行的基本單位,每一個(gè)進(jìn)程都完成某一特定任務(wù)。OS的內(nèi)核則必須要控制和協(xié)調(diào)這些進(jìn)程的運(yùn)行,解決進(jìn)程之間的通信,并從系統(tǒng)可并發(fā)工作為出發(fā)點(diǎn),實(shí)現(xiàn)并發(fā)進(jìn)程間通信,并解決由此帶來的共享資源的競(jìng)爭(zhēng)問題。

本文地址:http://www.CUOXin.com/archimedes/p/os-PRocess-management1.html,轉(zhuǎn)載請(qǐng)注明源地址。

1.進(jìn)程的基本概念前趨圖:

定義:有向無循環(huán)圖,是一個(gè)二元組,由結(jié)點(diǎn)的集合和有向邊組成。其中:

結(jié)點(diǎn):表示一條語句、一個(gè)程序段或一個(gè)進(jìn)程有向邊:兩個(gè)結(jié)點(diǎn)之間的前趨關(guān)系“ ”

(→={(Pi,Pj)|Pi必須在Pj開始執(zhí)行之前完成})。

直接前趨、直接后繼

初始結(jié)點(diǎn)、終止結(jié)點(diǎn)

程序順序執(zhí)行

通常一個(gè)程序可分成若干個(gè)程序段,它們必須按照某種先后次序執(zhí)行,僅當(dāng)前一操作執(zhí)行后,才能執(zhí)行后繼操作。

Eg2:進(jìn)行計(jì)算: I:輸入操作 C:計(jì)算操作 P:打印操作 在進(jìn)行計(jì)算時(shí),總是先輸入用戶的程序和數(shù)據(jù),然后進(jìn)行計(jì)算,最后將結(jié)果打印出來。

程序順序執(zhí)行時(shí)有如下特征:

順序性—處理機(jī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,每一操作必須在下一個(gè)操作開始之前結(jié)束。

封閉性—在封閉環(huán)境下執(zhí)行,獨(dú)占全機(jī)資源,執(zhí)行結(jié)果不受外界影響。

可再現(xiàn)性—只要程序執(zhí)行時(shí)的環(huán)境和初始條件相同,當(dāng)程序重復(fù)執(zhí)行時(shí),不論它是從頭到尾不停頓地執(zhí)行,還是“走走停停”地執(zhí)行,都將獲得相同的結(jié)果。

程序并發(fā)執(zhí)行在處理一批作業(yè)時(shí),有的程序可實(shí)現(xiàn)并發(fā)執(zhí)行程序并發(fā)執(zhí)行時(shí)的特征間斷性—相互制約導(dǎo)致并發(fā)程序具有“執(zhí)行-暫停-執(zhí)行”這種間斷性的活動(dòng)規(guī)律。失去封閉性—多個(gè)程序共享系統(tǒng)中的各種資源,資源狀態(tài)由多個(gè)程序來改變。不可再現(xiàn)性—由于程序的并發(fā)執(zhí)行,打破了由另一程序獨(dú)占系統(tǒng)資源的封閉性,因而破壞了可再現(xiàn)性。進(jìn)程的定義、特征

1、進(jìn)程(process)的定義

1)進(jìn)程是程序的一次執(zhí)行。

2)進(jìn)程是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時(shí)所發(fā)生的活動(dòng)。

3)進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。

進(jìn)程與程序的主要區(qū)別:
  • 程序是指令的有序集合,其本身沒有任何運(yùn)行的含義,它是一個(gè)靜態(tài)的概念。而進(jìn)程是程序在處理機(jī)上的一次執(zhí)行過程,它是一個(gè)動(dòng)態(tài)概念。
  • 程序的存在是永久的。而進(jìn)程則是有生命期的,它因創(chuàng)建而產(chǎn)生,因調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,因撤消而消亡。
  • 程序僅是指令的有序集合。而進(jìn)程則由程序段、相關(guān)數(shù)據(jù)段、進(jìn)程控制塊(PCB)組成。
  • 進(jìn)程與程序之間不是一一對(duì)應(yīng)。

程序

進(jìn)程

概念

靜態(tài)

動(dòng)態(tài)

所在存儲(chǔ)器

外存

內(nèi)存

存在時(shí)間

永久

有生命期

組成

有序指令

程序段,數(shù)據(jù)段,PCB

對(duì)應(yīng)關(guān)系

一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程

一個(gè)進(jìn)程可對(duì)應(yīng)多個(gè)程序

進(jìn)程的特征

進(jìn)程(process)的基本特征:

(1)結(jié)構(gòu)特征

為了描述和記錄進(jìn)程的運(yùn)動(dòng)變化過程,并使之能正確運(yùn)行,每個(gè)進(jìn)程都應(yīng)配置了一個(gè)PCB。所以,從結(jié)構(gòu)上看,每個(gè)進(jìn)程(進(jìn)程實(shí)體)都是由程序段、相關(guān)數(shù)據(jù)段及進(jìn)程控制塊(PCB)組成。

注:在早期UNIX版本中稱進(jìn)程的三個(gè)組成部分為“進(jìn)程映像”

(2)動(dòng)態(tài)性

進(jìn)程的實(shí)質(zhì)是程序在處理機(jī)上的一次執(zhí)行過程,因此是動(dòng)態(tài)的。所以動(dòng)態(tài)性是進(jìn)程的最基本的特征。同時(shí)動(dòng)態(tài)性還表現(xiàn)在進(jìn)程是有生命期的,它因創(chuàng)建而產(chǎn)生,因調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,因撤消而消亡。

(3)并發(fā)性

指多個(gè)進(jìn)程實(shí)體同時(shí)存在于內(nèi)存中,能在一段時(shí)間內(nèi)同時(shí)運(yùn)行。

引入進(jìn)程的目的就是為了使進(jìn)程能并發(fā)執(zhí)行,以提高資源利用率,所以并發(fā)性是進(jìn)程的重要特征,也是OS的重要特征。

(4)獨(dú)立性

指進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單位,也是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。

(5)異步性

指進(jìn)程以各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。

進(jìn)程的狀態(tài)

為了刻畫了整個(gè)進(jìn)程,可以將一個(gè)進(jìn)程的生命周期劃分為一組狀態(tài):

1、進(jìn)程的五種狀態(tài)(兩種短暫的狀態(tài)、三種基本狀態(tài))new新建/創(chuàng)建:進(jìn)程正在創(chuàng)建中的狀態(tài)terminated終止/撤消/退出:進(jìn)程執(zhí)行完畢,釋放所占資源的狀態(tài)。ready-就緒: 進(jìn)程已獲得了除處理機(jī)以外的所有資源,等待分配處理機(jī)執(zhí)行的狀態(tài)。running-運(yùn)行/執(zhí)行: 當(dāng)一個(gè)進(jìn)程獲得必要的資源并正在處理機(jī)上執(zhí)行的狀態(tài)。waiting-等待/阻塞: 正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時(shí)無法執(zhí)行下去,此時(shí)進(jìn)程所處的狀態(tài)。

進(jìn)程在運(yùn)行期間并非固定處于某個(gè)狀態(tài),而是不斷從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)。

2、進(jìn)程狀態(tài)轉(zhuǎn)換

3、進(jìn)程的掛起狀態(tài)

在某些系統(tǒng)中,為了更好地管理和調(diào)度進(jìn)程,引入了掛起狀態(tài):

掛起狀態(tài)/靜止?fàn)顟B(tài):

程序在運(yùn)行期間,由于某種需要,往往要將進(jìn)程暫停執(zhí)行,使其靜止下來,以滿足某些需要。這種靜止?fàn)顟B(tài)就稱為進(jìn)程的掛起狀態(tài)。

引入掛起狀態(tài)的原因:

  • 終端用戶的需要:終端用戶在自己程序運(yùn)行中發(fā)現(xiàn)問題要求使正在執(zhí)行的進(jìn)程暫停執(zhí)行而使進(jìn)程處于掛起狀態(tài)。
  • 父進(jìn)程的需要:父進(jìn)程為了考查和修改某個(gè)子進(jìn)程,或者協(xié)調(diào)各子進(jìn)程間的活動(dòng),需要將該子進(jìn)程掛起。
  • 操作系統(tǒng)的需要:操作系統(tǒng)為了檢查運(yùn)行中的資源使用情況或進(jìn)行記帳,而將某些進(jìn)程掛起。
  • 對(duì)換的需要:為了提高內(nèi)存的利用率,將內(nèi)存中某些進(jìn)程掛起,以調(diào)進(jìn)其它程序運(yùn)行。
  • 負(fù)荷調(diào)節(jié)的需要:由于工作負(fù)荷較重,而將一些不重要的進(jìn)程掛起,以保證系統(tǒng)能正常運(yùn)行(實(shí)時(shí)操作系統(tǒng))

在引入掛起狀態(tài)后,就增加了掛起狀態(tài)(靜止?fàn)顟B(tài))與非掛起狀態(tài)(活動(dòng)狀態(tài))間的轉(zhuǎn)換,如圖所示:

進(jìn)程控制塊Process Control Block

進(jìn)程控制塊PCB

是操作系統(tǒng)為了管理和控制進(jìn)程的運(yùn)行而為每一個(gè)進(jìn)程定義的一個(gè)數(shù)據(jù)結(jié)構(gòu),它記錄了系統(tǒng)管理進(jìn)程所需的全部信息。系統(tǒng)根據(jù)PCB而感知進(jìn)程的存在,PCB是進(jìn)程存在的唯一標(biāo)志。例:linux中的PCB

1、進(jìn)程控制塊PCB的作用

?是OS對(duì)并發(fā)執(zhí)行的進(jìn)程進(jìn)行控制和管理的根據(jù)。也是系統(tǒng)用來感知進(jìn)程存在的根據(jù),即PCB是進(jìn)程存在的唯一標(biāo)志。

2、進(jìn)程控制塊PCB中的信息

根據(jù)操作系統(tǒng)的要求不同,PCB所包含信息有些不同,但通常包含以下信息:

?(1)進(jìn)程標(biāo)識(shí)符:內(nèi)部標(biāo)識(shí)符(由系統(tǒng)創(chuàng)建進(jìn)程時(shí)分配給進(jìn)程的唯一標(biāo)識(shí)號(hào),通常為一整數(shù),稱為進(jìn)程號(hào),用于區(qū)分不同的進(jìn)程)外部標(biāo)識(shí)符(由字母、數(shù)字組成,由用戶訪問該進(jìn)程時(shí)使用)。

?(2)處理機(jī)狀態(tài)(斷點(diǎn)信息): 即處理機(jī)中各種寄存器(通用寄存器、PC、PSW等)的內(nèi)容

?(3)進(jìn)程調(diào)度: 記錄了進(jìn)程調(diào)度的相關(guān)信息(狀態(tài)、優(yōu)先級(jí)、事件等)。

?(4)進(jìn)程控制:記錄了系統(tǒng)對(duì)進(jìn)程控制的信息(程序和數(shù)據(jù)的地址、同步機(jī)制、資源清單、鏈接指針)

3、進(jìn)程控制塊PCB的組織方式

在一個(gè)系統(tǒng)中,通常存在著許多進(jìn)程,它們所處的狀態(tài)不同,為了方便進(jìn)程的調(diào)度和管理,需要將各進(jìn)程的PCB用適當(dāng)方法組織起來。目前常用的組織方式有:?

鏈接方式:把同一狀態(tài)的PCB鏈接成一個(gè)隊(duì)列,這樣就形成了就緒隊(duì)列、阻塞隊(duì)列等。

?索引方式 :將同一狀態(tài)的進(jìn)程組織在一個(gè)索引表中,索引表的表項(xiàng)指向相應(yīng)的PCB,不同狀態(tài)對(duì)應(yīng)不同的索引表。進(jìn)程的控制

進(jìn)程控制是進(jìn)程管理中最基本的功能,即對(duì)系統(tǒng)中所有的進(jìn)程實(shí)施有效的管理,其功能包括

  • 進(jìn)程的創(chuàng)建
  • 進(jìn)程的撤消
  • 進(jìn)程的阻塞與喚醒等,

這些功能一般是由操作系統(tǒng)的內(nèi)核來完成。

進(jìn)程創(chuàng)建

一個(gè)進(jìn)程可以創(chuàng)建若干個(gè)新進(jìn)程,新創(chuàng)建的進(jìn)程又可以創(chuàng)建子進(jìn)程,為了描述進(jìn)程之間的創(chuàng)建關(guān)系,引入了進(jìn)程圖(如下圖所示:)

1、進(jìn)程圖:又稱為進(jìn)程樹或進(jìn)程家族樹,是描述進(jìn)程家族關(guān)系的一棵有向樹。

2、引起進(jìn)程創(chuàng)建的事件

在多道程序環(huán)境中,只有進(jìn)程才可以在系統(tǒng)中運(yùn)行。為了使一個(gè)程序能運(yùn)行,必須為它創(chuàng)建進(jìn)程。導(dǎo)致進(jìn)程創(chuàng)建的事件有:

用戶登錄:在分時(shí)OS中,用戶在終端鍵入登錄命令后,如是合法用戶,則系統(tǒng)為該終端創(chuàng)建一進(jìn)程,并插入就緒隊(duì)列。

作業(yè)調(diào)度:在批處理OS中,當(dāng)按某算法調(diào)度一作業(yè)進(jìn)內(nèi)存,系統(tǒng)為之分配必要資源,同時(shí)為該作業(yè)創(chuàng)建一進(jìn)程,并插入就緒隊(duì)列。

?提供服務(wù):在程序運(yùn)行中,若用戶需某種服務(wù),則系統(tǒng)創(chuàng)建一進(jìn)程為用戶提供服務(wù),并插入就緒隊(duì)列。

?應(yīng)用請(qǐng)求:在運(yùn)行中,由于應(yīng)用進(jìn)程本身的需求,自己創(chuàng)建一進(jìn)程,并插入就緒隊(duì)列。

3、進(jìn)程的創(chuàng)建

操作系統(tǒng)一旦發(fā)現(xiàn)了要求創(chuàng)建進(jìn)程的事件后,便調(diào)用進(jìn)程創(chuàng)建原語create()按以下過程創(chuàng)建一新進(jìn)程:

進(jìn)程的撤消

一個(gè)進(jìn)程在完成其任務(wù)后,應(yīng)加以撤消,以便及時(shí)釋放其占有的各類資源。

1、導(dǎo)致進(jìn)程撤消的事件

  • 進(jìn)程正常結(jié)束
  • 進(jìn)程異常結(jié)束
  • 外界干預(yù)

如果系統(tǒng)中發(fā)生了要求撤消進(jìn)程的事件,OS便調(diào)用撤消原語去撤消進(jìn)程。

2、撤消原語可采用2種撤消策略

只撤消指定的進(jìn)程

撤消指定進(jìn)程及其所有的子孫進(jìn)程

進(jìn)程的撤消的過程:

進(jìn)程的阻塞與喚醒

當(dāng)一個(gè)進(jìn)程期待的事件還沒有出現(xiàn)時(shí),該進(jìn)程調(diào)用阻塞原語block()將自己阻塞起來;

block()功能:將進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)。

對(duì)于處于阻塞狀態(tài)的進(jìn)程,當(dāng)該進(jìn)程期待的事件出現(xiàn)時(shí),由其它相關(guān)進(jìn)程調(diào)用喚醒原語wakeup() 將阻塞的進(jìn)程喚醒,使其進(jìn)入就緒狀態(tài);

wakeup()功能:將進(jìn)程由阻塞狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。

1、引起進(jìn)程阻塞和喚醒的事件

  • 請(qǐng)求系統(tǒng)服務(wù)
  • 啟動(dòng)某種操作
  • 新數(shù)據(jù)尚未到達(dá)
  • 無新工作可做

2、進(jìn)程的阻塞過程

3、進(jìn)程的喚醒過程

進(jìn)程的掛起與激活

當(dāng)引起進(jìn)程掛起的事件發(fā)生時(shí),系統(tǒng)就將利用掛起原語suspend()將指定進(jìn)程或處于阻塞狀態(tài)的進(jìn)程掛起。當(dāng)發(fā)生激活進(jìn)程的事件時(shí),系統(tǒng)就將利用激活原語active()將指定進(jìn)程激活。

進(jìn)程的掛起過程:

進(jìn)程的激活過程:

參考資料《華東理工大學(xué) 操作系統(tǒng)》


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 望奎县| 黄平县| 雷州市| 黎平县| 秦安县| 横峰县| 乐陵市| 从江县| 湘潭市| 黔西| 天水市| 平顶山市| 土默特左旗| 平湖市| 衡阳县| 浦北县| 库尔勒市| 顺义区| 兰州市| 库车县| 宁河县| 宜君县| 岳阳市| 和顺县| 巴青县| 安陆市| 金阳县| 黄梅县| 广河县| 百色市| 楚雄市| 北辰区| 新宁县| 确山县| 张家川| 黄浦区| 武隆县| 新野县| 怀柔区| 广水市| 庆阳市|