




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實(shí)訓(xùn)1 Linux進(jìn)程管理命令的使用實(shí)訓(xùn)目標(biāo):(1) 掌握Linux中ps命令使用方法。(2) 掌握Linux中top命令使用方法。實(shí)訓(xùn)內(nèi)容:(1) 使用ps命令查看進(jìn)程。(2) 使用top命令查看進(jìn)程。實(shí)訓(xùn)步驟:(1) 使用ps命令查看進(jìn)程。a. 不帶參數(shù)的ps命令:# psb. 帶參數(shù)的ps命令:# ps aux(2) 使用top命令查看進(jìn)程。 a. 監(jiān)視特定用戶:$ top:輸入此命令,按【Enter】鍵,查看執(zhí)行結(jié)果。 u: 然后輸入“u”按【Enter】鍵,再輸入用戶名,即可。b. 終止指定的進(jìn)程:$ top:輸入此命令,按【Enter】鍵,查看執(zhí)行結(jié)果。 k: 然后輸入“k”按【E
2、nter】鍵,再輸入要結(jié)束的進(jìn) 程ID號。實(shí)訓(xùn)2 Linux進(jìn)程管理編程(進(jìn)程的創(chuàng)建)實(shí)訓(xùn)目標(biāo):掌握fork()系統(tǒng)調(diào)用的使用。 實(shí)訓(xùn)內(nèi)容:寫出如下程序的執(zhí)行結(jié)果,并畫出該進(jìn)程家族樹。/*fork()*/#includemain()fork(); /*父進(jìn)程1創(chuàng)建子進(jìn)程2*/ fork();/*父進(jìn)程返回后分別再創(chuàng)建各自的子進(jìn)程3、4*/ fork(); /*父進(jìn)程1、2、3、4返回后分別再創(chuàng)建各自的子進(jìn)程5、6、7、8*/putchar(A);/*每個進(jìn)程都要輸出A*/putchar(n); /*輸出A后按【Enter】鍵換行*/實(shí)訓(xùn)步驟:(1) 新建并編輯fork3.c.(2) 編譯for
3、k3.c。 cathyastu 桌面 $ gcc -o fork3 fork3.c(3) 執(zhí)行fork3,結(jié)果如下。 cathyastu 桌面 $ ./fork3 A A A A A A A A cathyastu 桌面 $(4) 查看該進(jìn)程執(zhí)行結(jié)果為八個“A”,說明有八個進(jìn)程產(chǎn)生。其進(jìn)程關(guān)系如圖38所示。12354678圖38 調(diào)用三次fork()的進(jìn)程家族樹步驟24的執(zhí)行結(jié)果實(shí)訓(xùn)3 Linux進(jìn)程管理編程(父子進(jìn)程的同步)實(shí)訓(xùn)目標(biāo):掌握fork()系統(tǒng)調(diào)用的使用。實(shí)訓(xùn)內(nèi)容:實(shí)現(xiàn)子進(jìn)程先輸出“B”然后父進(jìn)程再輸出“A”,源程序命名為synl.c。實(shí)訓(xùn)步驟:(1) 編寫源文件synl.c為以下
4、內(nèi)容(執(zhí)行內(nèi)容如圖1): #include main() int p1; while(p1=fork()=-1); if (p10) wait(0); /父進(jìn)程等待子進(jìn)程終止 putchar(A); Putchar(n); else putchar(B); putchar(n); exit(0); /子進(jìn)程向父進(jìn)程發(fā)終止信號0 (2) 編譯(如圖2)。(3) 執(zhí)行(如圖2): cathyastu 桌面 $ ./synl B A cathyastu 桌面 $ 源程序編譯連接并多次運(yùn)行后的結(jié)果都是子進(jìn)程先輸出“B”父進(jìn)程后輸出“A”,說明父進(jìn)程等待子進(jìn)程的同步關(guān)系成立。圖1圖2實(shí)訓(xùn)4 Linux進(jìn)
5、程管理編程(生產(chǎn)者消費(fèi)者問題)實(shí)訓(xùn)目標(biāo):掌握Linux關(guān)于同步、互斥信號量的使用。實(shí)訓(xùn)內(nèi)容: 設(shè)父進(jìn)程創(chuàng)建一個子進(jìn)程作為生產(chǎn)者,創(chuàng)建兩個子進(jìn)程作為消費(fèi)者,這三個子進(jìn)程使用一個共享內(nèi)存,如圖39所示,該共享內(nèi)存定義為具有五個變量的數(shù)組,每個變量表示一個緩沖區(qū),緩沖區(qū)號為04.生產(chǎn)者進(jìn)程依次往緩沖區(qū)04中寫十個數(shù)據(jù)110,兩個讀進(jìn)程依次從緩沖區(qū)04中輪流取出這10個數(shù)據(jù)。使用信號量實(shí)現(xiàn)進(jìn)程讀寫緩沖區(qū)的同步和互斥。 分析: (1)需要創(chuàng)建三個子進(jìn)程:生產(chǎn)者、消費(fèi)者A、消費(fèi)者B; (2)需要使用三個信號量:empty、full、mutex,分別表示緩沖區(qū)是否有空、是否有 數(shù)和互斥信號量,其初值分別為:
6、5,0,1; (3)需要兩個共享內(nèi)存:array和get,分別表示多緩沖區(qū)數(shù)組變量array04和消費(fèi) 者讀緩沖區(qū)號的計數(shù)get,get計數(shù)由兩個消費(fèi)者進(jìn)程共享,由于生產(chǎn)者只有一個, 所以寫緩沖區(qū)的計數(shù)set不需要使用共享內(nèi)存。實(shí)訓(xùn)步驟:(1) 新建并編輯編寫源文件為以下內(nèi)容:#include#include#include#include#include#include#include#define MAXSHM 5 /定義緩沖區(qū)數(shù)組的下標(biāo)變量個數(shù)/*定義信號量的內(nèi)部標(biāo)識*/int fullid;int emptyid;int mutexid;int main() /*定義共享內(nèi)存的ID *
7、/ int arrayid; int getid; /*定義共享內(nèi)存虛擬地址*/ int *array; int *get; /*創(chuàng)建共享內(nèi)存*/arrayid=shmget(IPC_PRIVATE,sizeof(int)*MAXSHN,IPC_CREAT|0666); getid=shmget(IPC_PRIVATE,sizeof(int),IPC_CREAT|0666); /*初始化共享內(nèi)存*/ array=(int *) shmat(arrayid,0,0); get=(int *) shmat(getid,0,0); *get=0; /* 定義信號量數(shù)據(jù)結(jié)構(gòu) */ struct sem
8、buf P,V; union semun arg; /* 創(chuàng)建信號量 */ fullid=semget(IPC_PRIVATE,1,IPC_CREAT|0666); emptyid=semget(IPC_PRIVATE,1,IPC_CREAT|0666); mutexid=semget(IPC_PRIVATE,1,IPC_CREAT|0666); /*初始化信號量 */ arg.val=0; /初始時緩沖區(qū)中無數(shù)據(jù) if(semctl(fullid,0,SETVAL,arg)=-1) perror(semctl setval error); arg.val=MAXSHM; /初始時緩沖區(qū)中有5
9、個空閑的數(shù)組元素 if(semctl(emptyid,0,SETVAL,arg)=-1) perror(semctl setval error); arg.val=1; /初始時互斥信號為1,允許一個進(jìn)程進(jìn)入 if(semctl(mutexid,0,SETVAL,arg)=-1) perror(semctl setval error); /* 初始化 P V操作 */ P.sem_num=0; P.sem_op=-1; P.sem_flg=SEM_UNDO; V.sem_num=0; V.sem_op=1; V.sem_flg=SEM_UNDO; /* 生產(chǎn)者進(jìn)程 */ if(fork()=0
10、) int i=0; int set=0; while(i10) semop(emptyid,&P,1); /對 emptyid執(zhí)行P操作 semop(mutexid,&P,1); /對 mutexid執(zhí)行 P操作 arrayset%MAXSHM=i+1; printf(Producer put number %d to No.%dn,arrayset%MAXSHM,set%MAXSHM); set+; /寫計數(shù)加1 semop(mutexid,&V,1); /對mutexid執(zhí)行 V 操作 semop(fullid,&V,1); /對fullid執(zhí)行 V 操作 i+; sleep(3); /
11、等待消費(fèi)者進(jìn)程執(zhí)行完畢 printf(Poducer if overn); exit(0); else /* 消費(fèi)者A進(jìn)程 */ if(fork()=0) while(1) if(*get=10) break; semop(fullid,&P,1); /對fullid執(zhí)行 P 操作 semop(mutexid,&P,1); /對mutexid執(zhí)行 P 操作 printf(The ConsumerA get number from No.%dn,(*get)%MAXSHM); (*get)+; /讀計數(shù)加1 semop(mutexid,&V,1); /對mutexid執(zhí)行 V 操作 semop(
12、emptyid,&V,1); /對fullid執(zhí)行 V 操作 sleep(1); printf(ConsunerA is overn); exit(0); else /*消費(fèi)者B進(jìn)程 */ if(fork()=0) while(1) if(*get=10) break; semop(fullid,&P,1); /對fullid執(zhí)行 P 操作 semop(mutexid,&P,1); /對mutexid執(zhí)行 P 操作 printf(The ConsumerA get number from No.%dn,(*get)%MAXSHM); (*get)+; /讀計數(shù)加1 semop(mutexid,
13、&V,1); /對mutexid執(zhí)行 V 操作 semop(emptyid,&V,1); /對emptyid執(zhí)行 V 操作 sleep(1); printf(ConsunerB is overn); exit(0); /* 父進(jìn)程返回后回收3個子進(jìn)程 */ wait(0); wait(0); wait(0); /* 斷開并撤消2個共享內(nèi)存 */ shmdt(array); shmctl(arrayid,IPC_RMID,0); shmctl(get); shmctl(getid,IPC_RMID,0); /* 撤消3個信號量集 */ semctl(emptyid,IPC_RMID,0); semctl(fulli
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電器廠頂崗實(shí)習(xí)報告范文
- 從數(shù)字學(xué)習(xí)到智慧學(xué)習(xí)教育技術(shù)的演進(jìn)之路
- 企業(yè)如何通過實(shí)施智能交通系統(tǒng)提升商業(yè)競爭力與安全性
- 智能互動構(gòu)建現(xiàn)代教學(xué)新模式
- 中職文化課件
- 湘西市重點(diǎn)中學(xué)2025屆物理高一第二學(xué)期期末綜合測試試題含解析
- 專題06 讀后續(xù)寫校園生活類話題(測試)原卷版-2025年高考英語二輪復(fù)習(xí)
- 河南省焦作市2025屆物理高一下期末達(dá)標(biāo)測試試題含解析
- 河南省項城三高2025年高一物理第二學(xué)期期末質(zhì)量檢測模擬試題含解析
- 教育機(jī)器人技術(shù)教學(xué)輔助的發(fā)展趨勢
- 2025至2030中國無源光分路器行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 痛風(fēng)治療與護(hù)理課件
- 單刀赴會課本?。貉堇[三國英雄的高光時刻
- T/CCBD 19-2022品牌餐廳評價規(guī)范
- 2025 秋外研英語八上單元重點(diǎn)知識清單Unit 1
- 河南省南陽市內(nèi)鄉(xiāng)縣2025屆數(shù)學(xué)七下期末調(diào)研試題含解析
- 校際結(jié)對幫扶協(xié)議書
- 《區(qū)塊鏈技術(shù)與應(yīng)用》課件
- 企業(yè)電工面試題及答案
- 倉庫與生產(chǎn)線的有效對接計劃
- 《心律失?;颊叩淖o(hù)理》課件
評論
0/150
提交評論