實(shí)驗(yàn)一 進(jìn)程控制實(shí)驗(yàn)_第1頁(yè)
實(shí)驗(yàn)一 進(jìn)程控制實(shí)驗(yàn)_第2頁(yè)
實(shí)驗(yàn)一 進(jìn)程控制實(shí)驗(yàn)_第3頁(yè)
實(shí)驗(yàn)一 進(jìn)程控制實(shí)驗(yàn)_第4頁(yè)
實(shí)驗(yàn)一 進(jìn)程控制實(shí)驗(yàn)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一進(jìn)程控制一、實(shí)驗(yàn)?zāi)康模杭由顚?duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別;止操作, 體會(huì)父進(jìn)程和子進(jìn)程的關(guān)系及進(jìn)程狀態(tài)的變化;掌握 Linux 操作系統(tǒng)的進(jìn)程創(chuàng)建和終進(jìn)一步認(rèn)識(shí)并發(fā)執(zhí)行的實(shí)質(zhì),編寫并發(fā)程序。二、實(shí)驗(yàn)平臺(tái):虛擬機(jī): VMWare9 以上操作系統(tǒng): Ubuntu12.04 以上編輯器: Gedit | Vim編譯器: Gcc三、實(shí)驗(yàn)內(nèi)容:( 1)編寫一段程序,使用系統(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)程在屏幕上顯示“身份信息” :父進(jìn)程顯示 “Parent process! PID=xxx1 PPID=xxx2 ”;子進(jìn)

2、程顯示“ Childx process! PID=xxx PPID=xxx ”。多運(yùn)行幾次,觀察記錄屏幕上的顯示結(jié)果,并分析原因。說明:xxx1 為進(jìn)程號(hào),用 getpid() 函數(shù)可獲取進(jìn)程號(hào);xxx2 為父進(jìn)程號(hào),用 getppid() 函數(shù)可獲取父進(jìn)程號(hào); Childx 中 x 為 1 和 2,用來區(qū)別兩個(gè)子進(jìn)程;wait() 函數(shù)用來避免父進(jìn)程在子進(jìn)程終止之前終止。程序源碼:#include<stdio.h>#include<unistd.h>#include<stdlib.h>#define NUM 2int main(void)pid_t pid

3、1,pid2;if(pid1=fork()<0)printf(" 創(chuàng)建進(jìn)程1 失敗 ");elseif(pid1=0)/子進(jìn)程 1 執(zhí)行printf("Child1printf("PID=%dprocess: ");PPID=%d n",getpid(),getppid();sleep(2);elseif(pid2=fork()<0)printf(" 創(chuàng)建進(jìn)程2 失敗 ");elseif(pid2=0)printf("Child2printf("PID=%d/子進(jìn)程 2 執(zhí)行proc

4、ess: ");PPID=%d n",getpid(),getppid();else/父進(jìn)程執(zhí)行wait();wait();printf("Parent process: ");printf("PID=%dPPID=%d n",getpid(),getppid();exit(0);執(zhí)行結(jié)果whtcmisswhtcmiss-VirtualBox:/Desktop$ gcc test1.c -o testwhtcmisswhtcmiss-VirtualBox:/Desktop$ ./testChild2process: PID=2527P

5、PID=2525Child1process: PID=2526PPID=2525Parent process: PID=2525PPID=2127whtcmisswhtcmiss-VirtualBox:/Desktop$ ./testChild2process: PID=2530PPID=2528Child1process: PID=2529PPID=2528Parent process: PID=2528PPID=2127whtcmisswhtcmiss-VirtualBox:/Desktop$ ./testChild2process: PID=2533PPID=2531Child1proc

6、ess: PID=2532PPID=2531Parent process: PID=2531PPID=2127實(shí)驗(yàn)結(jié)果分析:第一次程序運(yùn)行結(jié)果,兩個(gè)子進(jìn)程的PPID都是2525,是由同一個(gè)進(jìn)程創(chuàng)建。而父進(jìn)程PID 是 2525,父進(jìn)程PPID 是 2127,說明父進(jìn)程也是一系統(tǒng)進(jìn)程的子進(jìn)程。第二次程序運(yùn)行結(jié)果,父進(jìn)程 PID 是 2528,PPID 是 2127,說明父進(jìn)程是由同一進(jìn)程創(chuàng)建的,父進(jìn)程也是以子進(jìn)程的方式存在,且進(jìn)程ID 是逐漸遞增的。( 2) fork() 和exec()系列函數(shù)能同時(shí)運(yùn)行多個(gè)程序,利用上述函數(shù)將下面單進(jìn)程順序執(zhí)行的程序 single.c改造成可并發(fā)執(zhí)行 3個(gè)進(jìn)程

7、的程序 multi_process.c ;并用 time 命令獲取程序的執(zhí)行時(shí)間,比較單進(jìn)程和多進(jìn)程運(yùn)行時(shí)間,并分析原因。/single.c#include <stdio.h>#define NUM 5int main(void)void print_msg(char *m);print_msg("Good ");print_msg("Morning");print_msg("007n");/將007替換為本人學(xué)號(hào)return 0;void print_msg(char *m)int i;for(i = 0; i<N

8、UM; i+)printf("%s",m);fflush(stdout);sleep(1);編譯運(yùn)行方法:#gcc single.c o single#time ./single單線程執(zhí)行結(jié)果:多線程代碼:#multi_process.c#include <stdio.h>#include<unistd.h>#include<stdlib.h>#define NUM 5int main(void)pid_t pid3;int i;for(i=1;i<=3;i+)pidi-1=fork();if(pidi-1=0|pidi-1=-1)

9、break;if(pid0=0)execl("print","print","Good",NULL);else if(pid1=0)execl("print","print","Hello",NULL);elseif(pid2=0)execl("print","print","201300814113",NULL);wait();wait();wait();exit(0);return 0;實(shí)驗(yàn)分析:第二個(gè)實(shí)驗(yàn)結(jié)果,

10、 第二個(gè)程序的多線程因?yàn)槭遣l(fā)執(zhí)行, 而且是有三個(gè)線程,所以在時(shí)間上幾乎是單線程的 1/3 ,而且因?yàn)槭遣l(fā)的,所以打印結(jié)果是無序的。實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn)首先要明確進(jìn)程和程序的區(qū)別,我通過在Linux 操作系統(tǒng)的進(jìn)程創(chuàng)建和終止操作, 運(yùn)行父進(jìn)程和子進(jìn)程,查看運(yùn)行結(jié)果和進(jìn)程狀態(tài)的變化。實(shí)驗(yàn)過程中也了解了父進(jìn)程與子進(jìn)程的運(yùn)行過程及其機(jī)制。其中專業(yè)理論知識(shí)內(nèi)容包括:保安理論知識(shí)、消防業(yè)務(wù)知識(shí)、職業(yè)道德、法律常識(shí)、保安禮儀、救護(hù)知識(shí)。作技能訓(xùn)練內(nèi)容包括:崗位操作指引、勤務(wù)技能、消防技能、軍事技能。二培訓(xùn)的及要求培訓(xùn)目的安全生產(chǎn)目標(biāo)責(zé)任書為了進(jìn)一步落實(shí)安全生產(chǎn)責(zé)任制,做到“責(zé)、權(quán)、利”相結(jié)合,根據(jù)我公司20

