操作系統(tǒng)實(shí)驗(yàn)報(bào)告綜述_第1頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告綜述_第2頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告綜述_第3頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告綜述_第4頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告綜述_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、學(xué)生學(xué)號0121210680225實(shí)驗(yàn)課成績武漢理工大學(xué)實(shí)驗(yàn)課程名稱 開課學(xué)院 指導(dǎo)老師姓名 學(xué)生姓名 學(xué)生專業(yè)班級學(xué)生實(shí)驗(yàn)報(bào)告書操作系統(tǒng)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院劉軍李安福軟件sy12012014 2015學(xué)年第一學(xué)期操作系統(tǒng)實(shí)驗(yàn)教學(xué)大綱課程編號:課程名稱:操作系統(tǒng)/Operati ng System實(shí)驗(yàn)總學(xué)時(shí)數(shù):12學(xué)時(shí)適應(yīng)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程 承擔(dān)實(shí)驗(yàn)室:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí)驗(yàn)中心、實(shí)驗(yàn)教學(xué)的目的和任務(wù)通過實(shí)驗(yàn)掌握Linux系統(tǒng)下常用鍵盤命令、系統(tǒng)調(diào)用、SHELL編程、后臺批處理和C程序開發(fā)調(diào)試手段等基本用法。二、實(shí)驗(yàn)項(xiàng)目及學(xué)時(shí)分配序號實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)學(xué)時(shí)實(shí)驗(yàn)類型開出要求01Li

2、nux鍵盤命令和vi2設(shè)計(jì)必開02Linux下C編程2設(shè)計(jì)必開03SHELLS程和后臺批處理2設(shè)計(jì)必開04Linux系統(tǒng)調(diào)用(time )2設(shè)計(jì)必開05Linux進(jìn)程控制(fork)4設(shè)計(jì)必開三、每項(xiàng)實(shí)驗(yàn)的內(nèi)容和要求:1、Linux鍵盤命令和vi要求:掌握Linux系統(tǒng)鍵盤命令的使用方法。內(nèi)容:見教材 p4, p9, p40, p49-53, p89, p1002、Linux下的C編程要求:掌握vi編輯器的使用方法;掌握 Linux下C程序的源程序編輯方法;編譯、 連接和運(yùn)行方法。內(nèi)容:設(shè)計(jì)、編輯、編譯、連接以及運(yùn)行一個(gè)C程序,其中包含鍵盤輸入和屏幕輸出語句。3、SHELL編程和后臺批處理要求

3、:掌握Linux系統(tǒng)的SHELL編程方法和后臺批處理方法。內(nèi)容:(1)將編譯、連接以及運(yùn)行上述C程序各步驟用 SHELL程序批處理完成,前臺運(yùn)行。(2) 將上面SHELLL程序后臺運(yùn)行。觀察原 C程序運(yùn)行時(shí)輸入輸出情況。(3) 修改調(diào)試上面SHELL程序和C程序,使得在后臺批處理方式下,原鍵 盤輸入內(nèi)容可以鍵盤命令行位置參數(shù)方式交互式輸入替代原鍵盤輸入內(nèi)容,然后輸出到屏幕。4、Linux系統(tǒng)調(diào)用使用方法。要求:掌握Linux系統(tǒng)調(diào)用使用方法。內(nèi)容:學(xué)習(xí)使用time, ctime, sleep, exit等Linux系統(tǒng)調(diào)用使用方法。5、Linux系統(tǒng)進(jìn)程控制要求:掌握Linux系統(tǒng)中進(jìn)程控制原

4、語 fork的使用方法。內(nèi)容:設(shè)計(jì)C程序,其中主進(jìn)程創(chuàng)建一個(gè)子進(jìn)程,以特定次序各自執(zhí)行規(guī)定操作后 退出。以上每項(xiàng)實(shí)驗(yàn)均要求每人一個(gè)Linux聯(lián)機(jī)終端獨(dú)立完成。四、實(shí)驗(yàn)改革與特色完成多用戶分時(shí)系統(tǒng)Linux下的基本使用級觀察級實(shí)驗(yàn)。五、教材及實(shí)驗(yàn)指導(dǎo)書教材:孟靜,操作系統(tǒng)教程題解與實(shí)驗(yàn)指導(dǎo),高等教育出版社2002.6執(zhí)筆:楊銘熙審閱:陳天煌日期2014年12月6審定:徐東平日期2014年12月6實(shí)驗(yàn)項(xiàng)目名稱Linux鍵盤命令和vi實(shí)驗(yàn)成績實(shí)驗(yàn)者李安福專業(yè)班級軟件sy1201組別同組者實(shí)驗(yàn)日期第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁)、實(shí)驗(yàn)內(nèi)容描述(問題域描述)Linux鍵盤命令和vi要求:掌握Linux

