版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)課程設(shè)計(jì)報(bào)告專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 姓名: 劉 柯 學(xué)號(hào): 2 日期: 2014.9.21 一、 課程設(shè)計(jì)內(nèi)容調(diào)用linux系統(tǒng)調(diào)用實(shí)現(xiàn)多進(jìn)程的創(chuàng)建、進(jìn)程間同步與互斥。二、課程設(shè)計(jì)目的1、加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別2、進(jìn)一步認(rèn)識(shí)并發(fā)執(zhí)行的實(shí)質(zhì)3、分析進(jìn)程競爭資源現(xiàn)象,學(xué)習(xí)解決進(jìn)程互斥的方法4、了解Linux系統(tǒng)中進(jìn)程通信的基本原理三、課程設(shè)計(jì)題目1 進(jìn)程的創(chuàng)建u 任務(wù):編寫一段程序,使用系統(tǒng)調(diào)用fork( )創(chuàng)建兩個(gè)子進(jìn)程,這樣在此程序運(yùn)行時(shí),在系統(tǒng)中就有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程在活動(dòng)。 讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符:父進(jìn)程顯示字符a,自進(jìn)程分別顯示字符b和字符c。
2、試觀察、記錄并分析屏幕上進(jìn)程調(diào)度的情況。如果在程序中使用系統(tǒng)調(diào)用nice( )來改變各進(jìn)程的優(yōu)先級(jí),會(huì)出現(xiàn)什么現(xiàn)象?u 程序:/ 文件process1.cpp#include#include#includeusing namespace std;int main()pid_t pid1, pid2; /兩個(gè)子進(jìn)程變量/創(chuàng)建進(jìn)程pid1if (pid1 = fork() /pid1!0,是父進(jìn)程/創(chuàng)建進(jìn)程pid2if (pid2 = fork() /pid2!0, 是父進(jìn)程,輸出acoutaendl; else /子進(jìn)程pid2輸出ccoutcendl;else /子進(jìn)程pid1輸出bcoutb
3、endl;return 0;u 運(yùn)行結(jié)果: 從運(yùn)行結(jié)果來看,只出現(xiàn)了acb。并且最先執(zhí)行了父進(jìn)程,父進(jìn)程return之后,兩個(gè)子進(jìn)程才開始執(zhí)行。原因是fork() 函數(shù)創(chuàng)建進(jìn)程的時(shí)間多于輸出一個(gè)字符的時(shí)間,所以主進(jìn)程輸出字符a的時(shí)候(輸出a之后就return了),兩個(gè)子進(jìn)程都還在創(chuàng)建當(dāng)中。 而從進(jìn)程并發(fā)執(zhí)行來看,輸出acb和abc都是有可能。2 . 進(jìn)程的控制u 任務(wù):修改已編制的程序,將每個(gè)進(jìn)程輸出一個(gè)字符修改為每個(gè)進(jìn)程輸出一句話,再觀察程序執(zhí)行時(shí)屏幕上出現(xiàn)的現(xiàn)象。并分析出現(xiàn)問題的原因。進(jìn)一步理解各個(gè)進(jìn)程爭奪臨界資源的情況。如果在程序中使用系統(tǒng)調(diào)用lockf( )來給每一個(gè)進(jìn)程加鎖,可以實(shí)現(xiàn)
4、進(jìn)程之間的互斥,試觀察并分析出現(xiàn)的現(xiàn)象。u 程序:/文件process2.cpp#include#include#include#includeusing namespace std;int main()pid_t pid1, pid2; /兩個(gè)子進(jìn)程變量/創(chuàng)建進(jìn)程pid1if (pid1 = fork() /pid1!0, 是父進(jìn)程/創(chuàng)建進(jìn)程pid2if (pid2 = fork() /pid2!0, 是父進(jìn)程lockf(1, 1, 0); /上鎖coutI am the father process endl;lockf(1, 0, 0); /解鎖else /子進(jìn)程pid2lockf(1,
5、 1, 0);coutI am the kid process 2endl;lockf(1, 0, 0);else /子進(jìn)程pid1lockf(1, 1, 0);coutI am the kid process 1 endl;lockf(1, 0, 0);return 0;u 運(yùn)行結(jié)果: 運(yùn)行結(jié)果和第一題類似,說明使用fork() 函數(shù)創(chuàng)建進(jìn)程的速度非常慢,遠(yuǎn)遠(yuǎn)多于輸出一段字符串的時(shí)間。cout輸出字符串是連續(xù)的,因此字符串內(nèi)部的字符順序輸出,不會(huì)被打亂。但是由于進(jìn)程并發(fā)執(zhí)行時(shí)的調(diào)度順序和多進(jìn)程搶占處理機(jī)的問題,輸出字符串的順序可能會(huì)有所不同。另外,不同進(jìn)程之間不存在共享臨界資源(打印機(jī)的互斥
6、性已經(jīng)由操作系統(tǒng)保證),所以加鎖和不加鎖的效果相同,故此只列出加鎖時(shí)的運(yùn)行結(jié)果。3 進(jìn)程的軟中斷通訊u 任務(wù):編制一段程序,實(shí)現(xiàn)進(jìn)程的軟中斷通訊:使用系統(tǒng)調(diào)用fork( )創(chuàng)建兩個(gè)子進(jìn)程;再使用系統(tǒng)調(diào)用。signal( )讓父進(jìn)程捕捉鍵盤上來的中斷信號(hào)(即按Del鍵);在捕捉到中斷信號(hào)后,父進(jìn)程用系統(tǒng)調(diào)用kill( )向兩個(gè)子進(jìn)程發(fā)信號(hào);子進(jìn)程捕捉到信號(hào)后分別輸出下列信息后終止:child process1 is killed by parent!child process2 is killed by parent!父進(jìn)程等待兩個(gè)子進(jìn)程都終止以后,輸出如下信息后終止:parent proces
7、s in killed!u 程序流程圖:u 程序:這段程序處理的難點(diǎn)是讓父進(jìn)程一直保持運(yùn)行狀態(tài)來等待中斷信號(hào)。 程序運(yùn)行都是快速的,往往用戶還沒來得及發(fā)送中斷信號(hào),就已經(jīng)執(zhí)行完畢了。本程序設(shè)置了一個(gè)等待標(biāo)志變量flag。程序開始時(shí),父進(jìn)程用signal( ) 指定中斷處理函數(shù)為fun( )。然后讓flag = 1,并定義一個(gè)函數(shù)waiting( ) 以flag = 1為條件無限循環(huán),達(dá)到等待的目的。當(dāng)用戶發(fā)出中斷指令(按DEL鍵),fun( ) 函數(shù)讓flag = 0。此時(shí)waiting( ) 函數(shù)不滿足flag =1,循環(huán)結(jié)束。程序繼續(xù)向下執(zhí)行,父進(jìn)程用kill( ) 向子進(jìn)程發(fā)送信號(hào),并使
8、用wait(0)進(jìn)入等待。子進(jìn)程用同樣的方式等待父進(jìn)程發(fā)送信號(hào),收到信號(hào)并輸出字符串后用exit(0) 自動(dòng)結(jié)束。當(dāng)兩個(gè)子進(jìn)程都結(jié)束后,父進(jìn)程輸出字符串后程序結(jié)束。/文件process3.cpp#include#include#include#include#include#includeusing namespace std;static int flag; /全局變量flag作為等待標(biāo)志,“0”表示不等待,“1”表示等待void fun(int sig) /信號(hào)處理函數(shù),收到信號(hào)置flag為0flag = 0;void waiting() /自定義等待函數(shù),flag!=0時(shí)無限循環(huán)whil
9、e(flag != 0);int main()pid_t pid1, pid2; /兩個(gè)子進(jìn)程變量if (pid1 = fork()if (pid2 = fork()/父進(jìn)程flag = 1; /設(shè)置等待標(biāo)志為“1”signal(SIGINT, fun); /用fun函數(shù)處理“DEL”信號(hào)coutwaiting the signal.endl;waiting(); /無限循環(huán),直到用戶輸入信號(hào)kill(pid1, 2); /向子進(jìn)程pid1發(fā)出信號(hào)“2”,該信號(hào)可以任意kill(pid2, 2); /向子進(jìn)程pid2發(fā)出信號(hào)“2”,該信號(hào)可以任意wait(0); /等待子進(jìn)程結(jié)束wait(0)
10、; /等待子進(jìn)程結(jié)束coutParent Process is Killed!endl;else/子進(jìn)程pid2, 處理方式同父進(jìn)程flag = 1;signal(2, fun);waiting();coutChild Process2 is Killed by Parent!endl;exit(0); /子進(jìn)程結(jié)束else/子進(jìn)程pid1,處理方式同父進(jìn)程flag = 1;signal(2, fun);waiting();coutChild Process1 is Killed by Parent!endl;exit(0); /子進(jìn)程結(jié)束return 0;u 運(yùn)行結(jié)果: 本段程序用軟中斷實(shí)現(xiàn)了進(jìn)程間的通信(父進(jìn)程和子進(jìn)程)。運(yùn)行結(jié)果顯示,兩個(gè)子進(jìn)程執(zhí)行的順序有先有后,是隨機(jī)的。在按DEL鍵之前,程序一直處于等待之中,從圖片最后的光標(biāo)可以看出程序在等待用戶輸入,并用有友好的方式進(jìn)行了提醒:waiting the signal.四、課程設(shè)計(jì)總結(jié)本次實(shí)驗(yàn)的程序需要在Linux環(huán)境下編程,所以我額外地學(xué)習(xí)了在windows系統(tǒng)下安裝虛擬機(jī)模擬Linux環(huán)境來編程的方法。在寫代碼的過程中,以前有些生疏的地方也熟悉了起來,果然還是實(shí)踐才是檢驗(yàn)真理的標(biāo)準(zhǔn)。這次實(shí)驗(yàn)我掌握了在Linux系統(tǒng)下編
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025 小學(xué)三年級(jí)科學(xué)下冊對(duì)比風(fēng)媒花與蟲媒花的特點(diǎn)課件
- 生產(chǎn)文員考試試題及答案
- 生物初一考試題目及答案
- 輔警國學(xué)培訓(xùn)課件
- 2026年深圳中考語文正確使用熟語試卷(附答案可下載)
- 2026年深圳中考英語題型全解全練試卷(附答案可下載)
- 危險(xiǎn)品車駕駛員培訓(xùn)課件
- 知識(shí)類題目及答案
- 2026年深圳中考數(shù)學(xué)重難點(diǎn)突破試卷(附答案可下載)
- 2026年深圳中考生物三模仿真模擬試卷(附答案可下載)
- 南通南通市通州區(qū)圖書館公開招聘勞務(wù)派遣人員筆試歷年備考題庫附帶答案詳解
- 2026中工國際工程股份有限公司社會(huì)招聘筆試備考試題及答案解析
- 物業(yè)總經(jīng)理培訓(xùn)課件
- 短險(xiǎn)銷售技巧培訓(xùn)課件
- 2025年職業(yè)衛(wèi)生健康培訓(xùn)考試試題及答案
- 山東省濟(jì)南市2024-2025學(xué)年高二上學(xué)期1月期末考試英語含答案
- 2026云南省產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)研究院招聘編制外人員2人筆試模擬試題及答案解析
- 制造部部門介紹
- 2026年二十屆四中全會(huì)精神應(yīng)知應(yīng)會(huì)題庫及答案
- 化工品物流樞紐項(xiàng)目運(yùn)營管理方案
- (高清版)T∕CES 243-2023 《構(gòu)網(wǎng)型儲(chǔ)能系統(tǒng)并網(wǎng)技術(shù)規(guī)范》
評(píng)論
0/150
提交評(píng)論