版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2023/2/4操作系統(tǒng)與實驗教程第3章第3講14.3進(jìn)程控制2023/2/4操作系統(tǒng)與實驗教程第3章第3講2附:中斷及原語的概念中斷的概念及其重要性中斷的分類原語的概念:
原語是指在執(zhí)行過程中不允許中斷,它屬于操作系統(tǒng)內(nèi)核的一部分,以系統(tǒng)調(diào)用的形式提供給用戶和操作系統(tǒng)使用。
2023/2/4操作系統(tǒng)與實驗教程第3章第3講34.3進(jìn)程控制與進(jìn)程控制相關(guān)的基本操作:進(jìn)程創(chuàng)建進(jìn)程撤銷進(jìn)程睡眠進(jìn)程喚醒針對每種控制操作的三個問題:1:使用或執(zhí)行該操作的時機(jī)??2:執(zhí)行該操作原語時操作系統(tǒng)完成的具體工作??3:Linux操作系統(tǒng)中實現(xiàn)的方法??2023/2/4操作系統(tǒng)與實驗教程第3章第3講44.3.2進(jìn)程創(chuàng)建與撤銷(創(chuàng)建)1.進(jìn)程創(chuàng)建的時機(jī) 在系統(tǒng)生成需要進(jìn)程承擔(dān)資源分配及管理工作——系統(tǒng)進(jìn)程; 用戶作業(yè)的執(zhí)行需創(chuàng)建子進(jìn)程,或作業(yè)中完成某項具體的任務(wù)時——用戶進(jìn)程。2:進(jìn)程創(chuàng)建時操作系統(tǒng)完成的工作分配進(jìn)程標(biāo)識及空白PCB,并在系統(tǒng)進(jìn)程表中增加一個表目。為進(jìn)程分配內(nèi)存空間(程序、數(shù)據(jù)、用戶棧等),復(fù)制父進(jìn)程內(nèi)存空間的內(nèi)容到該進(jìn)程內(nèi)存空間中。初始化PCB。置該進(jìn)程的狀態(tài)為就緒,插入就緒隊列。生成其它相關(guān)的數(shù)據(jù)結(jié)構(gòu)。2023/2/4操作系統(tǒng)與實驗教程第3章第3講5Linux操作系統(tǒng)啟動過程(了解)3.Linux中終端用戶進(jìn)程的創(chuàng)建與調(diào)度執(zhí)行2023/2/4操作系統(tǒng)與實驗教程第3章第3講63.Linux中終端用戶進(jìn)程的創(chuàng)建與調(diào)度執(zhí)行Linux操作系統(tǒng)中用戶進(jìn)程的創(chuàng)建過程:當(dāng)用戶在鍵盤上鍵入一個用戶可執(zhí)行文件名時,操作系統(tǒng)就為該文件創(chuàng)建一個相應(yīng)的用戶進(jìn)程并投入運(yùn)行。如編譯一程序后可執(zhí)行文件名為:a.out在當(dāng)前目錄下:./a.out,操作系統(tǒng)將創(chuàng)建一進(jìn)程運(yùn)行該程序(由終端程序使用fork()創(chuàng)建)。2023/2/4操作系統(tǒng)與實驗教程第3章第3講74.Linux中用戶子進(jìn)程的創(chuàng)建與調(diào)度執(zhí)行Linux提供的創(chuàng)建子進(jìn)程的系統(tǒng)調(diào)用為fork()。格式:intfork()返回值:=0 創(chuàng)建成功,從子進(jìn)程返回;
>0 創(chuàng)建成功,從父進(jìn)程返回,其值為子進(jìn)程的PID號;
=-1 創(chuàng)建失敗。2023/2/4操作系統(tǒng)與實驗教程第3章第3講84.Linux中用戶子進(jìn)程的創(chuàng)建與調(diào)度執(zhí)行Linux中子進(jìn)程創(chuàng)建時操作系統(tǒng)完成的工作:(了解)檢查同時運(yùn)行的進(jìn)程數(shù)目,若超過系統(tǒng)設(shè)定值則創(chuàng)建失敗,返回-1;為子進(jìn)程分配進(jìn)程控制塊task_struct結(jié)構(gòu),并賦予唯一進(jìn)程標(biāo)識符pid;子進(jìn)程繼承父進(jìn)程打開的所有文件及資源,對父進(jìn)程的當(dāng)前目錄和所有已打開系統(tǒng)文件表項中的引用記數(shù)加1;為子進(jìn)程創(chuàng)建進(jìn)程映像:創(chuàng)建子進(jìn)程映像靜態(tài)部分:復(fù)制父進(jìn)程映像靜態(tài)部分創(chuàng)建子進(jìn)程映像動態(tài)部分:初始化task_struct結(jié)構(gòu)結(jié)束創(chuàng)建,置子進(jìn)程為內(nèi)存就緒狀態(tài),插入就緒隊列,作為一個獨立的進(jìn)程被系統(tǒng)調(diào)度。若調(diào)用進(jìn)程(父進(jìn)程)返回,則返回創(chuàng)建的子進(jìn)程標(biāo)識符pid值(此時返回值>0);若子進(jìn)程被調(diào)度執(zhí)行,則將其U區(qū)計時字段初始化然后返回(此時返回值=0)。2023/2/4操作系統(tǒng)與實驗教程第3章第3講9使用fork創(chuàng)建進(jìn)程時的應(yīng)用程序的框架結(jié)構(gòu):main(){ intp; //存放子進(jìn)程pid號
while((p=fork())==-1); //創(chuàng)建子進(jìn)程直到成功為止
if(p==0) //返回值=0表示子進(jìn)程返回
{ /*此處插入子進(jìn)程程序段*/ } else //返回值>0表示父進(jìn)程返回
{ /*此處插入父進(jìn)程程序段*/ }}4.Linux中用戶子進(jìn)程的創(chuàng)建與調(diào)度執(zhí)行2023/2/4操作系統(tǒng)與實驗教程第3章第3講10#include<stdio.h>main(){intp1;
printf("Processbegin\n");
while((p1=fork())==-1);
if(p1==0)printf("Iamchild\n"); elseprintf("Iamfather\n");
printf("processend\n");}思考題:以下兩程序運(yùn)行后的結(jié)果是什么??并分析其原因。
#include<stdio.h>main(){intp1;
printf("Processbegin");
while((p1=fork())==-1);
if(p1==0)printf("Iamchild\n"); elseprintf("Iamfather\n");
printf("processend\n");
}2023/2/4操作系統(tǒng)與實驗教程第3章第3講11[例3-3]父進(jìn)程創(chuàng)建子進(jìn)程P1、P2,父子進(jìn)程分別輸出字符a、b和c。假設(shè)文件名為3-3.c#include<stdio.h>main(){ intp1,p2; while((p1=fork())==-1); //創(chuàng)建子進(jìn)程1,直至創(chuàng)建成功
if(p1==0) //子進(jìn)程P1返回輸出’b’ putchar('b'); else //父進(jìn)程返回
{ while((p2=fork())==-1); //創(chuàng)建子進(jìn)程2
if(p2==0) //子進(jìn)程P2返回輸出’c’ putchar('c'); else putchar('a'); //父進(jìn)程返回輸出’a’ }}2023/2/4操作系統(tǒng)與實驗教程第3章第3講12該程序多次運(yùn)行后,輸出的結(jié)果可能會是:abc、acb、bca、cba、bac或cab等隨機(jī)結(jié)果中的任意一種。每次運(yùn)行后都會產(chǎn)生父子3個進(jìn)程,所以有3個字符輸出。2023/2/4操作系統(tǒng)與實驗教程第3章第3講13子進(jìn)程映像與父進(jìn)程映像是存儲在兩個不同的地址空間中內(nèi)容相同的程序副本;因為父子映像有各自的存儲空間,雙方都感覺不到對方的行為;父子進(jìn)程各自的PC指針都指向fork結(jié)束后的下一條指令地址;操作系統(tǒng)對于父子進(jìn)程的調(diào)度執(zhí)行具有隨機(jī)性。使用fork()創(chuàng)建進(jìn)程的特點:2023/2/4操作系統(tǒng)與實驗教程第3章第3講144.3.2進(jìn)程創(chuàng)建與撤銷(撤銷)1.進(jìn)程撤銷的時機(jī)當(dāng)一個進(jìn)程已經(jīng)完成所需完成的工作時,可以調(diào)用進(jìn)程撤銷原語自我撤銷,進(jìn)程終止,最后消亡。2:進(jìn)程撤銷時,操作系統(tǒng)完成的任務(wù):釋放進(jìn)程所占資源;將該進(jìn)程從系統(tǒng)進(jìn)程表中刪除,釋放該進(jìn)程的PCB。CPU被釋放,進(jìn)行進(jìn)程調(diào)度。2023/2/4操作系統(tǒng)與實驗教程第3章第3講154.3.2進(jìn)程創(chuàng)建與撤銷(撤銷)3.Linux中進(jìn)程的撤銷Linux中提供的撤銷進(jìn)程系統(tǒng)調(diào)用為exit():格式:voidexit(intstatus)參數(shù):intstatus:子進(jìn)程向父進(jìn)程發(fā)送的終止信息,父進(jìn)程可通過wait()系統(tǒng)調(diào)用獲取。返回值:無。頭文件:#include<stdlib.h>2023/2/4操作系統(tǒng)與實驗教程第3章第3講164.3.2進(jìn)程創(chuàng)建與撤銷(撤銷)Linux中子進(jìn)程終止時操作系統(tǒng)完成的工作:(了解)關(guān)閉軟中斷:因為進(jìn)程即將終止而不再處理任何軟中斷信號;回收資源:關(guān)閉所有已打開文件,釋放進(jìn)程所有的區(qū)及相應(yīng)內(nèi)存,釋放當(dāng)前目錄及修改根目錄的索引節(jié)點;寫記帳信息:將進(jìn)程在運(yùn)行過程中所產(chǎn)生的記帳數(shù)據(jù)(其中包括進(jìn)程運(yùn)行時的各種統(tǒng)計信息)記錄到一個全局記帳文件中;置該進(jìn)程為僵死狀態(tài):向父進(jìn)程發(fā)送子進(jìn)程死的軟中斷信號,將終止信息status送到指定的存儲單元中;轉(zhuǎn)進(jìn)程調(diào)度:因為此時CPU已經(jīng)被釋放,需要由進(jìn)程調(diào)度進(jìn)行CPU再分配。2023/2/4操作系統(tǒng)與實驗教程第3章第3講174.3.3進(jìn)程阻塞與喚醒(阻塞)1.進(jìn)程阻塞的時機(jī) 當(dāng)一個進(jìn)程因為某種執(zhí)行條件暫不滿足或者等待某個事件的發(fā)生時。以下皆是引起進(jìn)程阻塞的事件:進(jìn)程請求I/O;進(jìn)程請求系統(tǒng)資源時需要排隊或暫時得不到滿足;進(jìn)程請求的同步或互斥信號沒有滿足或等待的同步消息沒有到來;進(jìn)程請求延時。2023/2/4操作系統(tǒng)與實驗教程第3章第3講184.3.3進(jìn)程阻塞與喚醒(阻塞)2:進(jìn)程睡眠原語執(zhí)行后,操作系統(tǒng)需完成的工作:⑴.將當(dāng)前需要睡眠的進(jìn)程運(yùn)行現(xiàn)場保護(hù)到其PCB中;⑵.置進(jìn)程的狀態(tài)為阻塞態(tài);⑶.將該進(jìn)程插入引起睡眠的chan的等待隊列(假設(shè)引起睡眠的原因為chan,);⑷.CPU空閑,進(jìn)行進(jìn)程調(diào)度,以調(diào)度另一個進(jìn)程投入運(yùn)行。2023/2/4操作系統(tǒng)與實驗教程第3章第3講194.3.3進(jìn)程阻塞與喚醒(阻塞)3.Linux中進(jìn)程的睡眠1)當(dāng)進(jìn)程使用了某個系統(tǒng)調(diào)用后,申請的某個條件或I/O服務(wù)未得到滿足時,該進(jìn)程會自動進(jìn)入睡眠;2)Linux為用戶提供了多種直接導(dǎo)致進(jìn)程睡眠或等待的系統(tǒng)調(diào)用。sleep系統(tǒng)調(diào)用,將進(jìn)程睡眠n秒:格式:sleep(n)其中:n表示延時的秒數(shù)。2023/2/4操作系統(tǒng)與實驗教程第3章第3講20
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 競聘崗位發(fā)言稿
- 2024版機(jī)電設(shè)備買賣合同書
- 2024年車輛收車協(xié)議:以租代購方式2篇
- 2024琴行教師聘請及教學(xué)成果考核合同范本3篇
- 2024年高速公路路燈采購與安裝合同
- 2024年高壓輸電線路設(shè)計咨詢專項合同范本
- 三人協(xié)作商務(wù)協(xié)議樣本一
- 2024承包土方填土合同模板
- 祛斑知識培訓(xùn)課件下載
- 2024年食品行業(yè)ERP系統(tǒng)購銷協(xié)議3篇
- -長峰醫(yī)院火災(zāi)事故教育
- GB/T 4706.59-2024家用和類似用途電器的安全第59部分:口腔衛(wèi)生器具的特殊要求
- 《經(jīng)濟(jì)法基礎(chǔ)》全套教學(xué)課件
- 2024年北京電子科技職業(yè)學(xué)院高職單招筆試歷年職業(yè)技能測驗典型例題與考點解析含答案
- 沖突影響和高風(fēng)險區(qū)域礦產(chǎn)負(fù)責(zé)任供應(yīng)鏈的盡職調(diào)查指南
- 《藥品經(jīng)營質(zhì)量管理規(guī)范-令GSP管理》課件
- 2024年618調(diào)味品銷售數(shù)據(jù)解讀報告-星圖數(shù)據(jù)x味動中國組委會-202406
- 雙方結(jié)清賠償協(xié)議書
- 腹腔鏡下胰體尾切除術(shù)手術(shù)配合課件
- 納布啡在急性疼痛控制中的應(yīng)用
- ISO15614-1 2017 金屬材料焊接工藝規(guī)程及評定(中文版)
評論
0/150
提交評論