5、系統(tǒng)鍵盤命令的使用方法。二、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或 者算法描述)進(jìn)入vi的命令:vifile name:打開或新建文件,并將光標(biāo)置于第一行首vi +n file name:打開文件,并將光標(biāo)置于第 n行首vi + file name:打開文件,并將光標(biāo)置于最后一行首vi+/patter nfile name :打開文件,并將光標(biāo)置于第一個(gè)與patter n 匹配的串處vi -r file name:在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)file namevifile name.file name:打開多個(gè)文件,依次進(jìn)行編輯鍵盤命令:1.

6、cat命令、more命令、less命令:cat命令是將單個(gè)或多個(gè)文件的內(nèi) 容顯示到屏幕上;more命令和less命令與cat命令相似,以分頁形式顯示文件內(nèi) 容。2. ls 命令:將某一個(gè)目錄或文件的內(nèi)容顯示出來3. cp 命令:文件或目錄的復(fù)制4. rm 命令:刪除文件或目錄5. mv命令:將文件從一個(gè)位置移動到另一個(gè)位置6. mkdir命令:創(chuàng)建目錄7. rmdir :刪除空目錄三、主要儀器設(shè)備及耗材安裝Linux系統(tǒng)的計(jì)算機(jī)一臺第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁)6運(yùn)行mv file1 file_a 命令,然后用ls 顯然,只有file_a 在工作目錄中,而file1一、調(diào)試過程(包括調(diào)

7、試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等)1 使用 mkdir命令建立一個(gè)子目錄subdir2 使用cat或more命令查看filel 文件的內(nèi)容。3將date命令的用法附加到文件filel的后面:4 利用Is -l filel 命令列出文件filel的較詳細(xì)的信息。5利用rm fa命令將文件fa刪除。再利用ls -l命令查看工作目錄內(nèi)容。命令查看這兩個(gè)文件是否都還在工作目錄中 不在工作目錄中-ru-rwr-r1smart36Dec722 :22fileldrwxrwxr-x2swartsjxiart4096Dec7E2 ;20drvxrwxr-x2smartsmart.4

8、 OSSSep2416:333inar丄calhocstnar c : *3rm fasmar t 1 QcalhQscsmar: “ $Is -1total 24drwxrwxr-:x2sroar 匸sinar tr4096Sep2417: 15-rurw-r_1smartsmart36Dec722 122fileldrwxruxr-x2sinar tsmart4096Dec722:20drwx匸2smartsunart409&Sep2416;33smar 匸 localhost smart:十 $ :imv filel :file! asmartS local ho st smart;:丄

9、m -1total 24drwx 匚Zsmart號i幅匸匸40962417:15-rwrur-r_swartsmart36Dec722 :22file adrwxrwxr-x2smartsmart.4096Dec722 :20drwxrwxr-x2smar tsinart4D96Sep2416:38sinar c 1 ocalhoscsmart: “$1vi共分為三種模式(1) 命令模式:命令模式為Vi的初始模式,可以使用“上下左右”按鍵來移動光標(biāo),您可以使用“刪除字符”或“刪除整行”來處理文檔。在編輯模式或指令列模式中按【ESC鍵可換回命令模式。(2) 編輯模式:在命令模式中按下【i, I,

