版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、西安郵電大學(xué)(計(jì)算機(jī)學(xué)院)課內(nèi)實(shí)豔報(bào)告實(shí)驗(yàn)名稱專業(yè)名稱:計(jì)算機(jī)科學(xué)與技術(shù)班 級:計(jì)科1104學(xué)生姓名:張冬冬(07)學(xué)號(8 位):04111112指導(dǎo)教師:任東陜設(shè)計(jì)起止時(shí)間:2013年"月22日一. 實(shí)驗(yàn)?zāi)康募皩?shí)驗(yàn)環(huán)境(1)加深對進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別。(2)進(jìn)一步認(rèn)識并發(fā)執(zhí)行的實(shí)質(zhì)。(3)分析進(jìn)程競爭資源現(xiàn)彖,學(xué)習(xí)解決進(jìn)程互斥的方法。(4)了解Linux系統(tǒng)中進(jìn)程通信的基本原理。二. 實(shí)驗(yàn)內(nèi)容(1)進(jìn)程的創(chuàng)建編寫一段源程序,使系統(tǒng)調(diào)用forkO創(chuàng)建兩個(gè)子進(jìn)程,當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有一 個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動。讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符:父進(jìn)程顯示字符“
2、a” ; 子進(jìn)程分別顯示字符“b”和字符“c”。試觀察紀(jì)錄屏幕上的顯示結(jié)果,并分析原因。(2)進(jìn)程的控制修改已編寫的程序,將每個(gè)進(jìn)程輸出一個(gè)字符改為每個(gè)進(jìn)程輸出一句話,在觀察程序執(zhí) 行時(shí)屏幕出現(xiàn)的現(xiàn)彖,并分析原因。如呆在程序中使用調(diào)用lockfO來給每一個(gè)子進(jìn)程加鎖,可以實(shí)現(xiàn)進(jìn)程之間的互斥,觀察 并分析出現(xiàn)的現(xiàn)彖。(3)編寫一段程序,使其現(xiàn)實(shí)進(jìn)程的軟中斷通信。要求:使用系統(tǒng)調(diào)用forkO創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用signal 0讓父進(jìn)程捕捉鍵盤 上來的中斷信號(即按DEL鍵):當(dāng)捕捉到中斷信號后,父進(jìn)程用系統(tǒng)調(diào)用Kill ()向兩個(gè)子 進(jìn)程發(fā)出信號,子進(jìn)程捕捉到信號后分別輸出下列信息后終止:
3、Child Processll is Killed by Parent!Child Processl2 is Killed by Parent!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出如下的信息后終止Parent Process is Killed!在上面的程序中增加語句signal (SIGNAL, SIGTGN)和signal (SIGQUIT, SIGTGN), 觀察執(zhí)行結(jié)果,并分析原因。(4)進(jìn)程的管道通信編制一段程序,實(shí)現(xiàn)進(jìn)程的管理通信。使用系統(tǒng)調(diào)用pipe。建立一條管道線;兩個(gè)子進(jìn)程P1和P2分別向管道中寫一句話:Child 1 is sending a message!Child 2 i
4、s sending a message!而父進(jìn)程則從管道中讀出來自于兩個(gè)子進(jìn)程的信息,顯示在屏幕上。要求父進(jìn)程先接收子進(jìn)程P1發(fā)來的消息,然后再接收子進(jìn)程P2發(fā)來的消息。三. 方案設(shè)計(jì)1.進(jìn)程的創(chuàng)建任務(wù)編寫一段程序,使用系統(tǒng)調(diào)用forkO創(chuàng)建兩個(gè)子進(jìn)程。當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有 一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動。讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符;父進(jìn)程顯示字符 “a”,子進(jìn)程分別顯示字符“b”和“c”。試觀察記錄屏幕上的顯示結(jié)果,并分析原因。 程序# iiiclude<stdio.h>main()嚴(yán)子進(jìn)程創(chuàng)建成功可/*子進(jìn)程創(chuàng)建成功*/*父進(jìn)程執(zhí)行5»7mtpLp2;if(p
5、l=fork() putcharfb*);else if(p2=forkQ) putcharfc*);else putchaia1);運(yùn)行結(jié)果bca (有時(shí)會出現(xiàn)bac)分析:從進(jìn)程執(zhí)行并發(fā)來看,輸出bac, acb等情況都有可能。原因:fork。創(chuàng)建進(jìn)程所需的時(shí)間多于輸出一個(gè)字符的時(shí)間,因此在主進(jìn)程創(chuàng)建進(jìn)程2的同 時(shí),進(jìn)程1就輸出了 “b”,而進(jìn)程2和主程序的輸出次序是有隨機(jī)性的,所以會出現(xiàn)上述 結(jié)果。2 進(jìn)程的控制任務(wù)修改已編寫好的程序,將每個(gè)程序的輸出由單個(gè)字符改為一句話,再觀察程序執(zhí)行時(shí)屏幕 上出現(xiàn)的現(xiàn)彖,并分析其原因。如果在程序中使用系統(tǒng)調(diào)用lockf()來給每個(gè)程序加鎖,可 以實(shí)現(xiàn)
6、進(jìn)程之間的互斥,觀察并分析出現(xiàn)的現(xiàn)彖。程序1#include<stdio.h>mam()intpl.p2j;if(pl=fork()fbr(i=0;i<500;i+) printff'child %d'jT,i);elseif(p2=forkQ)fbr(i=0;i<500;i+)prmtf(Hson %d'jT,i);elsefbr(i=0;i<500;i+)prmtf(Hdaughter %dMU);child .sondaughter* daughter* 或 childson childsondaugh ter分析:由于函數(shù)print
7、f ()輸出的字符串之間不會被中斷,因此,字符串內(nèi)部的字符順 序輸出時(shí)不變。但是,由于進(jìn)程并發(fā)執(zhí)行時(shí)的調(diào)度順序和父子進(jìn)程的搶占處理機(jī)問題,輸 出字符串的順序和先后隨著執(zhí)行的不同而發(fā)生變化。這與打印單字符的結(jié)果相同。程序2)# iiiclude<stdio.h>main()intphp2j;if(pl=fork()lockf(l 丄 0);fbr(i=0;i<500;i+) printf(”child %dn*i);lockf(l 丄 0);elseif(p2=forkQ) lockf(l 丄 0);fbr(i=0;K500;i+) pimtf(Mson %d iri); lo
8、ckf( 1,1.0);elselockf(l 丄 0);fbi(i=0;i<500;i+) printf(Hdaughter %diT;i);lockf(l、0、0);人致與未上鎖的輸出結(jié)呆相同,也是隨著執(zhí)行時(shí)間不同,輸出結(jié)果的順序有所不同。 分析:因?yàn)樯鲜龀绦驁?zhí)行時(shí),不同進(jìn)程之間不存在共享臨界資源(其中打印機(jī)的互斥性 已有由操作系統(tǒng)保證)問題,所以,加鎖與不加鎖效果相同。3. 軟中斷通信任務(wù)1)編制一段程序,使用系統(tǒng)調(diào)用forkO創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用signal ()讓父進(jìn) 程捕捉鍵盤上來的中斷信號(即按ctrl+c鍵),當(dāng)捕捉到中斷信號后,父進(jìn)程用系統(tǒng)調(diào)用 killO向兩個(gè)
9、子進(jìn)程發(fā)出信號,子進(jìn)程捕捉到信號后,分別輸出下列信息后終止: child processl is killed by parent!child process2 is killed by parent!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出以下信息后終止: parent process is killed!4.fork()創(chuàng)建一個(gè)新進(jìn)程。 系統(tǒng)調(diào)用格式: pid=fbrk() 參數(shù)定義: mt foik() fork()返回值意義如下: 0:在子進(jìn)程中,pid變量保存的fork()返回值為0,表示當(dāng)前進(jìn)程是子進(jìn)程。 >0:在父進(jìn)程中,pid變量保存的fork()返回值為子進(jìn)程的id值(進(jìn)程唯一
10、標(biāo)識符)。 -1:創(chuàng)建失敗。如果fork()調(diào)用成功,它向父進(jìn)程返回子進(jìn)程的PLD.并向子進(jìn)程返回0,即fork()被調(diào)用 了一次,但返回了兩次。此時(shí)OS在內(nèi)存中建立一個(gè)新進(jìn)程,所建的新進(jìn)程是調(diào)用fork()父 進(jìn)程(parent process)的副本,稱為子進(jìn)程(cluld process)<>子進(jìn)程繼承了父進(jìn)程的許多特 性,并具有與父進(jìn)程完全相同的用戶級上下文。父進(jìn)程與子進(jìn)程并發(fā)執(zhí)行。核心為fbrk()完成以下操作:(1) 為新進(jìn)程分配一進(jìn)程表項(xiàng)和進(jìn)程標(biāo)識符進(jìn)入fork()后,核心檢查系統(tǒng)是否有足夠的資源來建立一個(gè)新進(jìn)程。若資源不足,則fork() 系統(tǒng)調(diào)用失??;否則,核心為
11、新進(jìn)程分配一進(jìn)程表項(xiàng)和唯一的進(jìn)程標(biāo)識符。(2) 檢查同時(shí)運(yùn)行的進(jìn)程數(shù)目超過預(yù)先規(guī)定的最大數(shù)目時(shí),fork()系統(tǒng)調(diào)用失敗。(3) 拷貝進(jìn)程表項(xiàng)中的數(shù)據(jù)將父進(jìn)程的當(dāng)前目錄和所有已打開的數(shù)據(jù)拷貝到子進(jìn)程表項(xiàng)中,并置進(jìn)程的狀態(tài)為“創(chuàng)建” 狀態(tài)。(4) 子進(jìn)程繼承父進(jìn)程的所有文件對父進(jìn)程當(dāng)前目錄和所有已打開的文件表項(xiàng)中的引用計(jì)數(shù)加lo(5) 為子進(jìn)程創(chuàng)建進(jìn)程上、下文進(jìn)程創(chuàng)建結(jié)束,設(shè)子進(jìn)程狀態(tài)為“內(nèi)存中就緒”并返回子進(jìn)程的標(biāo)識符。(6) 子進(jìn)程執(zhí)行雖然父進(jìn)程與子進(jìn)程程序完全相同,但每個(gè)進(jìn)程都有自己的程序計(jì)數(shù)器pc,然后根據(jù)pid變 量保存的fork()返回值的不同,執(zhí)行了不同的分支語句。#include
12、 <stdio.h> main() intpl,p2;wliile(pl=fork( )= = -1);/*創(chuàng)建子進(jìn)程 pl*/if (pl= =0) putchaib1);elsewliile(p2=fork( )= = -1); /*創(chuàng)建子進(jìn)程 p2*/ if(p2= =0) putcharfc1);else putcharfa1);運(yùn)行結(jié)果:bcaLi.cr? iij?cta.c i_4.<T_l.c- I2.1.CI_2.c* T-J.c* 1.4.c*T,T2J.C* 1.3四測試數(shù)據(jù)及運(yùn)行結(jié)果X'V iwv 竺弓巴絃5U2時(shí)程如WOT'W| r &
13、#187;r h»i hILiw* *|* l hfiA<nMA-isQt> irtAll OrskxoQscsrun 】e«LRSlalirooteiocalhost 丁 /t b « ! rrotebHBlhi->i. *JS |rootij'locslhosti*-文A® ifiSHQ第館 奇3E® BfU®ra21oc°1gwt mt is cd '(roctlocalhost *r 1*nicomJa&-cfs install J cT-lIJ2TZJ.c*r.ii&quo
14、t; WTiT;c7.3.cTJ.c0 *上w uruti. L«urj.c*n l.tT 2廠廠r 4.r*|roct61 <filbc»bt * |» /J ?.co»M讓./TJ?.cr tZHTroct«localbo&t 卜 Uanaconda aksI r>»tai ll«)cTJTZJ.c*T-3T-igdl 蝕i vwial 1TJtHL】T亠T.3,<TJ.ti U>|Tig.“5.1 dig1 He*1 2 廣【:.'1 roctloCAldo&t &quo
15、t; |> /I 2:rocKlocolbost 卩 Tt?l 干i?f?205- se煽曲已卅色主ts rGL 廠2 八Fi*R >u "rJ»-匸二 *-j 上 :二二:r二二 17-Erefnj,woc 匕 b 5 T 7<wtlsloH»host:>MReiariaT ¥t-;y> 迤攜ew 職© 上匕&-20&rx!L!M12*ll、r4 B ch 二a二Inmnrm VCKIQ2Hx.h ; $rd-r!R 再小占門巳 -2r -©】:1 y Tno na 一 homrri X
16、M- s1. 實(shí)驗(yàn)過程中遇到的問題及解決辦法;實(shí)驗(yàn)結(jié)果為c,b,a或b,c,a。父進(jìn)程a剛啟動,接著就生成子進(jìn)程b,c,父進(jìn)程此 時(shí)之后暫停,去生成子進(jìn)程b,c。生成完子進(jìn)程b,c之后,父進(jìn)程繼續(xù)執(zhí)行。2.不 能夠同時(shí)生兩個(gè)子進(jìn)程,會發(fā)生進(jìn)程間的互斥。進(jìn)程創(chuàng)見之后,從鍵盤上接受一個(gè)信后,然后關(guān)閉子進(jìn)程和父進(jìn)程。4.子進(jìn) 程之間通過管道相互發(fā)送消息2. 對設(shè)計(jì)及調(diào)試過程的心得體會。本次實(shí)驗(yàn)主要實(shí)現(xiàn)Linux操作系統(tǒng)中進(jìn)程管理的功能。了解了進(jìn)程的創(chuàng)建、執(zhí)行 特定任務(wù)、終止、和同步的相關(guān)系統(tǒng)調(diào)用。理解了 folk、exec、wait、exit3個(gè)系 統(tǒng)調(diào)用的使用。該系統(tǒng)包括有簡單的進(jìn)程控制、同步與通訊機(jī)構(gòu),系統(tǒng)在運(yùn)行過 程中能顯示各進(jìn)程的狀態(tài)及有關(guān)參數(shù)的變化情況,從而觀察諸進(jìn)程的運(yùn)行過程及 系統(tǒng)的管理過程,在我的電腦能夠運(yùn)行通過,雖不能盡善盡美,但也基本能實(shí)現(xiàn) 老師的要求的
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版特色餐飲店鋪出租管理協(xié)議3篇
- 2025版小額貸款抵押合同財(cái)務(wù)報(bào)告披露要求3篇
- 買賣合同糾紛代理詞3篇
- 二零二五版薦知識產(chǎn)權(quán)擔(dān)保交易合同集3篇
- 二零二五年度城市通勤車輛出租合作協(xié)議4篇
- 二零二五年度員工借款爭議調(diào)解及勞動法執(zhí)行合同
- 二零二五年度農(nóng)業(yè)OEM產(chǎn)品種植與加工合同范本3篇
- 二零二五年度工業(yè)廠房租賃市場拓展合同范本3篇
- 二零二五年度光伏充電樁場地共享租賃合同3篇
- 2025年度倉儲物流零星維修施工合同協(xié)議書3篇
- 湖北省黃石市陽新縣2024-2025學(xué)年八年級上學(xué)期數(shù)學(xué)期末考試題 含答案
- 硝化棉是天然纖維素硝化棉制造行業(yè)分析報(bào)告
- 央視網(wǎng)2025亞冬會營銷方案
- 《00541語言學(xué)概論》自考復(fù)習(xí)題庫(含答案)
- 《無砟軌道施工與組織》 課件 第十講雙塊式無砟軌道施工工藝
- 江蘇省南京市、鹽城市2023-2024學(xué)年高三上學(xué)期期末調(diào)研測試+英語+ 含答案
- 2024新版《藥品管理法》培訓(xùn)課件
- 《阻燃材料與技術(shù)》課件 第7講 阻燃橡膠材料
- 爆炸物運(yùn)輸安全保障方案
- 江蘇省南京市2025屆高三學(xué)業(yè)水平調(diào)研考試數(shù)學(xué)試卷(解析版)
- 2024年黑龍江省哈爾濱市中考數(shù)學(xué)試卷(附答案)
評論
0/150
提交評論