11、15 年度安全生產(chǎn)目標(biāo)的內(nèi)容,現(xiàn)與財(cái)務(wù)部 簽訂如下安全生產(chǎn)目標(biāo):一、目標(biāo)值:1 、全年人身死亡事故為零,重傷事故為零,輕傷人數(shù)為零。2 、現(xiàn)金安全保管,不發(fā)生盜竊事故。3 、每月足額提取安全生產(chǎn)費(fèi)用,保障安全生產(chǎn)投入資金的到位。4 、安全培訓(xùn)合格率為 100%。二、本單位安全工作上必須做到以下內(nèi)容:1 、對(duì)本單位的安全生產(chǎn)負(fù)直接領(lǐng)導(dǎo)責(zé)任,必須模范遵守公司的各項(xiàng)安全管理制度,不發(fā)布與公司安全管理制度相抵觸的指令,嚴(yán)格履行本人的安全職責(zé),確保安全責(zé)任制在本單位全面落實(shí),并全力支持安全工作。2 、保證公司各項(xiàng)安全管理制度和管理辦法在本單位內(nèi)全面實(shí)施,并自覺接受公司安全部門的監(jiān)督和管理。3 、在確保安全的前提下組織生產(chǎn),始終把安全工作放在首位,當(dāng)“安全與交貨期、質(zhì)量”發(fā)生矛盾時(shí),堅(jiān)持安全第一的原則。4 、參加生產(chǎn)碰頭會(huì)時(shí),首先匯報(bào)本單位的安全生產(chǎn)情況和安全問題落實(shí)情況;在安排本單位生產(chǎn)任務(wù)時(shí),必須安排安全工作內(nèi)容,并寫入記錄。5 、在公司及政府的安全檢查中杜絕各類違章現(xiàn)象。6 、組織本部門積極參加安全檢查,做到有檢查、有整改,記錄全。7 、以身作則,不違章指揮、不違章操作。對(duì)發(fā)現(xiàn)的各類違章現(xiàn)象負(fù)有查禁的責(zé)任,同時(shí)要予以查處。8 、虛心接受員工提出的問題,杜絕不接受或盲目指揮;9、發(fā)生事故,應(yīng)立即報(bào)告主管領(lǐng)導(dǎo),按照“四不放過”的原則召開事故分析會(huì),提出整改措施和對(duì)責(zé)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論