10、 o, O, a, A, r, R】等字母之后才會進(jìn)入編輯模式。按下上述的字母時(shí),在畫面的左下方會出現(xiàn)【-INSERT- 或-插入-】的字樣,才可以做文字?jǐn)?shù)據(jù)輸入。(3) 指令列模式:在命令模式當(dāng)中,輸入【:】或【/】就可以將光標(biāo)移動到最底下那一行,進(jìn)入指令列模式。在這個(gè)模式當(dāng)中,可以存盤、結(jié)束vi 、顯示行號等操作。二、實(shí)驗(yàn)結(jié)果及分析(包括結(jié)果描述、實(shí)驗(yàn)現(xiàn)象分析、影響因素討論、綜合分析和結(jié)論等)Free顯示系統(tǒng)中已用空閑內(nèi)存數(shù)量sniartG loealhostsHiart:freetot-aLusedfueeshared bufferscachedHem:10104923567366537

11、S66322436D164276-/+ buffers/eache:168100342392Swap:000smartG localhastsHiart:top:查看系統(tǒng)進(jìn)程情況toj -22:28:23 up1:33,2 users丄oadaverage : 0.08 0 .07, 0.05Tm:= k.=;:251total,2 runnLTiGiir249 slEepinj,O stopped.0 Eomtiie% Cju (:m) :0.5 us,O.2 sy* o.ai niF 99.10.2 wa,O.lhl, 0.0si, (_ 3tRIB Meitt:1010492rotalf

12、3572HR usei.653212 free.24360 buffersKiE Swap:Ototal,0 usedf freeB1C436O cachedFIDUSERPRKI7IRTRESSHRs% CPU% MEHTIME+COMMAND1rout203 22 37 6147(536 00 * 3口;M * 旳inivZroot20000050.0D;00.04Jcthreadd3rootzo0036 0 : 00.1ZKturticqd/4root2000050.0D0:00.00wrker/0: 5raotYQa0SLlD(JU:oo.ao)cwrker/u: +7roo匸2D00

13、00RD.D0.D0:00.93rcu sebedQroot20a0S0.00:00.34rcuos/09root20aSCL Cl0:00.20reuos/110root200a0S口0:00*30rcuos/211ract200a0S匚i.O0.00:00*30reuos/312root200000s匚1.00.00:00.00rcuos/413root20000s0.00:00.00rcuos/514root20000s0.00:00.00rcutis/61.5met200aans0.0n:oo,oorcuas/716root20000s0.0:00.00rcuos/S17root20o

14、0s0.00. :00.00irciiios/9lc;root20000s0* o0.0:00.00rcuos/10Xsmocalhostsmart -三、實(shí)驗(yàn)小結(jié)、建議及體會vi編輯器是Linux系統(tǒng)下標(biāo)準(zhǔn)的編輯器,它的強(qiáng)大不遜色于任何文本編輯器。 初次實(shí)驗(yàn)對Linux常用命令及編輯器的使用操作都不熟悉,但對Linux很好奇。通過實(shí)驗(yàn),學(xué)會了如何在現(xiàn)有操作系統(tǒng)的基礎(chǔ)上再打開一個(gè)操作系統(tǒng),并對新的窗口進(jìn)行操作。開始進(jìn)入的界面有點(diǎn)像DOS境下的界面,接著可以輸入一些語句命令 來創(chuàng)建和查看文件、查看根目錄及根目錄下的內(nèi)容,以及如何進(jìn)入文件夾、如何編譯并推出編譯等。學(xué)會vi有助于我們學(xué)習(xí)Linux。

15、實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)者同組者Linux下C編程實(shí)驗(yàn)成績李安福專業(yè)班級軟件sy1201組別實(shí)驗(yàn)日期第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁)、實(shí)驗(yàn)內(nèi)容描述(問題域描述)Linux下的C編程要求:掌握vi編輯器的使用方法;掌握 Linux下C程序的源程序編輯方法;編譯、連 接和運(yùn)行方法。內(nèi)容:設(shè)計(jì)、編輯、編譯、連接以及運(yùn)行一個(gè)C程序,其中包含鍵盤輸入和屏幕輸出語句。、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或 者算法描述)#in cludeintmai n()inta, b;prin tf(shuru lia ng ge shu:n);scan f(%d,%d, &a, &

