下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)實驗報告操 作 系 統(tǒng) 實 驗 報 告 ( 3 )學(xué)號: 姓名: 班級: 成績:實驗名稱:進程管理-進程的創(chuàng)建與并發(fā)執(zhí)行實驗地點:二教109所使用的工具軟件及環(huán)境:Linux一、實驗?zāi)康模?本實驗的目的是通過進程的創(chuàng)建、運行和撤銷加深對進程概念和進程并發(fā)執(zhí)行的理解,明確進程與程序之間的區(qū)別。(1) 熟悉Linux工作環(huán)境和gcc工具(2) 加深對進程概念的理解,明確進程和程序的區(qū)別(3) 掌握系統(tǒng)調(diào)用fork( ),exec系列函數(shù),exit( ),wait( ),waitpid( ),getpid( ),getppid( )的功能和實現(xiàn)過程。(4) 通過創(chuàng)建進程,進一步認識進程并發(fā)執(zhí)
2、行的實質(zhì)和特征 二、實驗內(nèi)容:按題目要求完成觀察操作系統(tǒng)的行為和程序的編寫。任務(wù)1:Shell下的進程控制:用ps命令查看進程;用kill命令中止某些進程;用pstree命令顯示系統(tǒng)中進程的層次結(jié)構(gòu)。任務(wù)2:調(diào)試并運行實驗文檔中的程序范例,并結(jié)合所用的系統(tǒng)調(diào)用分析運行結(jié)果。任務(wù)3:進程創(chuàng)建:編寫一段程序,讓父進程產(chǎn)生兩個子進程,父進程顯示字符“a”,兩個子進程分別顯示字符“b”、“c”。 運行程序(注意:多運行幾次),觀察運行結(jié)果,并分析。任務(wù)4:將上述的輸出字符改為輸出較長的字符串,觀察進程并發(fā)執(zhí)行,分析執(zhí)行結(jié)果。任務(wù)5:編寫一段程序,使用系統(tǒng)調(diào)用fork( )創(chuàng)建一個子進程,在子進程中顯示
3、該子進程及其父進程的PID,然后子進程睡眠10秒鐘(使用系統(tǒng)調(diào)用sleep(10));父進程通過調(diào)用wait( )等待子進程結(jié)束,并顯示該子進程的PID。任務(wù)6:編寫一段程序,使用系統(tǒng)調(diào)用fork( )創(chuàng)建一個子進程。子進程通過系統(tǒng)調(diào)用exec系列函數(shù)調(diào)用命令ls,調(diào)用exit( )結(jié)束。而父進程則調(diào)用waitpid( )等待子進程結(jié)束,并在子進程結(jié)束后顯示子進程的標識符,然后正常結(jié)束。創(chuàng)建進程的系統(tǒng)調(diào)用:fork( ) ,創(chuàng)建一個新進程。系統(tǒng)調(diào)用格式: pid=fork( );fork( )返回值意義如下:0:在子進程中,pid變量保存的fork( )返回值為0,表示當
4、前進程是子進程。>0:在父進程中,pid變量保存的fork( )返回值為子進程的id值(進程唯一標識符)。-1:創(chuàng)建失敗。如果fork( )調(diào)用成功,它向父進程返回子進程的PID,并向子進程返回0,即fork( )被調(diào)用了一次,但返回了兩次。此時OS在內(nèi)存中建立一個新進程,所建的新進程是其父進程(parent process)的副本,稱為子進程(child process)。子進程繼承了父進程的許多特性,并具有與父進程完全相同的用戶級上下文。父進程與子進程并發(fā)執(zhí)行。思考題: 1、系統(tǒng)調(diào)用fork( )是如何創(chuàng)建進程的?2、當新創(chuàng)建進程開始執(zhí)行時,其入口在哪里?3、系統(tǒng)調(diào)用ex
5、ec系列函數(shù)是如何更換進程的可執(zhí)行代碼的?4、系統(tǒng)調(diào)用exit( )是如何終止一個進程的?三、源程序、運行結(jié)果、結(jié)果分析及思考題(任務(wù)16及思考題)(誠信聲明:以下內(nèi)容,均由本人親自上機完成。 簽名:_) 任務(wù)一:ps命令查看進程格式為ps 【參數(shù)選項】。常用參數(shù)有a,顯示終端上地所有進程,包括其他用戶地進程;x顯示沒有控制終端地進程;u選項來查看進程所有者及其他少許詳細信息;-e顯示所有進程,環(huán)境變量等等。Kill命令方法是kill后跟進程PID或者進程名字。Pstree命令用法:pstree【選項】【PID|user】。 任務(wù)二:(1)fork()函數(shù)調(diào)用的結(jié)果是顯示this is the
6、 parent process!回車,this is the child process!. (2)execl_test.c,execlp_test.c,execle_test.c,execv_test.c,execvp_test.c,execve_test.c,運行的結(jié)果都是:-rw-r-r- 1 root root 1592 2011-04-20 /etc/passwd。(3)exittest1.c和exittest2.c都是用來終止一個進程的,但是調(diào)用的函數(shù)exit()之前要檢查文件的打開情況,把文件緩沖區(qū)的內(nèi)容寫回文件;而_exit()會直接將進程關(guān)閉,緩沖區(qū)的數(shù)據(jù)會丟失。(4)wai
7、t()函數(shù)可以使進程等待任一子進程終止,而waitpid()函數(shù)則是等待特定的子進程終止。(5)getpid()是返回到子進程的進程號,而getppid()是返回到父進程的進程號。任務(wù)三:程序代碼如下#include <stdio.h>main()int p1, p2;while (p1=fork()= =-1); /*父進程創(chuàng)建第一個進程,直到成功*/if (p1= =0) /*0返回給子進程1*/ putchar(b); /*子進程1的處理過程*/else /*正數(shù)返回給父進程(子進程號)*/
8、 while (p2=fork()= =-1); /*父進程創(chuàng)建第二個進程,直到成功*/ if (p2= =0) /* 0返回給子進程2*/putchar(c); /*子進程2的處理過程*/else putchar(a); /*子進程2創(chuàng)建完成后,父進程的處理過程*/多次運行結(jié)果大多數(shù)都是bca,偶爾會出現(xiàn)bac或者cab。進程的處理過程太短,多次運行可能出現(xiàn)差錯。任務(wù)四:修改后的程序代碼是:#include <stdio.h>main()int p1, p2;while (p1=for
9、k()= =-1); if (p1= =0) printf(“this is the child1 process!n”); else while (p2=fork()= =-1); if (p2= =0) printf(“this is the child2 process!n”); else printf(“this is the parent process!n”); 運行結(jié)果是this is the child1 process! thi
10、s is the child2 process! this is the parent process! 任務(wù)五:程序代碼是:#include <stdio.h>#include <stdlib.h>#include <sys/types.h>main(void)pid_t pid;pid=fork();if(pid<0)printf(“fork errorn”);exit(0);else if(pid=0)printf(“the child process:%dn”,getpid();printf(“the parent process:%dn”,g
11、etpid();sleep(10);elsewait();printf(“the child process:%dn”,pid);運行結(jié)果是先顯示兩行:the child process:4233,the parent process:4232。然后等一會在顯示一行:the child process:4233.任務(wù)六:程序代碼是:#include <stdlib.h>#include <stdio.h>#include <sys/types.h>#include <unistd.h>main()pid_t pid,pc;pid=fork();if(pid<0)printf(“fork e
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版產(chǎn)業(yè)升級募集資金三方監(jiān)管與支持合同4篇
- 2025年企業(yè)數(shù)字化智能物聯(lián)網(wǎng)物聯(lián)網(wǎng)連接合作協(xié)議
- 2025年家族財富傳承繼承管理規(guī)劃遺產(chǎn)協(xié)議
- 2025版委托擔保合同范本:互聯(lián)網(wǎng)金融平臺風(fēng)險控制協(xié)議3篇
- 《地球上生命的起源課件》
- 二零二五年度生態(tài)旅游區(qū)開發(fā)合同書4篇
- 二零二五年度退休返聘人員合同終止告知書
- 二零二五年度大學(xué)生就業(yè)實習(xí)實訓(xùn)基地合作框架協(xié)議范本
- 2025年度醫(yī)療健康管理系統(tǒng)軟件購銷合同模板
- 2025年度汽車零部件車輛質(zhì)押租賃協(xié)議
- 2025年度公務(wù)車輛私人使用管理與責(zé)任協(xié)議書3篇
- 售后工程師述職報告
- 綠化養(yǎng)護難點要點分析及技術(shù)措施
- 2024年河北省高考歷史試卷(含答案解析)
- 車位款抵扣工程款合同
- 小學(xué)六年級數(shù)學(xué)奧數(shù)題100題附答案(完整版)
- 高中綜評項目活動設(shè)計范文
- 英漢互譯單詞練習(xí)打印紙
- 2023湖北武漢華中科技大學(xué)招聘實驗技術(shù)人員24人筆試參考題庫(共500題)答案詳解版
- 一氯二氟甲烷安全技術(shù)說明書MSDS
- 物流簽收回執(zhí)單
評論
0/150
提交評論