




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、軟 件 學(xué) 院上 機 實 驗 報 告課程名稱: 操作系統(tǒng)原理 實驗項目: 實驗一 Linux環(huán)境下的進程管理 實 驗 室: 耘慧402 姓 名: 王欣鴻 學(xué) 號: 1320010724 專業(yè)班級: 軟件13-7 實驗時間: 2015/12/06 實驗成績評閱教師一、 實驗?zāi)康募耙?.加深對進程概念的理解,明確進程和程序的區(qū)別;2.進一步認識并發(fā)執(zhí)行的實質(zhì);3.分析進程爭用資源的現(xiàn)象,學(xué)習解決進程互斥的方法;4.了解Linux系統(tǒng)中進程通信的基本原理。二、 實驗性質(zhì)驗證性三、 實驗學(xué)時 4學(xué)時四、 實驗環(huán)境 Linux系統(tǒng)開發(fā)環(huán)境五、實驗內(nèi)容及步驟1給出實驗內(nèi)容具體描述; 1)進程的創(chuàng)建 編寫
2、一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個子進程。當此程序運行時,在系統(tǒng)中有一個父進程和兩個子進程活動。讓每一個進程在屏幕上顯示一個字符;父進程顯示字母a,子進程顯示字母b和c。 2)進程的控制 修改已編寫的程序,將每個進程輸出一個字符改為每個進程輸出一句話,再觀察程序執(zhí)行時屏幕上出現(xiàn)的現(xiàn)象。2 用適當形式表達算法設(shè)計思想及算法實現(xiàn)步驟。系統(tǒng)調(diào)用: fork() 創(chuàng)建一個新進程。系統(tǒng)調(diào)用格式: pid=fork()參數(shù)定義: Int fork()fork()返回值的意義如下: 0 :在子進程中,pid變量保存的fork()返回值為0,表示當前進程是子進程。 >0:在父進程中,pid變量保
3、存的fork()返回值為子進程的id值 -1:創(chuàng)建失敗。 如果fork()調(diào)用成功,它向父進程返回子進程的pid,并向子進程返回0,即fork()被調(diào)用了一次,但返回了兩次。此時OS在內(nèi)存中建立一個新進程,所建的新進程是調(diào)用fork()父進程的副本,稱為子進程。子進程繼承了父進程的許多特新,并具有與父進程完全相同的用戶級上文。父進程與子進程并發(fā)執(zhí)行。 核心為fork()完成以下操作 1)為新進程分配一進程表項和進程標識符 進入fork()后,核心檢查系統(tǒng)是否有足夠的資源來建立一個新進程。若資源不足,則fork()系統(tǒng)調(diào)用失?。环駝t,核心為新進程表項和唯一的進程標識符。 2)檢查同時運行規(guī)定的最
4、大數(shù)目 超過預(yù)先規(guī)定的最大數(shù)目時,fork()調(diào)用失敗。 3)拷貝進程表項中的數(shù)據(jù) 將父進程的當前目錄和所有已打開的數(shù)據(jù)拷貝到子進程表項中,并置進程的狀態(tài)為“創(chuàng)建”狀態(tài)。 4)子進程繼承父進程的所有文件 對父進程當前目錄和所有以打開的文件表項中的引用計數(shù)加1. 5)為子進程創(chuàng)建進程上下文 進程創(chuàng)建結(jié)束,設(shè)子進程狀態(tài)為“內(nèi)存中就緒”并返回子進程的標識符。 6)子進程執(zhí)行 雖然父進程與子進程程序完全相同,但每個進程都有自己的程序計數(shù)器PC,然后根據(jù)pid變量保存的fork()返回值的不同,執(zhí)行了不同的分支語句。六、實驗數(shù)據(jù)及結(jié)果分析1詳細記錄在調(diào)試過程中出現(xiàn)的問題及解決方法; 程序開始時出現(xiàn)命令使
5、用的錯誤,我發(fā)現(xiàn)是gcc命令忘記使用-0后綴;然后再次編譯時發(fā)現(xiàn)程序報錯,仔細的檢查源代碼發(fā)現(xiàn)少#號等調(diào)用的頭文件,接下來也遇到類似的錯誤,但是都根據(jù)錯誤提示一一改正過來。2記錄實驗執(zhí)行的結(jié)果(運行結(jié)果截圖)。進程的創(chuàng)建進程的控制七、實驗總結(jié)本次實驗遇到了很多編譯問題,首先就是gcc環(huán)境的配置問題,通過老師的指導(dǎo),最終完成了換環(huán)境的配置;其次就是在用vim命令打代碼時,這樣的頁面操作方便快捷,深受廣大linux程序員的喜愛,它獨特的編譯界面使我對linux環(huán)境下的開發(fā)有所期待,這使我很好奇linux這種強大的OS是怎么開發(fā)軟件的怎么運行軟件為我們提供服務(wù)的,然后我自己編寫運行了幾個簡單的c程序
6、,在命令行下體驗了gcc(c語言)的獨特魅力,同時也明白了linux操作系統(tǒng)是如何創(chuàng)建進程和控制進程的,雖然說對linux的進程控制的細節(jié)不是特別明白,但是通過編寫、運行代碼,我對其宏觀上的或者某一部分的進程控制有了大概的了解,我還需要繼續(xù)看書學(xué)習它的進程控制以至能夠徹底搞清楚它的進程調(diào)用原理。附錄 源程序清單1. 進程的創(chuàng)建h.c#include<stdio.h> main()int p1,p2;while (p1=fork()=-1);/*chuangjianzijincheng*/if(p1=0)putchar('b');elsewhile(p2=fork()
7、=-1);if(p2=0)putchar('c');elseputchar('a');2. 進程的控制i.c#include<stdio.h>main()int p1,p2,i;while(p1=fork()=-1);if(p1=0)for(i=0;i<100;i+)printf("daughter%dt",i);elsewhile(p2=fork()=-1);if(p2=0)for(i=0;i<100;i+)printf("son%dt",i);elsefor(i=0;i<100;i+)printf("parent%dt",i);j.c#include<stdio.h>#include<unistd.h>main()int p1,p2,i;while(p1=fork()=-1);if(p1=0)lockf(1,1,0);for(i=0;i<50;i+)printf("child %dn",i);lockf(1,0,0);elsewhile(p2=fork()=-1);if(p2=0)lockf(1,1,0);for(i=0;i<50;i+)pr
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租建材商鋪合同范例
- 代購合作合同范例
- 出口公司合同范例
- 個人混凝土買賣合同范本
- 三通訂貨合同范例
- 勞務(wù)yuanquan合同范例
- 合同范例范例租房
- 廠房建設(shè)安裝合同范例
- 單位用車租賃合同范例
- 農(nóng)貿(mào)廣場收租合同范本
- 2024屆江西省南昌市高三一模英語試卷(解析版)
- 案例2 進化醫(yī)療-跨物種腫瘤基因治療的開拓者
- 小紅書種草營銷師(初級)認證考試題庫(附答案)
- 網(wǎng)絡(luò)安全知識基礎(chǔ)培訓(xùn)課件
- 中職金融學(xué)基礎(chǔ)
- 運用精益管理(TPS)縮短醫(yī)院門診患者就診時間醫(yī)院品質(zhì)管理成果匯報
- 2024解析:第十五章電流和電路-基礎(chǔ)練(解析版)
- 電子教案-《3D打印技術(shù)概論》
- 安全生產(chǎn)責任體系重點崗位履職清單
- 四川省成都市2024年中考道德與法治真題試卷(含答案)
- 大學(xué)物理實驗(緒論)學(xué)習通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論