下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)四進(jìn)程與線程一、實(shí)驗(yàn)?zāi)康?理解進(jìn)程的獨(dú)立空間;2理解線程的相關(guān)概念。二、實(shí)驗(yàn)內(nèi)容與要求1、查閱資料,掌握進(jìn)程創(chuàng)立和構(gòu)造的相關(guān)知識(shí)和線程創(chuàng)立和構(gòu)造的相 關(guān)知識(shí),了解C語言程序編寫的相關(guān)知識(shí);2、理解進(jìn)程的獨(dú)立空間的實(shí)驗(yàn)內(nèi)容及步驟1編寫一個(gè)程序,在其 main 函數(shù)中定義一個(gè)變量 shared ,對(duì) 其進(jìn)行循環(huán)加 / 減操作,并輸出每次操作后的結(jié)果;2使用系統(tǒng)調(diào)用 fork 創(chuàng)立子進(jìn)程,觀察該變量的變化; 3修改程序把 shared 變量定義到 main 函數(shù)之外,重復(fù)第 2步操作,觀察該變量的變化。3、理解線程的實(shí)驗(yàn)步驟 1編寫一個(gè)程序,在其 main 函數(shù)中創(chuàng)立一個(gè)或多個(gè)線 程,觀察該線程
2、是如何與主線程并發(fā)運(yùn)行的。輸出每次操作后的結(jié)果;2在 main 函數(shù)外定義一個(gè)變量 shared 全局變量,在 main 中創(chuàng)立一個(gè)線程,在 main 中和新線程 shared 進(jìn)行循環(huán)加 / 減操作,觀察 該變量的變化;(3) 修改程序把 shared變量定義到 main ()函數(shù)之內(nèi),重復(fù)第(2)步操作,觀察該變量的變化。4、對(duì)整個(gè)實(shí)驗(yàn)過程進(jìn)行分析總結(jié),給出詳細(xì)步驟;(1) 觀察上述進(jìn)程執(zhí)行結(jié)果,并分析原因;(2) 提交源程序清單,并附加流程圖與注釋。三、實(shí)驗(yàn)過程1、進(jìn)程的與線程的創(chuàng)立和構(gòu)造(1).進(jìn)程的創(chuàng)立和構(gòu)造進(jìn)程簡單來說就是在操作系統(tǒng)中運(yùn)行的程序,它是操作系統(tǒng)資源管理的 最小單位。但
3、是進(jìn)程是一個(gè)動(dòng)態(tài)的實(shí)體,它是程序的一次執(zhí)行過程。進(jìn)程 和程序的區(qū)別在于:進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的,進(jìn)程是運(yùn)行中的程 序,而程序是一些保存在硬盤上的可執(zhí)行代碼。新的進(jìn)程通過克隆舊的程序(當(dāng)前進(jìn)程)而建立。fork()?和?clone()(對(duì)于線程)系統(tǒng)調(diào)用可用來建立新的進(jìn)程。(2)線程的創(chuàng)立和構(gòu)造線程也稱做輕量級(jí)進(jìn)程。就像進(jìn)程一樣,線程在程序中是獨(dú)立的、并發(fā) 的執(zhí)行路徑,每個(gè)線程有它自己的堆棧、自己的程序計(jì)數(shù)器和自己的局部 變量。但是,與獨(dú)立的進(jìn)程相比,進(jìn)程中的線程之間的獨(dú)立程度要小。它 們共享內(nèi)存、文件句柄和其他每個(gè)進(jìn)程應(yīng)有的狀態(tài)。線程的出現(xiàn)也并不是為了取代進(jìn)程,而是對(duì)進(jìn)程的功能作了擴(kuò)展。進(jìn)
4、程 可以支持多個(gè)線程,它們看似同時(shí)執(zhí)行,但相互之間并不同步。一個(gè)進(jìn)程 中的多個(gè)線程共享相同的內(nèi)存地址空間,這就意味著它們可以訪問相同的 變量和對(duì)象,而且它們從同一堆中分配對(duì)象。盡管這讓線程之間共享信息 變得更容易,但你必須小心,確保它們不會(huì)阻礙同一進(jìn)程里的其他線程。線程與進(jìn)程相似,是一段完成某個(gè)特定功能的代碼,是程序中單個(gè)順序 的流控制,但與進(jìn)程不同的是,同類的多個(gè)線程是共享同一塊內(nèi)存空間和 一組系統(tǒng)資源的,而線程本身的數(shù)據(jù)通常只有微處理器的存放器數(shù)據(jù),以 及一個(gè)供程序執(zhí)行時(shí)使用的堆棧。所以系統(tǒng)在產(chǎn)生一個(gè)線程,或者在各個(gè) 線程之間切換時(shí),負(fù)擔(dān)要比進(jìn)程小得多,正因如此,線程也被稱為輕型進(jìn) 程(l
5、ight-weight process )。一個(gè)進(jìn)程中可以包含多個(gè)線程。2 、理解進(jìn)程的獨(dú)立空間流程圖如下所示:(1)編寫一個(gè)程序,在其 main ()函數(shù)中定義一個(gè)變量 shared,對(duì)其進(jìn)行循環(huán)加/減操作,并輸出每次操作后的結(jié)果源程序如下所示#in elude <stdio.h>int mai n()int shared=1;shared+;printf("%dn", shared);shared-;prin tf("%dn", shared);shared+;prin tf("%dn", shared);shared
6、-;prin tf("%dn", shared);return 0;運(yùn)行結(jié)果如下圖:(2)使用系統(tǒng)調(diào)用fork ()創(chuàng)立子進(jìn)程,觀察該變量的變化添加進(jìn)程創(chuàng)立語句后,程序運(yùn)行結(jié)果如下,子進(jìn)程和父進(jìn)程都執(zhí)行了 操作,且彼此之間對(duì)于同一個(gè)變量shared的自加操作互不影響。代碼如下列圖所示:運(yùn)行結(jié)果如下列圖所示:(3) 修改程序把shared變量定義到main ()函數(shù)之外,重復(fù)第(2) 步操作,觀察該變量的變化。當(dāng)把shared放到主函數(shù)之外時(shí),運(yùn)行結(jié)果和內(nèi)部時(shí)相比,并未 發(fā)生變化。3、理解線程流程圖如下所示:Sleep 1 SShared+ 輸出Shared的值,結(jié)束/開始l
7、丿創(chuàng)立主進(jìn)程開始 設(shè)置全局變量創(chuàng)立線程Sleep 1 SShared+輸出Shared的值結(jié)朿(1)編寫一個(gè)程序,在KmiinJ ()函數(shù)中創(chuàng)立一個(gè)(或多個(gè))線程,觀察該線程是如何與主線程并發(fā)運(yùn)行的。輸出每次操作后的結(jié)果源代碼局部如下所示:運(yùn)行結(jié)果如下列圖所示:原文鏈接:(2) Linux開發(fā)模式與FreeBSD開發(fā)模式的比擬。(2)在ma in ()函數(shù)外定義一個(gè)變量 shared (全局變量),在mai n()中 創(chuàng)立一個(gè)線程,在main()中和新線程shared進(jìn)行循環(huán)加/減操作,觀察該變量的變化源代碼如下所示:運(yùn)行結(jié)果如下列圖所示:(3)修改程序把shared變量定義到main ()函
8、數(shù)之內(nèi),重復(fù)第(2)步操作,觀察該變量的變化局部代碼截圖如下:在這種情況下,直接編譯,會(huì)發(fā)生錯(cuò)誤,截圖如下:prutit-us 1proeeii2.£t. tt hrudd2process11對(duì)fffOJk句的使用|夠熟練和清process?process.cthreadl, cthred3 1.root*root 曹 “葉的D四t、 root* root W Ist hi edtlJ_2. c;使用的過程root# ncc -Ipthread -d thread3_l thre«d3 1.cthiTEd學(xué)習(xí)和彌1補(bǔ)缺乏titm 1 thr_fnT: thread 1, c : 10 : error : 1 shared ' undue(first use in this funct ioti)1 , c : 10 : error : ( EacB Rindflc lard ident i f i er is reported onl ducp thread3_l ,c :實(shí)驗(yàn)過程中,交磴h很重、要ioi不過還是要w i強(qiáng)自 root
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)付款資產(chǎn)轉(zhuǎn)讓
- 質(zhì)量問題先行賠付
- 混凝土供應(yīng)協(xié)議
- 財(cái)務(wù)咨詢服務(wù)協(xié)議樣本
- 服務(wù)改進(jìn)方案合同
- 校園印刷購銷合同
- 鴨毛購銷合同
- 誠信為本杜絕曠工
- 嚴(yán)守校規(guī)我的承諾
- 井位建設(shè)合同范本
- Q2起重機(jī)司機(jī)實(shí)際操作技能考核作業(yè)指導(dǎo)書
- GB/T 37067-2018退化草地修復(fù)技術(shù)規(guī)范
- GB/T 23280-2009開式壓力機(jī)精度
- GB/T 19466.1-2004塑料差示掃描量熱法(DSC)第1部分:通則
- 長方體和正方體的實(shí)踐運(yùn)用
- 第六課 掌握演繹推理方法課件 【備課精講精研】 高中政治統(tǒng)編版選擇性必修三邏輯與思維
- 綜合管廊工程施工技術(shù)概述課件
- 《我的心兒怦怦跳》優(yōu)秀課件
- 公積金提取單身聲明
- 大型設(shè)備的吊裝技術(shù)課件
- 臨床醫(yī)學(xué)概論知識(shí)點(diǎn)匯總
評(píng)論
0/150
提交評(píng)論