




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、箏波大考NINGBOUNIVERSITY實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目姓名:學(xué)號(hào):一課程名稱:操作系統(tǒng)實(shí)驗(yàn)所在學(xué)院:信息科學(xué)與工程學(xué)院專業(yè)班級(jí):計(jì)算機(jī)任課教師:實(shí)驗(yàn)項(xiàng)目名稱進(jìn)程的創(chuàng)建與控制實(shí)驗(yàn)?zāi)康呐c要求:1、 掌握進(jìn)程的概念,明確進(jìn)程的含義2、 認(rèn)識(shí)并了解并發(fā)執(zhí)行的實(shí)質(zhì)3、 掌握進(jìn)程另外的創(chuàng)建方法4、 熟悉進(jìn)程的睡眠、同步、撤消等進(jìn)程控制方法實(shí)驗(yàn)設(shè)備及軟件:1、 電腦一臺(tái)2、 Linux操作系統(tǒng)實(shí)驗(yàn)方法(原理、流程圖)1、fork()創(chuàng)建一個(gè)新進(jìn)程。系統(tǒng)調(diào)用格式:pid=fork()參數(shù)定義:intfork()fork()返回值意義如下:若子進(jìn)程創(chuàng)建失敗,則調(diào)用進(jìn)程獲得返回值-1。若創(chuàng)建成功,在子進(jìn)程中,f
2、ork()返回值為0,表示當(dāng)前進(jìn)程是子進(jìn)程;在父進(jìn)程中,fork()返回值為子進(jìn)程的id值(>0)。如果fork()調(diào)用成功,它向父進(jìn)程返回子進(jìn)程的PID,并向子進(jìn)程返回0,即fork()調(diào)用一次,但在不同進(jìn)程返回不同的值。此時(shí)OS在內(nèi)存中建立一個(gè)新進(jìn)程,所建的新進(jìn)程是調(diào)用fork()父進(jìn)程(parentprocess)的副本,稱為子進(jìn)程(childprocess)。子進(jìn)程繼承了父進(jìn)程的許多特性,并具有與父進(jìn)程完全相同的用戶級(jí)上下文。父進(jìn)程與子進(jìn)程并發(fā)執(zhí)行。圖ILINUX進(jìn)程狀志之間的轉(zhuǎn)換核心為fork()完成以下操作:(1)為新進(jìn)程分配一進(jìn)程表項(xiàng)和進(jìn)程標(biāo)識(shí)符進(jìn)入fork()后,核心檢查
3、系統(tǒng)是否有足夠的資源來(lái)建立一個(gè)新進(jìn)程。若資源不足,則fork()系統(tǒng)調(diào)用失?。环駝t,核心為新進(jìn)程分配一進(jìn)程表項(xiàng)和唯一的進(jìn)程標(biāo)識(shí)符。(2)檢查同時(shí)運(yùn)行的進(jìn)程數(shù)目超過(guò)預(yù)先規(guī)定的最大數(shù)目時(shí),fork()系統(tǒng)調(diào)用失敗。(3)拷貝進(jìn)程表項(xiàng)中的數(shù)據(jù)將父進(jìn)程的當(dāng)前目錄和所有已打開(kāi)的數(shù)據(jù)拷貝到子進(jìn)程表項(xiàng)中,并置進(jìn)程的狀態(tài)為“創(chuàng)建”狀態(tài)。(4)子進(jìn)程繼承父進(jìn)程的所有文件對(duì)父進(jìn)程當(dāng)前目錄和所有已打開(kāi)的文件表項(xiàng)中的引用計(jì)數(shù)加1。(5)為子進(jìn)程創(chuàng)建進(jìn)程上、下文進(jìn)程創(chuàng)建結(jié)束,設(shè)子進(jìn)程狀態(tài)為“內(nèi)存中就緒”并返回子進(jìn)程的標(biāo)識(shí)符。(6)子進(jìn)程執(zhí)行雖然父進(jìn)程與子進(jìn)程程序完全相同,但每個(gè)進(jìn)程都有自己的程序計(jì)數(shù)器PC注意子進(jìn)程的注
4、意子進(jìn)程的PC開(kāi)始位置),然后根據(jù)pid變量保存的fork()返回值的不同,執(zhí)行了不同的分支語(yǔ)句。四、實(shí)驗(yàn)過(guò)程、步驟及內(nèi)容1、編寫(xiě)一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程。當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。讓每一個(gè)進(jìn)程在屏幕上顯個(gè)字符:父進(jìn)程顯示'a',子進(jìn)程分別顯示字符b'和字符'c'。試觀察記錄屏幕上的顯示結(jié)果,并分析原因。2、修改上述程序,每一個(gè)進(jìn)程循環(huán)顯示一句話。子進(jìn)程顯示'son;父進(jìn)程顯示'parent;觀察結(jié)果,分析原因。'daughter及3、用fork()創(chuàng)建一個(gè)進(jìn)程,再調(diào)用exec(
5、用新的程序替換該子進(jìn)程的內(nèi)容4、用fork()建立如下形式的進(jìn)程樹(shù):各個(gè)進(jìn)程中都打印出本身PID和其父進(jìn)程的PID,并用wa4()來(lái)控制進(jìn)程執(zhí)行順序,打印出正確和期望的結(jié)果。實(shí)驗(yàn)步驟1.創(chuàng)建空文件,后綴為.c2.打開(kāi)文件編寫(xiě)代碼(利用參考代碼)打畀血jt儀將圖-*MAfl4F)購(gòu)日技和斛工知T>文杓山幫幼的,】nclud學(xué)y$tdig.h>。二RElude考丫號(hào)'tvpr.hiljncludecunitd.h>nidirO<intpLp2"Mig3 .通過(guò)GCC命令生成可執(zhí)行文件(a.out)a.outmMara4 .執(zhí)行文件aAK5PHO圖卻111。
6、映啕L餐中帶助回sbiynLcsu:$gttafcar.t$hiyanku:bm:口l,/a,outjhiyonlou:ni.fa.outHt»i17JhShiyanLou:m點(diǎn)£Jm.o時(shí)19:29:11sbivanlcu:iriJd.M19;79:415hiy«iluj;bs<2<:"i.DUt1>J9;<7寫(xiě)hiyhilcu:日中£JH.MtD:»:51shiy加leu:£Ja.ciut19:29:571%Gmyanlcu:artj$JH.OUt口文押;5ylshiyanlcu:蠅£L
7、l9t!0:eihiyanlcu:ba用I./3.DUtgsshiyanlcu:“1口器堀:蛇yiiy«ilou:Sgeeartar.cshiyinlou:$./a.outparent,tMfent1son9wc9iyanlou:、,$廣,S/aovtdaugnttrCdaughter1dau中【r1daugnter5daughter4datiqnrerSdaughter6daughter7daughter8daughter9sen0sen1sen2,cn?sen4sen55cn6sen7sen8sen9por9ntQcurent1parent2parent3parent4paren
8、t5parent6parent7parent8parent9皿“23廣,$|卜hiy型&1./d.CHltdayqhiterHdaughter1daughter?daughter5JeiLighlei4muqhtcrSdaughter6diuQhter1daughtpr3daughter9parentJparent1parent1parent?parent4pr?nt4向enl6pjrent/田trmlSparent9sonBpan1ton2san1kan4son5sdn6san?sgnBsan9MNaniMii1進(jìn)程的控制:,“H:-片帽£門(mén)的上rr.R席蓄使1洋處21)a
9、&har-c:Infunctian'uinf:akar.c:12:3:*arfling:kiplkltdeelarationoffunction-tfimplicit-4unctjon-declarjtion>右sk己.仃12:3:varning;incanpdtiblemplkitdeclarationoftMilt-infunction'exitJasiarx:1J:3:note:includeZstdlib*rorprovide$declarationof'exit'宮城岳匕己18:交«3rrii<ij:Lfplieitdet
10、larationoftunctjnrtmit'rinplkitduiutio-declar3tjonwait(OL);AshiT»nlw;VI【19:01"5】shiyanlou:-1/J"露口utI9:fl1:15J息用量24drvixr->r-x2shiynlou4典6b月1111:55DesktopdriniFwxr-i2ShiyanLou4眄6b月itn:wCod日-m-rwr1shiyanlou31610月2819:aflaskar.ckrwnixr-K15hiy«nlau鴕的曲月28I9;eimutIrmcrwxrax1itdy
11、anlou106月1111i;55antandajr->/anacondddIsWMpletkIShiyanlour/f19:01:275 .觀察實(shí)驗(yàn)結(jié)果并分析原因1、從進(jìn)程并發(fā)執(zhí)行來(lái)看,各種情況都有可能。上面的三個(gè)進(jìn)程沒(méi)有同步措施,所以父進(jìn)程與子進(jìn)程的輸出內(nèi)容會(huì)疊加在一起。輸出次序帶有隨機(jī)性。Fork()創(chuàng)建進(jìn)程所需的時(shí)間多于輸入一個(gè)字符的時(shí)間,因此在主進(jìn)程創(chuàng)建進(jìn)程2的同時(shí),進(jìn)程1就輸出了b,而進(jìn)程2和主程序的輸出次序是隨機(jī)性的。2、由于函數(shù)printf()在輸出字符串時(shí)不會(huì)被中斷,因此,字符串內(nèi)部字符順序輸出不變。但由于進(jìn)程并發(fā)執(zhí)行的調(diào)度順序和父子進(jìn)程搶占處理機(jī)問(wèn)題,輸出字符串的順序
12、和先后隨著執(zhí)行的不同而發(fā)生變化。這與打印單字符的結(jié)果相同。3、程序在調(diào)用fork()建立一個(gè)子進(jìn)程后,馬上調(diào)用wait(),使父進(jìn)程在子進(jìn)程結(jié)束之前,一直處于睡眠狀態(tài)。子進(jìn)程用exec()裝入命令ls,exec()后,子進(jìn)程的代碼被ls的代碼取代,這時(shí)子進(jìn)程的PC指向ls的第1條語(yǔ)句,開(kāi)始執(zhí)行l(wèi)s的命令代碼。注意在這里wait()給我們提供了一種實(shí)現(xiàn)進(jìn)程同步的簡(jiǎn)單方法。參考代碼1、#include<stdio.h>#include<sys/types.h>#include<unistd.h>main()intp1,p2;while(p1=fork()=-1)
13、;/*創(chuàng)建子進(jìn)程p1*/if(p1=0)putchar('b');elsewhile(p2=fork()=-1);/*創(chuàng)建子進(jìn)程p2*/if(p2=0)putchar('c');elseputchar('a');2、#include<stdio.h>#include<sys/types.h>#include<unistd.h>main()intp1,p2,i;while(p1=fork()=-1);/*創(chuàng)建子進(jìn)程p1*/if(p1=0)for(i=0;i<10;i+)printf("daught
14、er%d,i);elsewhile(p2=fork()=-1);/*創(chuàng)建子進(jìn)程p2*/if(p2=0)for(i=0;i<10;i+)printf("daughter%d,i);elsefor(i=0;i<10;i+)printf("daughtern");i)3、#include<stdio.h>#include<sys/types.h>#include<unistd.h>main()intpid;pid=fork();/*創(chuàng)建子進(jìn)程*/switch(pid)case-1:/*創(chuàng)建失敗*/printf("
15、forkfail!n");exit(1);case0:/*子進(jìn)程*/execl("/bin/ls","ls","-1","-color",NULL);printf("execfail!n");exit(1);default:/*父進(jìn)程*/wait(NULL);/*同步*/printf("lscompleted!n");exit(0);實(shí)驗(yàn)數(shù)據(jù)(現(xiàn)象)處理分析錯(cuò)誤信息1jUiar.e!Infunttion'aiif:astar.c:12:3:nrning:im
16、plicitdeclarationoffunctjohe)clt'-limplicit-unctiomdeclaratkntiit(l);dskar«c;12;3;urning;incmp就ibleimplifirdeclarationgfbuilt-infunctionfexitJ卜sk時(shí).“12:3:wt«:includeorpmide3declarMionofrtxitJaskar.c:18rl!nming:iiiplitdtJeclarationMfunetion*nitd-IiijLieit*iunction-decLarationwAit(MLL);錯(cuò)誤信息1ims颯自粗圖西美或I號(hào)期此培勖國(guó)shianlou:"/$a/ar,匚JJ;57Jsftar.<:4:1:warning:returntypedefaultsto1intf-Vlnplicibint|nuin()AasJcar.c:Infunttien'aaln1!asiar.r:J:8:itrar;expectedBcrc&ionbetor?tokenwhileC)AshiyanlouTZ52OJ7:45由于代碼部分調(diào)用系統(tǒng)函數(shù)的不足導(dǎo)致多次無(wú)法生成可執(zhí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人與醫(yī)院合同范本
- 我國(guó)體育非遺保護(hù)與傳承的有效路徑
- 辦公樓員工合同范本
- 前期土地出租合同范本
- 2025年江蘇省建筑安全員-A證考試題庫(kù)及答案
- 勞動(dòng)技術(shù)合同范例
- 產(chǎn)業(yè)園管護(hù)合同范本
- 個(gè)人銷售紅酒合同范本
- 個(gè)人造價(jià)合同范本
- 占用土地承包合同范例
- 機(jī)電預(yù)留預(yù)埋工程施工組織設(shè)計(jì)方案
- 工業(yè)催化劑作用原理—金屬氧化物催化劑
- 2022年三八婦女節(jié)婦女權(quán)益保障法律知識(shí)競(jìng)賽題庫(kù)及答案(共290題)
- 優(yōu)秀教材推薦意見(jiàn)(真實(shí)的專家意見(jiàn))
- 引水罐的設(shè)計(jì)計(jì)算
- Of studies原文譯文及賞析
- 安全閥基本知識(shí)講義
- QTD01鋼質(zhì)焊接氣瓶檢驗(yàn)工藝指導(dǎo)書(shū)
- 辛棄疾生平簡(jiǎn)介(課堂PPT)
- 人教版七年級(jí)英語(yǔ)下冊(cè)全冊(cè)英語(yǔ)單詞默寫(xiě)直接打印
- 《爐中煤》課件.ppt
評(píng)論
0/150
提交評(píng)論