




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、進(jìn)程創(chuàng)建和進(jìn)程同步控制(API 函數(shù)) 班級(jí):目錄引入主要任務(wù)總體設(shè)計(jì)具體設(shè)計(jì)操作過(guò)程總結(jié)進(jìn)程的引入 程序(Program)是一組指令的有序集合,它本身沒(méi)有任何運(yùn)行的含義,它只是一個(gè)靜態(tài)的實(shí)體。 也就是說(shuō),用程序這個(gè)靜態(tài)的實(shí)體不能反映程序在并發(fā)執(zhí)行 過(guò) 程 的 這 些 動(dòng) 態(tài) 特 征 。 于 是 , 人 們 引 入 “ 進(jìn) 程(Process)“這一概念來(lái)描述程序動(dòng)態(tài)執(zhí)行過(guò)程的性質(zhì)。 進(jìn)程是應(yīng)用程序的執(zhí)行實(shí)例,是操作系統(tǒng)分配資源單位。進(jìn)程最根本的屬性是動(dòng)態(tài)性和并發(fā)性。 每個(gè)進(jìn)程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進(jìn)程在運(yùn)行過(guò)程中創(chuàng)建的資源隨著進(jìn)程的終止而被銷毀,所使用的系
2、統(tǒng)資源在進(jìn)程終止時(shí)被釋放。線程的引入 由于每創(chuàng)建一個(gè)進(jìn)程需要申請(qǐng)?jiān)S多的系統(tǒng)資源,比如內(nèi)存空間分配,PCB的分配等,這樣就會(huì)造成一些不必要的浪費(fèi),而線程不需要任何系統(tǒng)資源,它與所屬的進(jìn)程共享系統(tǒng)資源,并且線程之間的切換速度快,提高了程序運(yùn)行的效率,所以引入了線程的概念。 線程是操作系統(tǒng)分配處理器的最基本單元,它是操作系統(tǒng)用來(lái)調(diào)度執(zhí)行的最小單位。 一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。 主要任務(wù)1、利用圖形界面直觀易懂的特點(diǎn),把完全抽象的線程的就緒、阻塞(等待)、執(zhí)行的狀態(tài)以及同步互斥的過(guò)程用圖形動(dòng)態(tài)的顯示出來(lái)。2、用信號(hào)量和事件作為線程之間的同步互斥工具,通過(guò)
3、對(duì)設(shè)置BUFFER1、BUFFER2的容量,來(lái)協(xié)調(diào)PUT、GET、MOVE這三個(gè)線程,使其同步來(lái)實(shí)現(xiàn)P、V操作,并說(shuō)明每個(gè)信號(hào)量的含義、初值和值的范圍。3、設(shè)計(jì)的程序并非真正的傳輸數(shù)據(jù),只是對(duì)一個(gè)數(shù)據(jù)計(jì)數(shù)器加減來(lái)模擬數(shù)據(jù)的增加減少,然后通過(guò)定時(shí)刷新,將線程的狀態(tài)、數(shù)據(jù)顯示到界面上??傮w設(shè)計(jì)利用信號(hào)量機(jī)制來(lái)解決生產(chǎn)者消費(fèi)者問(wèn)題,利用互斥信號(hào)量mutex實(shí)現(xiàn)進(jìn)程對(duì)緩沖池的互斥使用。對(duì) 信 號(hào) 量 的 操 作 通 過(guò) 兩 個(gè) 原 子 操 作 : W a i t ( s ) 和Signal(s).Wait(s)是等待信號(hào)的操作,進(jìn)行S=S-1操作;Signal(s)是發(fā)送信號(hào)的操作,進(jìn)行S=S+1操作
4、。 wait 若s-1后仍大于或等于零,則進(jìn)程繼續(xù)執(zhí)行;若s-1后小于零,則該進(jìn)程被阻塞后進(jìn)入與該信號(hào)相對(duì)應(yīng)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度;若相加結(jié)果大于或等于零,則從該信號(hào)的等待隊(duì)列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度 互斥與同步互斥與同步:進(jìn)程的同步與互斥進(jìn)程的同步與互斥是指進(jìn)程在推進(jìn)時(shí)的是指進(jìn)程在推進(jìn)時(shí)的相互制約關(guān)系。相互制約關(guān)系。進(jìn)程同步:它主要源于進(jìn)程合作,是進(jìn)程間共同完成一項(xiàng)任務(wù)時(shí)進(jìn)程同步:它主要源于進(jìn)程合作,是進(jìn)程間共同完成一項(xiàng)任務(wù)時(shí)直接發(fā)生相互作用的關(guān)系。直接發(fā)生相互作用的關(guān)系。 進(jìn)程互斥:它主要源于資源共享,是進(jìn)程之間的間接制約關(guān)系。進(jìn)程互斥:它主要源于資源共享,
5、是進(jìn)程之間的間接制約關(guān)系。協(xié)調(diào)操作設(shè)計(jì)的總體流程Buffer1Buffer2putmoveget具體設(shè)計(jì)3個(gè)Put操作 , 不斷循環(huán),向Buffer1送數(shù)據(jù),1個(gè)Move操作,不斷循環(huán),將Buffer1的數(shù)據(jù)取到Buffer2,2個(gè)GET操作, 不斷循環(huán),從Buffer2中取數(shù)據(jù)。Buffer1容量3, Buffer2容量2, Put、 Move、 Get每次操作一個(gè)數(shù)據(jù),為了在操作的過(guò)程中要保證數(shù)據(jù)不丟失,每個(gè)Buffer每次只能接受一個(gè)Put或一個(gè)Move或一個(gè)Get,多個(gè)操作不能同時(shí)操作同一Buffer(即需要互斥操作)。 信號(hào)量的設(shè)置 需要六個(gè)信號(hào)量:full1,empty1,butt
6、er1 full2,empty2,butter2各信號(hào)量含義及初值如下: full1表示buffer1是否有數(shù)據(jù),初值為0;empty1表示buffer1是否有空間,初值為3; buffer1表示buffer1是否可操作,初值為1; full2表示buffer2是否有數(shù)據(jù),初值為0; empty2表示buffer2是否有空間,初值為2; buffer2表示buffer2是否可操作,初值為1。程序函數(shù)概覽 APIAPI函數(shù),即函數(shù),即Application Programming Application Programming InterfaceInterface,操作系統(tǒng)除了協(xié)調(diào)應(yīng)用程序的執(zhí),
7、操作系統(tǒng)除了協(xié)調(diào)應(yīng)用程序的執(zhí)行、內(nèi)存分配、系統(tǒng)資源管理外,同時(shí)也是一行、內(nèi)存分配、系統(tǒng)資源管理外,同時(shí)也是一個(gè)很大的服務(wù)中心,調(diào)用這個(gè)服務(wù)中心的各種個(gè)很大的服務(wù)中心,調(diào)用這個(gè)服務(wù)中心的各種服務(wù)(每一種服務(wù)是一個(gè)函數(shù)),可以幫肋應(yīng)服務(wù)(每一種服務(wù)是一個(gè)函數(shù)),可以幫肋應(yīng)用程序達(dá)到開(kāi)啟視窗、描繪圖形、使用周邊設(shè)用程序達(dá)到開(kāi)啟視窗、描繪圖形、使用周邊設(shè)備的目的,由于這些函數(shù)服務(wù)的對(duì)象是應(yīng)用程備的目的,由于這些函數(shù)服務(wù)的對(duì)象是應(yīng)用程序,所以稱為序,所以稱為APIAPI函數(shù)。函數(shù)。 這些函數(shù)是這些函數(shù)是WINDOWSWINDOWS提供給應(yīng)用程序與操作提供給應(yīng)用程序與操作系統(tǒng)的接口,他們猶如系統(tǒng)的接口,他
8、們猶如“積木塊積木塊”一樣,可以一樣,可以搭建出各種界面豐富,功能靈活的應(yīng)用程序。搭建出各種界面豐富,功能靈活的應(yīng)用程序。/*定義頭文件 */ #include #include #include #include #include #include #include/*定義頭變量 */ sem_t iFull,iEmpty; sem_t oFull,oEmpty; int iIn=0,iOut=0,oIn=0,oOut=0; sem_t sem1,sem2; char inBuffer10; /數(shù)組實(shí)現(xiàn)緩沖區(qū)char outBuffer20; int data1,data2,data3; v
9、oid put(void *arg); void move(void *arg); void get(void *arg);sem_t聲明信號(hào)量,本質(zhì)是一個(gè)長(zhǎng)整型的數(shù)/*mian函數(shù) */ main(int argc, char *argv ) 聲明局部變量 /pthread_t用于聲明線程ID/*初始化信號(hào)量imutex為1*/ sem_init(&sem1,0,1);/*初始化信號(hào)量omutex為1*/*初始化信號(hào)量iFull為1*/*初始化信號(hào)量iEmpty為10*/*初始化信號(hào)量oFull為0*/*初始化信號(hào)量oEmpty為20*/函數(shù)sem_init()用來(lái)初始化一個(gè)信號(hào)量它的原型為
10、: extern int sem_init _P (sem_t *_sem, int _pshared, unsigned int _value);pshared參數(shù)控制著信號(hào)量的類型/*創(chuàng)建三個(gè)線程*/ /put線程 /move線程/get線程應(yīng)用函數(shù):pthread_create是類Unix操作系統(tǒng)(Unix、Linux、Mac OS X等)的創(chuàng)建線程的函數(shù)。頭文件 #include函數(shù)聲明int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,(void*)(*start_rtn)(void*),void *arg);線
11、程ID/* put操作線程函數(shù) */ void put(void *arg) /*信號(hào)量減一,P操作*/ p(empty) p(s) put 操作 /*信號(hào)量加一,V操作*/ v(full) v(s) 函數(shù)sem_post( sem_t *sem )用來(lái)增加信號(hào)量的值當(dāng)有線程阻塞在這個(gè)信號(hào)量上時(shí),調(diào)用這個(gè)函數(shù)會(huì)使其中的一個(gè)線程不再阻塞,選擇機(jī)制同樣是由線程的調(diào)度策略決定的。函數(shù)sem_wait( sem_t *sem )被用來(lái)阻塞當(dāng)前線程直到信號(hào)量sem的值大于0,解除阻塞后將sem的值減一,表明公共資源經(jīng)使用后減少。函數(shù)sem_trywait ( sem_t *sem )是函數(shù)sem_wai
12、t()的非阻塞版本,它直接將信號(hào)量sem的值減一。函數(shù)sem_destroy(sem_t *sem)用來(lái)釋放信號(hào)量sem。 獲得信號(hào)量sem的值,并保存到valp中int sem_getvalue(sem_t *sem, int *valp);/* move操作線程函數(shù) */ void move(void *arg) /* move操作將數(shù)據(jù)取出inBuffer緩沖區(qū) */ p(full) p(s)從inBuffer獲取數(shù)據(jù) v(empty) v(s) /* move操作將數(shù)據(jù)放入outBuffer緩沖區(qū) */ p(empty) p(s) 放入outBuffer v(full) v(s) /*
13、 get操作線程函數(shù) */ void get(void *arg) /*信號(hào)量減一,P操作*/ p(full) p(s) get 操作 /*信號(hào)量加一,V操作*/ v(empty) v(s) Buffer1Buffer2putmovegetBuffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程Buffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程Buffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程Buffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程Buffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程Buffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程Buffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程Buffer1 Buffer2putgetmove操作過(guò)程操作過(guò)程總結(jié)經(jīng)過(guò)幾天的討論課準(zhǔn)備,對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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è)保安技術(shù)設(shè)備比較計(jì)劃
- 向?qū)W習(xí)型組織轉(zhuǎn)型的路徑計(jì)劃
- 2024年貴州省自然資源廳下屬事業(yè)單位真題
- 軟件設(shè)計(jì)師選拔標(biāo)準(zhǔn)2025年試題及答案
- 2024年甘肅省教育廳下屬事業(yè)單位真題
- 2025年戰(zhàn)略目標(biāo)與運(yùn)營(yíng)風(fēng)險(xiǎn)的交互影響試題及答案
- 山東省青島十五中學(xué)2025屆七年級(jí)數(shù)學(xué)第二學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 法學(xué)概論摸索與前行試題及答案
- 財(cái)務(wù)風(fēng)險(xiǎn)對(duì)公司戰(zhàn)略的影響試題及答案
- 2025屆河南省湯陰縣七下數(shù)學(xué)期末預(yù)測(cè)試題含解析
- 2025年中國(guó)樺木工藝膠合板市場(chǎng)調(diào)查研究報(bào)告
- 廣西南寧市新民中學(xué)2025屆七下生物期末監(jiān)測(cè)試題含解析
- (三模)石家莊市2025屆高中高三畢業(yè)年級(jí)教學(xué)質(zhì)量檢測(cè)(三)地理試卷(含標(biāo)準(zhǔn)答案)
- 跨境電商勞務(wù)合同協(xié)議
- 解除原有合同協(xié)議書
- 2025中小學(xué)學(xué)校教材教輔征訂管理工作方案
- 2025-2030中國(guó)西餐行業(yè)市場(chǎng)發(fā)展前瞻及投資戰(zhàn)略研究報(bào)告
- 2025年中考時(shí)事政治測(cè)試題及答案
- 湖北省宜昌市2023~2024學(xué)年高二數(shù)學(xué)下學(xué)期5月聯(lián)合測(cè)評(píng)試題含答案
- 2025-2030中國(guó)烘箱行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 企業(yè)會(huì)計(jì)準(zhǔn)則實(shí)施典型案例
評(píng)論
0/150
提交評(píng)論