16、b);if(ab)b= a;prin tf(max= %dn ,b);return 0;三、主要儀器設(shè)備及耗材Linux操作系統(tǒng)Vi編輯器gcc編譯第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁)一、實(shí)驗(yàn)結(jié)果及分析(包括結(jié)果描述、實(shí)驗(yàn)現(xiàn)象分析、影響因素討論、綜合分析和結(jié)論等)smartlocalhostsmart: *#inc:ludeto)pr intf (returnsmart!?localhostsmart:*$ gee abcrrc -o ABC smart!? local hostsmart ;*$ , / ABCshu ru liang ge shu:124 56max=124二、實(shí)驗(yàn)小結(jié)、

17、建議及體會通過這次實(shí)驗(yàn)vi編輯器有了進(jìn)一步的應(yīng)用,同時(shí)學(xué)會了在Linux進(jìn)行簡單的C語言編程,掌握Linux下C程序的源程序編輯方法;編譯、連接和運(yùn)行方法。加 深了對linux的印象,linux的兼容性很強(qiáng)。C/C+仍舊可以在上面編譯成功。在以 后的學(xué)習(xí)中會加大努力加強(qiáng)自己的編程能力。實(shí)驗(yàn)項(xiàng)目名稱SHELL編程和后臺批處理實(shí)驗(yàn)成績實(shí)驗(yàn)者李安福專業(yè)班級軟件sy1201組別同組者實(shí)驗(yàn)日期第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁)三、實(shí)驗(yàn)內(nèi)容描述(問題域描述)SHELL編程和后臺批處理要求:掌握Linux系統(tǒng)的SHELL編程方法和后臺批處理方法。內(nèi)容:(1)將編譯、連接以及運(yùn)行上述C程序各步驟用SHELL程

18、序批處理完成,前臺運(yùn)行。(2) 將上面SHELLL程序后臺運(yùn)行。觀察原C程序運(yùn)行時(shí)輸入輸出情況。(3) 修改調(diào)試上面SHELL程序和C程序,使得在后臺批處理方式下,原鍵盤 輸入內(nèi)容可以鍵盤命令行位置參數(shù)方式交互式輸入替代原鍵盤輸入內(nèi)容,然后 輸出到屏幕。四、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或 者算法描述)C程序文件如下#i ncludeintmai n()inta, b;prin tf(shuru lia ng ge shu:n);scan f(%d,%d, &a, &b);if(ab)b= a;prin tf(max= %dn,b);return

19、0;test.sh文件如下#!/bi n/bash gcc -o t chmod u+x test.out ./test.out三、主要儀器設(shè)備及耗材linux操作系統(tǒng)Vi編輯器GccBash第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁)四、調(diào)試過程(包括調(diào)試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等)調(diào)試過程中未發(fā)現(xiàn)任何問題五、實(shí)驗(yàn)結(jié)果及分析(包括結(jié)果描述、實(shí)驗(yàn)現(xiàn)象分析、影響因素討論、綜合分析和結(jié)論等)horizonhorizon-de5ktop:-文件(巳編輯追)查看也)終端(D 幫助(旦) hcri;onhorizosh test-sh11 112 113 3 11 4 6 4

20、11 5 10 19 5 11 6 15 29 15 6 11 7 21 35 35 21 7 11 8 28 56 79 55 28 8 11 9 36 84 126 126 84 36 9 1horizon(?horizon-desktop: $ |六、實(shí)驗(yàn)小結(jié)、建議及體會在實(shí)驗(yàn)中,我學(xué)習(xí)了 Linux中的shell編程語法。其實(shí)在shell中可以實(shí)現(xiàn)許多用 C語言 或者其他語言編寫的程序功能,并且用 shell更加快捷,因?yàn)樗鼰o需編譯,是解釋性語言。此 次實(shí)驗(yàn)讓我對Linux下的編程有了進(jìn)一步的了解。實(shí)驗(yàn)項(xiàng)目名稱Linux系統(tǒng)調(diào)用(time )實(shí)驗(yàn)成績實(shí)驗(yàn)者李安福專業(yè)班級軟件sy1201

