




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
西安郵電大學(xué)西安郵電大學(xué) 操作系統(tǒng)設(shè)計(jì)報(bào)告 題題 目 進(jìn)程 線程 互斥鎖目 進(jìn)程 線程 互斥鎖 院系名稱 院系名稱 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 專業(yè)名稱 專業(yè)名稱 軟件工程軟件工程 班班 級(jí) 級(jí) 學(xué)生姓名 學(xué)生姓名 學(xué)號(hào) 學(xué)號(hào) 8 位 位 指導(dǎo)教師 指導(dǎo)教師 舒新峰舒新峰 設(shè)計(jì)起止時(shí)間 設(shè)計(jì)起止時(shí)間 2013 11 10 2013 11 20 一 一 設(shè)計(jì)目的設(shè)計(jì)目的 1 通過觀察 分析實(shí)驗(yàn)現(xiàn)象 深入理解進(jìn)程及進(jìn)程在調(diào)度執(zhí)行和內(nèi)存空間 等方面的特點(diǎn) 掌握在 POSIX 規(guī)范中 fork 和 kill 系統(tǒng)調(diào)用的功能和 使用 2 通過觀察 分析實(shí)驗(yàn)現(xiàn)象 深入理解線程及線程在調(diào)度執(zhí)行和內(nèi)存空間 等方面的特點(diǎn) 并掌握線程與進(jìn)程的區(qū)別 掌握 POSIX 規(guī)范中 pthread create 函數(shù)的功能和使用方法 3 通過觀察 分析實(shí)驗(yàn)現(xiàn)象 深入理解理解互斥鎖的原理及特點(diǎn)掌握在 POSIX 規(guī)范中的互斥函數(shù)的功能及使用方法 二二 設(shè)計(jì)內(nèi)容設(shè)計(jì)內(nèi)容 1 創(chuàng)建一個(gè)進(jìn)程 父子進(jìn)程 相互交替執(zhí)行 輸出子進(jìn)程號(hào)和進(jìn)程 ID 2 創(chuàng)建三個(gè)線程 輸出三個(gè)線程運(yùn)行的次數(shù)和當(dāng)前主線程運(yùn)行次數(shù)以及三 個(gè)線程次數(shù)和 3 使用 POSIX 規(guī)范中的互斥函數(shù) 實(shí)現(xiàn)加鎖解鎖 4 信號(hào)量機(jī)制的方法 實(shí)現(xiàn)進(jìn)程的加鎖解鎖 三 三 概要設(shè)計(jì)概要設(shè)計(jì) 1 生成一個(gè)進(jìn)程 通過 switch 判斷 來確定生成的進(jìn)程 是子進(jìn)程還是父進(jìn)程 還是錯(cuò)誤的 子進(jìn)程號(hào)定義為全局變量 利 用 kill 殺死進(jìn)程 退出程序 2 利用循環(huán)創(chuàng)建三個(gè)線程 do while 循環(huán) 每運(yùn)行一次 輸 出三個(gè)線程運(yùn)行的次數(shù) 當(dāng)輸入 q 時(shí)候 退出程序 3 創(chuàng)建一個(gè)線程 在循環(huán)中進(jìn)行申請(qǐng)資源 釋放資源 加鎖 以及解鎖的操作 熟悉互斥鎖的工作方式 4 4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 1 1 進(jìn)程交替進(jìn)行 進(jìn)程交替進(jìn)行 當(dāng)程序執(zhí)行到 for i 0 i child proc number i 循環(huán)后 調(diào)用 fork 函數(shù)創(chuàng) 建第一個(gè)子進(jìn)程 然后父進(jìn)程與該子進(jìn)程交替執(zhí)行 當(dāng)子進(jìn)程搶到 cpu 時(shí)繼續(xù) 往下執(zhí)行 case 0 語句中的 do something 語句 執(zhí)行死循環(huán) for 輸出該 進(jìn)程的相關(guān)內(nèi)容 并 sleep 給其他進(jìn)程搶占 cpu 的機(jī)會(huì) 這樣就會(huì)使得進(jìn)程 交替的執(zhí)行 2 2 killkill 命令殺死進(jìn)程命令殺死進(jìn)程 while ch getchar q if isdigit ch i ch 0 kill pid i SIGTERM for i 0 i 10 i kill pid i SIGTERM return 3 3 進(jìn)程運(yùn)行次數(shù)進(jìn)程運(yùn)行次數(shù) do unsigned long long sum 0 for i 0 i MAX THREAD i sum counter i printf llu n counter i printf llu llu n main counter sum while ch getchar q 4 4 進(jìn)程加鎖 解鎖進(jìn)程加鎖 解鎖 a for i 0 i LOOP TIMES i pthread mutex lock pthread mutex lock critical section 1 i pthread mutex unlock pthread mutex unlock pthread mutex destroy pthread mutex destroy b for i 0 i LOOP TIMES i sem wait sem wait critical section 1 i sem post sem post sem destroy sem destroy 五 測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果五 測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果 1 進(jìn)程 各進(jìn)程交替執(zhí)行 無確定順序 當(dāng)輸入要?jiǎng)h除的進(jìn)程編號(hào)時(shí)會(huì)調(diào)用一次 kill 最后輸入 q 結(jié)束時(shí)會(huì)調(diào)用一次 kill 輸入 q 則顯示 已終止 整個(gè)程序執(zhí)行結(jié)束 2 線程 輸出個(gè)各線程運(yùn)行的次數(shù) main counter 和 sum 的值 3 互斥鎖 2 異常測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果 死鎖 死鎖 六 調(diào)試情況 設(shè)計(jì)技巧及體會(huì)六 調(diào)試情況 設(shè)計(jì)技巧及體會(huì) 1 改進(jìn)方案 1 POSIX 規(guī)范中 fork 和 kill 都是有返回值的 為了程序更加嚴(yán)謹(jǐn) 應(yīng)該在 kill 命令也使用接受返回值 如果返回值為 1 則退出 2 程序退出時(shí)候使用了 return 但是書上介紹調(diào)用 exit 結(jié)束的方式會(huì)比 較好 這個(gè)需要以后注意 3 在有些地方 不應(yīng)該使用死循環(huán) 雖然最后可以 q 退出 但是這樣會(huì)導(dǎo)致 CPU 利用率很大 2 體會(huì) 在進(jìn)程 線程 互斥鎖編程序以后 自己對(duì)系統(tǒng)的運(yùn)行以及管理有了初步的 了解 也明白了進(jìn)程和線程都是操作系統(tǒng)的程序運(yùn)行的基本單元 明白了進(jìn)程 的創(chuàng)建 殺死 父子進(jìn)程的關(guān)系 線程的并發(fā)執(zhí)行 互斥鎖的用法 但是自己 還是知道自己在這些方面的使用還不是特別的熟練 自己還需要在以后的學(xué)習(xí) 中 多多的寫這方面的程序 以達(dá)到熟練掌握進(jìn)程 線程 互斥鎖的知識(shí) 7 7 代碼代碼 1 1 include include include include include include define MAX CHILD NUMBER 10 define SLEEP INTERVAL 2 int proc number 0 void do something main int argc char argv printf proc num p n int child proc number MAX CHILD NUMBER int i ch pid t child pid pid t pid 10 0 if argc 1 child proc number atoi argv 1 child proc number child proc number 10 10 child proc number for i 0 i child proc number i child pid fork switch child pid case 1 perror fork error break case 0 proc number i do something break default pid i child pid break while ch getchar q if isdigit ch i ch 0 kill pid i SIGTERM for i 0 i 10 i kill pid i SIGTERM return void do something int i printf proc num p for i 0 i 10 i printf This is process No d and its pid is d n proc number getpid sleep SLEEP INTERVAL 2 2 include include include include include define MAX THREAD 3 unsigned long long main counter counter MAX THREAD void thread worker void int main int argc char argv int i ch pthread t pthread id MAX THREAD 0 for i 0 i MAX THREAD i pthread create do unsigned long long sum 0 for i 0 i MAX THREAD i sum counter i printf llu n counter i printf llu llu n main counter sum while ch getchar q return 0 void thread worker void p int thread num thread num int p for counter thread num main counter 3 3 代碼代碼 1 include include include include include define LOOP TIMES 10000 pthread mutex t mutex1 PTHREAD MUTEX INITIALIZER pthread mutex t mutex2 PTHREAD MUTEX INITIALIZER void thread worker void void critical section int thread num int i int main void int rtn i pthread t pthread id 0 rtn pthread create if rtn 0 printf pthread create ERROR n return 1 for i 0 i LOOP TIMES i pthread mutex lock pthread mutex lock critical section 1 i pthread mutex unlock pthread mutex unlock pthread mutex destroy pthread mutex destroy return 0 void thread worker void p int i for i 0 i LOOP TIMES i pthread mutex lock pthread mutex lock critical section 2 i pthread mutex unlock pthread mutex unlock void critical section int thread num int i printf Thread d d n thread num i 代碼代碼 2 include include include include include include include define LOOP TIMES 10000 sem t S1 S2 void thread worker void void critical section int thread num int i int main int rtn i sem init sem init pthread t pthread id 0 rtn pthread create if rtn 0 perror pthread create exit EXIT FAILURE for i 0 i LOOP TIMES i sem wait sem wait critical section 1 i sem post sem p
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合肥42中一模數(shù)學(xué)試卷
- 國(guó)際高中九年級(jí)數(shù)學(xué)試卷
- 初級(jí)中學(xué)綜合樓建設(shè)項(xiàng)目建議書(范文)
- OBE理念下思政教學(xué)體系的構(gòu)建與實(shí)施路徑
- 穿心蓮抑菌活性物質(zhì)鑒定-洞察及研究
- 2025年醫(yī)學(xué)高級(jí)職稱-護(hù)理學(xué)(醫(yī)學(xué)高級(jí))歷年參考題庫含答案解析(5卷100題)
- 2025年醫(yī)學(xué)高級(jí)職稱-內(nèi)科護(hù)理(醫(yī)學(xué)高級(jí))歷年參考題庫含答案解析(5卷單選一百題)
- 2025年醫(yī)學(xué)高級(jí)職稱-中醫(yī)骨傷科(醫(yī)學(xué)高級(jí))歷年參考題庫含答案解析(5卷單項(xiàng)選擇題100題)
- 2025年住院醫(yī)師規(guī)范培訓(xùn)(各省)-重慶住院醫(yī)師全科醫(yī)學(xué)歷年參考題庫含答案解析(5卷單選100題)
- 2025年住院醫(yī)師規(guī)范培訓(xùn)(各省)-湖南住院醫(yī)師眼科歷年參考題庫含答案解析(5卷100題)
- 《思想道德與法治》學(xué)習(xí)通課后章節(jié)答案期末考試題庫2025年
- 清廉講堂活動(dòng)方案
- 家居落地活動(dòng)方案
- 2025年醫(yī)保知識(shí)考試題庫及答案:醫(yī)保信息化建設(shè)應(yīng)用法律法規(guī)試題
- 環(huán)境現(xiàn)場(chǎng)采樣培訓(xùn)
- 2025年 汕頭市公安局警務(wù)輔助人員招聘考試筆試試卷附答案
- 車輛傷害事故桌面功能演練方案、腳本
- 老舊廠房改造-洞察及研究
- XX公司年產(chǎn)10萬噸陽極銅及5萬噸銅桿項(xiàng)目環(huán)境影響報(bào)告書
- 陜西省專業(yè)技術(shù)人員繼續(xù)教育2025公需課《黨的二十屆三中全會(huì)精神解讀與高質(zhì)量發(fā)展》20學(xué)時(shí)題庫及答案
- 財(cái)務(wù)考試試題及答案大全
評(píng)論
0/150
提交評(píng)論