操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共8頁(yè)).doc
《操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共8頁(yè)).doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共8頁(yè)).doc(8頁(yè)珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上深 圳 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 課程名稱(chēng): 操作系統(tǒng) 實(shí)驗(yàn)項(xiàng)目名稱(chēng): 進(jìn)程控制 學(xué)院: 軟件學(xué)院 專(zhuān)業(yè): 軟件工程 指導(dǎo)教師: 梁正平 報(bào)告人: 文 成 學(xué)號(hào): 班級(jí): 2 實(shí)驗(yàn)時(shí)間: 2013. 03. 31 實(shí)驗(yàn)報(bào)告提交時(shí)間: 2013. 04. 24 教務(wù)處制一. 實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)進(jìn)程的創(chuàng)建、撤銷(xiāo)和運(yùn)行加深對(duì)進(jìn)程概念和進(jìn)程并發(fā)執(zhí)行的理解,明確進(jìn)程與程序之間的區(qū)別。二. 實(shí)驗(yàn)要求1 實(shí)現(xiàn)對(duì)進(jìn)程生命周期全過(guò)程的管理,包括進(jìn)程的創(chuàng)建、撤銷(xiāo)、執(zhí)行、阻塞、喚醒、掛起、激活等。2 實(shí)現(xiàn)對(duì)多個(gè)進(jìn)程并發(fā)執(zhí)行的管理。三. 方法、步驟1、 函數(shù)說(shuō)明l fork(建立一個(gè)新的進(jìn)程)定義函
2、數(shù) pid_t fork(void);函數(shù)說(shuō)明 fork()會(huì)產(chǎn)生一個(gè)新的子進(jìn)程,其子進(jìn)程會(huì)復(fù)制父進(jìn)程的數(shù)據(jù)與堆棧空間,并繼承父進(jìn)程的用戶(hù)代碼,組代碼,環(huán)境變量、已打開(kāi)的文件代碼、工作目錄和資源限制等。 返回值 如果fork()成功則在父進(jìn)程會(huì)返回新建立的子進(jìn)程代碼(PID),而在新建立的子進(jìn)程中則返回0。如果fork 失敗則直接返回-1,失敗原因存于errno中。l waitpid(等待子進(jìn)程中斷或結(jié)束)定義函數(shù) pid_t waitpid(pid_t pid,int * status,int options);函數(shù)調(diào)用 waitpid(pid, NULL, 0);函數(shù)說(shuō)明 waitpid(
3、)會(huì)暫時(shí)停止目前進(jìn)程的執(zhí)行,直到有信號(hào)來(lái)到或子進(jìn)程結(jié)束。如果在調(diào)用waitpid()時(shí)子進(jìn)程已經(jīng)結(jié)束,則wait()會(huì)立即返回子進(jìn)程結(jié)束狀態(tài)值。子進(jìn)程的結(jié)束狀態(tài)值會(huì)由參數(shù)status返回,而子進(jìn)程的進(jìn)程識(shí)別碼也會(huì)一快返回。如果不在意結(jié)束狀態(tài)值,則參數(shù)status可以設(shè)成NULL。參數(shù)pid為欲等待的子進(jìn)程識(shí)別碼,其他數(shù)值意義如下:pid<-1 等待進(jìn)程組識(shí)別碼為pid絕對(duì)值的任何子進(jìn)程。pid=-1 等待任何子進(jìn)程,相當(dāng)于wait()。pid=0 等待進(jìn)程組識(shí)別碼與目前進(jìn)程相同的任何子進(jìn)程。pid>0 等待任何子進(jìn)程識(shí)別碼為pid的子進(jìn)程。返回值 如果執(zhí)行成功則返回子進(jìn)程識(shí)別碼(P
4、ID),如果有錯(cuò)誤發(fā)生則返回-1。失敗原因存于errnol getpid(取得進(jìn)程識(shí)別碼) 定義函數(shù) pid_t getpid(void);函數(shù)說(shuō)明 getpid()用來(lái)取得目前進(jìn)程的進(jìn)程識(shí)別碼,許多程序利用取到的此值來(lái)建立臨時(shí)文件,以避免臨時(shí)文件相同帶來(lái)的問(wèn)題。返回值 目前進(jìn)程的進(jìn)程識(shí)別碼l exit(正常結(jié)束進(jìn)程) 定義函數(shù) void exit(int status);函數(shù)說(shuō)明 exit()用來(lái)正常終結(jié)目前進(jìn)程的執(zhí)行,并把參數(shù)status返回給父進(jìn)程,而進(jìn)程所有的緩沖區(qū)數(shù)據(jù)會(huì)自動(dòng)寫(xiě)回并關(guān)閉未關(guān)閉的文件。l execl(執(zhí)行文件)定義函數(shù) int execl(const char * pat
5、h,const char * arg,.);函數(shù)說(shuō)明 execl()用來(lái)執(zhí)行參數(shù)path字符串所代表的文件路徑,接下來(lái)的參數(shù)代表執(zhí)行該文件時(shí)傳遞過(guò)去的argv(0)、argv1,最后一個(gè)參數(shù)必須用空指針(NULL)作結(jié)束。返回值 如果執(zhí)行成功則函數(shù)不會(huì)返回,執(zhí)行失敗則直接返回-1,失敗原因存于errno中。調(diào)用ls命令范例: execl("/bin/ls", "/bin/ls", "-l" , "/etc", NULL);啟動(dòng)VC+等開(kāi)發(fā)平臺(tái),創(chuàng)建我們所需的程序文件并保存到CYGWIN的用戶(hù)文件夾下四. 實(shí)驗(yàn)過(guò)程及
6、內(nèi)容實(shí)驗(yàn)指導(dǎo)例程2:#include <unistd.h>#include <stdarg.h>#include <time.h>#include <sys/types.h>#include <sys/wait.h>#include <stdio.h>#include <stdlib.h>int tprintf (const char*fmt,.);int main(void)int i=0,j=0;pid_t pid;printf("Hello from Parent Process,PID is
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) 實(shí)驗(yàn) 報(bào)告