21、組別第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁)、實(shí)驗(yàn)內(nèi)容描述(問題域描述)Linux系統(tǒng)調(diào)用使用方法。要求:掌握Linux系統(tǒng)調(diào)用使用方法。內(nèi)容:學(xué)習(xí)使用time, ctime, sleep, exit等Linux系統(tǒng)調(diào)用使用方法。、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或 者算法描述)#i nclude #in clude #in clude #in cludeusing n amespace std;int mai n()while(1)char timebuf100;time_t t;time(&t);strftime(timebuf, sizeof(tim

22、ebuf),%Y 年 %m 月 %d 日 %H: %M: %S,localtime(&t);coutvvtimebufvve ndl;fflush(stdout);sleep(1);return 0;三、主要儀器設(shè)備及耗材Ubuntu操作系統(tǒng)Vi編輯器G+編譯器第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁)、調(diào)試過程(包括調(diào)試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等) ctime (將時(shí)間和日期以字符串格式表示)表頭文件#in clude定義函數(shù)char *ctime(c onsttime_t *timep);函數(shù)說明ctime()將參數(shù)timep所指的time_t結(jié)構(gòu)中的信息轉(zhuǎn)換成

23、真實(shí)世界所使用的時(shí)間日期表示 方法,然后將結(jié)果以字符串形態(tài)返回。此函數(shù)已經(jīng)由時(shí)區(qū)轉(zhuǎn)換成當(dāng)?shù)貢r(shí)間,字符串格式為“Wed Jun 30 21:49:081993n ”若再調(diào)用相關(guān)的時(shí)間日期函數(shù),此字符串可能會被破壞。返回值返回一字符串表示目前當(dāng)?shù)氐臅r(shí)間日期。time (取得目前的時(shí)間)表頭文件#in clude定義函數(shù)time_t time(time_t *t);函數(shù)說明此函數(shù)會返回從公元1970年1月1日的UTC時(shí)間從0時(shí)0分0秒算起到現(xiàn)在所經(jīng)過的秒數(shù)。如果t并非空指針的話,此函數(shù)也會將返回值存到t指針?biāo)傅膬?nèi)存。返回值成功則返回秒數(shù),失敗則返回(time_t)-1) 值,錯(cuò)誤原因存于 errn

24、o中。sleep (讓進(jìn)程暫停執(zhí)行一段時(shí)間)表頭文件#in clude定義函數(shù)un sig nedint sleep( un sig ned intsec on ds);函數(shù)說明sleep()會令目前的進(jìn)程暫停,直到達(dá)到參數(shù)seco nds 所指定的時(shí)間,或是被信號所中斷。返回值若進(jìn)程暫停到參數(shù) seco nds 所指定的時(shí)間則返回0,若有信號中斷則返回剩余秒數(shù)。、實(shí)驗(yàn)結(jié)果及分析(包括結(jié)果描述、實(shí)驗(yàn)現(xiàn)象分析、影響因素討論、綜合分析和結(jié)論等) J 匚 匚 E i-lJ Lfc! E 33333333 1 1* 1A 1A- 11 1A 1A- Av Av- Av Aw- -Av Aw2 2 2

25、2 2 2 2 2 A0505050505050505冋月月月月月月月目日日日日日8日J(rèn)o 6 6 6 -6- #0o o o o o D o o2+ Stopped./shiyan (mt三、實(shí)驗(yàn)小結(jié)、建議及體會通過這次實(shí)驗(yàn)學(xué)習(xí)使用time, ctime, sleep, exit 等Linux系統(tǒng)調(diào)用使用方 法,加深了對Linux下編程的理解,在以后會多多了解Linux系統(tǒng)調(diào)用的更多方法, 并多加練習(xí)。實(shí)驗(yàn)成績組別實(shí)驗(yàn)項(xiàng)目名稱Linux進(jìn)程控制(fork)實(shí)驗(yàn)者李安福專業(yè)班級 軟件sy1201第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁)一、實(shí)驗(yàn)內(nèi)容描述(問題域描述)Linux系統(tǒng)進(jìn)程控制要求:掌握Li

26、nux系統(tǒng)中進(jìn)程控制原語 fork的使用方法。內(nèi)容:設(shè)計(jì)C程序,其中主進(jìn)程創(chuàng)建一個(gè)子進(jìn)程,以特定次序各自執(zhí)行規(guī)定操作后退 出。、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或 者算法描述)#i nclude#in clude#in cludeusing n amespace std;int mai n()coutPare nt process id:getpid()e ndl; pid_t iRet = fork();if(iRetvO)coutCreate child process fail!e ndl;else if(iRet = 0)coutvv Imc

