版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二部分進程管理第3章進程第4章線程第5章CPU調(diào)度第6章進程同步第7章死鎖第3章進程3.1進程概念3.2進程調(diào)度3.3進程操作3.4進程間通信3.5IPC系統(tǒng)的實例3.6客戶機-服務(wù)器系統(tǒng)通信3.1進程的概念引入進程的原因進程定義為了使程序能并發(fā)執(zhí)行,并能對并發(fā)的程序加以描述和控制而引入的(解決程序并發(fā)的不可再現(xiàn)性而引入進程)進程是執(zhí)行中的程序(進程是程序的一次執(zhí)行過程)進程是動態(tài)概念,有生命周期它是操作系統(tǒng)進行資源分配和調(diào)度的基本單位進程就是進程實體的一次執(zhí)行過程(動態(tài))程序是存放在介質(zhì)上的一組有序指令集合(靜態(tài))增加并發(fā)020406080100120140incpuoutincpuout40ms20ms15ms15ms20ms30ms作業(yè)A作業(yè)B多道并發(fā)
(單CPU宏觀并發(fā),微觀獨占CPU)
增加問題:并發(fā)程序的不可再現(xiàn)性
解決:引入進程(進程并發(fā))循環(huán)程序A、B,共享變量NN=N+1Print(N)N=0程序A程序BN=N+1Print(N)N=0N=N+1Print(N)N=0N=N+1Print(N)N=0n+1n+10nn+10n01A、B并發(fā),有3種不同結(jié)果
增加進程間關(guān)系的描述——前趨圖錯誤原因:不能存在循環(huán)前趨圖:一個有向無循環(huán)圖,用于描述進程之間執(zhí)行的先后次序。圖中的前驅(qū)關(guān)系表示為:P1→P2,P1→P3,P1→P4,P2→P5,P3→P5,P4→P6,P4→P7,P5→P8,P6→P8,P7→P9,P8→P9P1P3P2P4P5P6P7P8P9S1S2S3具有9個結(jié)點的前趨圖具有循環(huán)的圖增加進程包含的內(nèi)容進程包括:處理器寄存器程序計數(shù)器:下一條要執(zhí)行的指令地址內(nèi)存中的進程:(圖3.1)堆:動態(tài)申請內(nèi)存棧:局部變量,函數(shù)參數(shù)、返回地址等數(shù)據(jù)段:全局變量代碼段:多個進程可能對應同一個程序代碼段系統(tǒng),數(shù)據(jù)段,堆、棧段不同P72系統(tǒng)進程系統(tǒng)進程:執(zhí)行操作系統(tǒng)核心代碼的進程(對系統(tǒng)資源進行管理和控制)用戶進程:執(zhí)行用戶程序的進程獨占資源,最高優(yōu)先級運行直接執(zhí)行I/O操作內(nèi)核態(tài)(管態(tài))下活動進程分類用戶進程通過系統(tǒng)調(diào)用競爭資源不直接執(zhí)行I/O操作用戶態(tài)(目態(tài))下活動增加3.1.2進程狀態(tài)進程的3個基本狀態(tài)進程并發(fā)間斷性多種進程狀態(tài)1獲得除CPU外的所有必要資源23就緒態(tài)運行態(tài)阻塞態(tài)得到CPU控制權(quán),運行因為等待某事件發(fā)生而暫停執(zhí)行(如等待I/O)一個就緒隊列一個運行進程多個阻塞隊列P72進程狀態(tài)圖(5狀態(tài)圖)新建終止就緒運行等待I/O操作或事件的完成退出中斷允許I/O操作或事件的等待調(diào)度算法分派圖3.2進程狀態(tài)圖允許/許可:系統(tǒng)性能和內(nèi)存容量是否允許退出/終止的原因:①進程到達自然結(jié)束點②出現(xiàn)無法克服的錯誤③被操作系統(tǒng)終結(jié)④被其它有終止權(quán)的進程終結(jié)P73進程狀態(tài)圖(7狀態(tài)圖)活動就緒靜止就緒活動阻塞靜止阻塞執(zhí)行調(diào)度激活激活掛起掛起掛起釋放釋放請求I/O創(chuàng)建終止釋放許可許可掛起:內(nèi)存→外存激活:外存→內(nèi)存增加3.1.3進程控制塊
進程控制塊(PCB)是系統(tǒng)用來控制和管理進程而設(shè)置的數(shù)據(jù)結(jié)構(gòu)。進程與PCB一一對應PCB注意①系統(tǒng)創(chuàng)建新進程時,為它建立一個PCB②進程結(jié)束時回收其PCB,進程隨之消亡③PCB可被OS的多個模塊讀或修改,應常駐內(nèi)存④所有PCB組織成鏈表或隊列結(jié)構(gòu),存放在PCB區(qū)內(nèi)P73PCB中的信息①程序和數(shù)據(jù)的地址/內(nèi)存管理信息②進程同步和通信機制③資源清單/I/O狀態(tài)信息④鏈接指針(指向下一個PCB)①進程狀態(tài)②進程優(yōu)先級③進程調(diào)度信息④事件(阻塞原因)①通用寄存器/CPU寄存器②指令/程序計數(shù)器③程序狀態(tài)字PSW④用戶棧指針①內(nèi)部標識符:系統(tǒng)提供數(shù)字標識②外部標識符:創(chuàng)建者提供(用戶標識、父進程、子進程)⑴進程標識符(唯一標識進程)⑵處理機狀態(tài)(CPU各寄存器內(nèi)容)⑶進程調(diào)度信息⑷進程控制信息P733.2進程調(diào)度
在多道程環(huán)境下,進程數(shù)目往往多于處理機數(shù)目,致使它們爭用處理機
這就要求系統(tǒng)能按某種算法,動態(tài)地把處理機分配給就緒隊列中的一個進程,使之執(zhí)行
分配處理機的任務(wù)是由進程調(diào)度程序完成的
它是操作系統(tǒng)設(shè)計的中心問題之一增加進程調(diào)度需要解決的問題WHATWHENHOW按什么原則分配CPU—進程調(diào)度算法何時分配CPU—進程調(diào)度的時機如何分配CPU—CPU調(diào)度過程(進程的上下文切換)增加3.2.1調(diào)度隊列作業(yè)隊列、就緒隊列、設(shè)備隊列圖3.6就緒隊列和各種設(shè)備隊列P76圖3.7表示進程調(diào)度隊列的隊列圖就緒隊列I/O隊列I/O請求時間片結(jié)束創(chuàng)建一個子進程等待中斷子進程執(zhí)行中斷發(fā)生P773.2.2調(diào)度程序處理器調(diào)度:調(diào)度程序為待處理的作業(yè)或進程分配處理器(就緒態(tài)→運行態(tài))一個較為完善的操作系統(tǒng)會提供三級調(diào)度中級調(diào)度(內(nèi)外存交換)高級調(diào)度(作業(yè)調(diào)度)低級調(diào)度(進程調(diào)度)
處理機調(diào)度算法對整個計算機系統(tǒng)的綜合性能指標有重要影響P77作業(yè)調(diào)度提交狀態(tài)作業(yè)注冊程序后備狀態(tài)作業(yè)調(diào)度程序執(zhí)行就緒阻塞執(zhí)行狀態(tài)完成狀態(tài)作業(yè)終止程序進程調(diào)度程序增加圖3.8增加了中期調(diào)度的隊列圖換入換出換出的進程(已部分執(zhí)行)就緒隊列結(jié)束I/O等待隊列P783級調(diào)度1.決定從外存的后備隊列中調(diào)入多少個作業(yè)和要調(diào)入哪幾個作業(yè)2.為被選中的作業(yè)創(chuàng)建進程,并分配必要的系統(tǒng)資源,如內(nèi)存、外設(shè)等3.把新創(chuàng)建的進程放入就緒隊列中,等待被調(diào)度執(zhí)行進程調(diào)度進程完成作業(yè)調(diào)度作業(yè)就緒隊列交互式用戶時間片到阻塞隊列事件發(fā)生等待事件中級調(diào)度CPU就緒,掛起隊列阻塞,掛起隊列中級調(diào)度進程調(diào)度進程完成作業(yè)調(diào)度作業(yè)就緒隊列交互式用戶時間片到阻塞隊列等待事件中級調(diào)度CPU就緒,掛起隊列阻塞,掛起隊列中級調(diào)度事件發(fā)生分時系統(tǒng)中用戶鍵入的命令和數(shù)據(jù)直接進入內(nèi)存,OS為之建立進程,加入就緒隊列就緒隊列
1.交互式用戶(進程調(diào)度):一般采用FIFO隊列(先進先出)2.批處理用戶(作業(yè)調(diào)度+進程調(diào)度):一般采用優(yōu)先權(quán)隊列阻塞隊列:等待事件不同,一般可以有多個阻塞隊列●中級調(diào)度提高了內(nèi)存的利用率和系統(tǒng)吞吐量●內(nèi)存使用緊張時,把內(nèi)存中暫時不能運行的進程調(diào)到外存中等待
內(nèi)存活動阻塞↓↓外存靜止阻塞●等內(nèi)存有足夠空閑空間時,將外存上的某些具備了運行條件的就緒進程調(diào)入內(nèi)存就緒隊列
外存靜止就緒↓↓內(nèi)存活動就緒增加3.2.3上下文切換將CPU切換到另一進程需要保存原來進程的狀態(tài)并裝入新進程的保存狀態(tài)。上下文切換時間是額外開銷,因為切換時系統(tǒng)并不能做什么有用的工作。上下文切換時間與硬件支持密切相關(guān)。P78圖3.4CPU在進程間的切換執(zhí)行進程P0進程P1操作系統(tǒng)停頓執(zhí)行中斷或系統(tǒng)調(diào)用保存狀態(tài)至PCB0從PCB1中獲取狀態(tài)停頓停頓執(zhí)行中斷或系統(tǒng)調(diào)用保存狀態(tài)至PCB1從PCB0中獲取狀態(tài)P743.3進程操作
3.3.1進程的創(chuàng)建父進程創(chuàng)建子進程,子進程又創(chuàng)建其他進程,從而形成了進程樹(見圖3.9)子進程可能從操作系統(tǒng)處獲得資源,也可共享父進程的資源當進程創(chuàng)建新進程時,有兩種執(zhí)行可能父進程與子進程并發(fā)執(zhí)行父進程等待,直到某個或全部子進程執(zhí)行完畢P79進程的創(chuàng)建過程⑴申請空白PCB(進程有唯一數(shù)字標識)⑵為新進程分配資源(為程序、數(shù)據(jù)和用戶棧分配內(nèi)存)⑶初始化PCB⑷將新進程插入就緒隊列①初始化標識信息(自己和父進程標識)②初始化處理機狀態(tài)信息(程序計數(shù)器、棧指針)③初始處理機控制信息(初始為就緒狀態(tài),最低優(yōu)先級)增加進程創(chuàng)建地址空間子進程是父進程的復制品子進程裝入另一個程序進來UNIX例子fork系統(tǒng)調(diào)用創(chuàng)建新的進程exec系統(tǒng)調(diào)用在fork調(diào)用后用新程序來取代進程的內(nèi)存空間P81fork()返回子進程號返回0P82進程的終止過程①根據(jù)被終止進程的標識符,從PCB集合中檢索出該進程的PCB,從中讀出該進程狀態(tài)②若被終止進程處于執(zhí)行態(tài),應立即終止該進程的執(zhí)行,并設(shè)置調(diào)度標識為真(只是重新調(diào)度其它進程運行)③若該進程還有子孫進程,終止其所有子孫進程④將被終止進程的所有資源歸還給父進程或系統(tǒng)⑤將被終止進程的PCB從所在隊列或鏈表中移出,等待其它程序來收集信息增加#include<sys/types.h>#include<stdio.h>#include<unistd.h>voidmain(intargc,char*argv[]){pid_tpid;/*forkanotherprocess*/pid=fork();if(pid<0){/*erroroccurred*/fprintf(stderr,“ForkFailed”);exit(-1);}elseif(pid==0){/*childprocess*/execlp(“/bin/ls”,“l(fā)s”,NULL);}else{/*parentprocess*//*parentwillwaitforthechildtocomplete*/wait(NULL);printf(“ChildComplete”);exit(0);}}pid_tprintfforkexecargc為參數(shù)個數(shù),argv[]為參數(shù)位置fork():創(chuàng)建新進程若成功調(diào)用一次則返回兩個值子進程返回0,父進程返回子進程ID;否則,出錯返回-1fork():創(chuàng)建新進程exec():執(zhí)行新程序wait():等待,直到子進程結(jié)束exit():進程終止P823.4進程間通信(IPC)獨立進程:一個進程不能影響或被在系統(tǒng)內(nèi)執(zhí)行的其他進程所影響協(xié)作進程:需要有進程間通信機制2種進程間通信機制:共享內(nèi)存主要由應用程序員提供通信,操作系統(tǒng)只需要提供共享內(nèi)存消息系統(tǒng)主要由操作系統(tǒng)來提供通信P84進程通信模型消息傳遞共享內(nèi)存P853.4.1共享內(nèi)存系統(tǒng)生產(chǎn)者-消費者問題:生產(chǎn)者進程產(chǎn)生信息,以供消費者進程消費。無限緩沖:對緩沖區(qū)大小沒有實際限制有限緩沖:假設(shè)緩沖區(qū)大小固定ConsumerProducerBufferP86生產(chǎn)者-消費問題共享數(shù)據(jù)#defineBUFFER_SIZE10typedefstruct{ ...}item;itembuffer[BUFFER_SIZE];intin=0;intout=0;空:in=out滿:(in+1)%BUFFER_SIZE只能用于緩沖的最大項數(shù)為:
BUFFER_SIZE-1…inoutBufferisEmptyBufferisFull…inoutP86生產(chǎn)者進程
while(true){
/*Produceanitem*/while(((in+1)%BUFFER_SIZE)==out)
;/*donothing--nofreebuffers*/
buffer[in]=item;
in=(in+1)%BUFFER_SIZE;}Insert()inout…P87消費者進程 while(true){
while(in==out)
;//donothing--nothingtoconsume
//removeanitemfromthebuffer item=buffer[out];
out=(out+1)%BUFFERSIZE; returnitem;
}Remove()inout…問題:未考慮多生產(chǎn)者消費者解決:同步P873.4.2消息傳遞系統(tǒng)消息傳遞至少提供兩個操作發(fā)送消息send接收消息receive如果進程P和Q需要通信,那么他們需要相互建立通信線路通過發(fā)送/接收來交換消息有2種消息傳遞方式直接消息通信間接消息通信P87直接消息通信直接消息通信:需要通信的進程必須明確地命名通信的接收者或發(fā)送者send(P,message)-發(fā)送消息至進程Preceive(Q,message)-從進程Q接收消息P2P1P3P88間接消息通信(郵箱通信)對于間接通信,消息通過郵箱或端口來發(fā)送和接收。每個郵箱都有一個惟一的標識符進程只有共享一個郵箱才能相互通信send(A,message):發(fā)送消息給郵箱Areceive(A,message):從郵箱A接收消息P2P1P3M1M2P89問題郵箱共享P1,P2,P3共享郵箱AP1發(fā)送消息;P2和P3接收誰將獲得這個消息?解決辦法允許一條線路與兩個以上的進程關(guān)聯(lián)任一時刻只允許一個進程執(zhí)行接收操作允許系統(tǒng)選擇接收者,并可以告訴發(fā)送者誰是接收者P89同步消息傳遞可以是阻塞或非阻塞的阻塞的消息傳遞也稱為同步消息阻塞send:發(fā)送進程阻塞,直到消息為接收進程或郵箱所接收阻塞receive:接收者阻塞,直
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC TR 11801-9906:2025 EN Information technology - Generic cabling for customer premises - Part 9906: Balanced 1-pair cabling channels up to 600 MHz for single pair Ethe
- 二零二五版煤炭開采權(quán)轉(zhuǎn)讓及安全生產(chǎn)保障服務(wù)合同3篇
- 二零二五年度高速公路交通安全警示標志制作合同樣本2篇
- 二零二五版餐飲業(yè)店長任期管理與聘用合同3篇
- 二零二五版自來水廠自動化控制系統(tǒng)升級合同3篇
- 二零二五版地鐵停車場車位租賃及公共交通服務(wù)合同2篇
- 二零二五版法院判決引導下的債務(wù)償還與追加借款合同3篇
- 二零二五版地下室出租合同(含倉儲物流)3篇
- 二零二五版深基坑降水井施工勞務(wù)分包合同2篇
- 二零二五年果園廢棄物資源化利用合同2篇
- (正式版)QC∕T 1206.1-2024 電動汽車動力蓄電池熱管理系統(tǒng) 第1部分:通 用要求
- 《煤礦地質(zhì)工作細則》礦安﹝2024﹞192號
- 平面向量及其應用試題及答案
- 2024高考復習必背英語詞匯3500單詞
- 消防控制室值班服務(wù)人員培訓方案
- 《貴州旅游介紹》課件2
- 2024年中職單招(護理)專業(yè)綜合知識考試題庫(含答案)
- 無人機應用平臺實施方案
- 挪用公款還款協(xié)議書范本
- 事業(yè)單位工作人員年度考核登記表(醫(yī)生個人總結(jié))
- 盾構(gòu)隧道施工數(shù)字化與智能化系統(tǒng)集成
評論
0/150
提交評論