27、hild process, and id isgetpid()ppidis:vvgetppid()ve ndl;elsecoutCreate child process success childthe id is:iRete ndl;return 0;三、主要儀器設(shè)備及耗材Ubuntu操作體統(tǒng)Vi編輯器G+編譯第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁)一、調(diào)試過程(包括調(diào)試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等)(1)【進(jìn)程的創(chuàng)建】 編寫一段程序,使用系統(tǒng)調(diào)用fork ()創(chuàng)建兩個(gè)子進(jìn)程,當(dāng)此進(jìn)程運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動,讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符,

28、父進(jìn)程顯示字符“ a”;子進(jìn)程分別顯示字符“ b”和字符“ c”。【源程序】:#in cludeint mai n()in t p1, p2;while (p1 = fork() = -1);if (p1 = 0)/第一子進(jìn)程putchar(b);else while (p2 = fork() = -1);if (p2 = 0)putchar(c);/第二子進(jìn)程elseputchar(a);/父進(jìn)程return 0;運(yùn)行多次:主要輸出有 bca,偶爾輸出cab和cba,abc,bac,acb會有如此 多種不同輸出,主要是因?yàn)閒ork()生成的子進(jìn)程和父進(jìn)程是并行運(yùn)行的,所以先運(yùn)行哪個(gè)進(jìn)程是由系

29、統(tǒng)的調(diào)度算法決定的,ubuntu9.04很大概率系統(tǒng)會先輸出bca 是因?yàn)閡buntu 9.04在fork ()運(yùn)行之后很大概率先運(yùn)行子進(jìn)程,再運(yùn)行父進(jìn)程。 當(dāng)然也有可能先運(yùn)行父進(jìn)程后子進(jìn)程,再加上進(jìn)程間的并發(fā)性;導(dǎo)致了輸出的多樣性。輸出次序帶有隨機(jī)性?!具M(jìn)程的控制】修改已編寫的程序,將每個(gè)進(jìn)程輸出一個(gè)字符改為每個(gè)進(jìn)程輸出一句話?!驹创a】:#in cludeint mai n() in t p1, p2;while (p1 = fork() = -1);if (p1 = 0);第一個(gè)子進(jìn)程prin tf(Child1 is runnin g!n);else while (p2 = fork(

30、) = -1);if (p2 = 0);第二子進(jìn)程prin tf(Child2 is runnin g!n);else;父進(jìn)程prin tf(Father is runnin g!n);return 0;運(yùn)行多次,大部分運(yùn)行后輸出:Child1 is running!Child2 is running!Father is running!少數(shù)輸出:Child2 is running!Childl is running!Father is running!Father is running!Childl is running!Child2 is running!理論上是有6種不同的結(jié)果,還是由于

31、系統(tǒng)的調(diào)度算法,程序的并發(fā)性影響;但由 于函數(shù)printf()在輸出字符串時(shí)不會被中斷,因此,字符串內(nèi)部字符順序輸出不 變。所以與打印單字符的結(jié)果相同。(3)【進(jìn)程信號處理】編寫程序使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用singal()讓 父進(jìn)程捕捉鍵盤上來的中斷信號(即按Ctrl+c 鍵);當(dāng)捕捉到中斷信號后,父進(jìn)程 用系統(tǒng)調(diào)用Kill()向兩個(gè)子進(jìn)程發(fā)出信號,子進(jìn)程捕捉到信號后分別輸出下列信息后終止:Child Process11 is Killed by Pare nt!Child Process12 is Killed by Pare nt!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出如下的信息后終止:Pare nt Process is Killed!【源代碼】:#in clude#in cludeint wait_mark;void wait in g()while (wait_mark = 1);void stop()wait_mark = 0;int mai n()in t p1, p2;while (p1 = fork() = -1);if (p1 = 0);第一個(gè)子進(jìn)程wait_mark = 1;sig nal(SIGINT, SIGGN);sig nal(16, stop);wait in g();lockf(1, 1, 0);加鎖prin

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論