版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、進(jìn)程創(chuàng)建和進(jìn)程同步控制(API 函數(shù)) 班級:目錄引入主要任務(wù)總體設(shè)計(jì)具體設(shè)計(jì)操作過程總結(jié)進(jìn)程的引入 程序(Program)是一組指令的有序集合,它本身沒有任何運(yùn)行的含義,它只是一個靜態(tài)的實(shí)體。 也就是說,用程序這個靜態(tài)的實(shí)體不能反映程序在并發(fā)執(zhí)行 過 程 的 這 些 動 態(tài) 特 征 。 于 是 , 人 們 引 入 “ 進(jìn) 程(Process)“這一概念來描述程序動態(tài)執(zhí)行過程的性質(zhì)。 進(jìn)程是應(yīng)用程序的執(zhí)行實(shí)例,是操作系統(tǒng)分配資源單位。進(jìn)程最根本的屬性是動態(tài)性和并發(fā)性。 每個進(jìn)程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進(jìn)程在運(yùn)行過程中創(chuàng)建的資源隨著進(jìn)程的終止而被銷毀,所使用的系
2、統(tǒng)資源在進(jìn)程終止時被釋放。線程的引入 由于每創(chuàng)建一個進(jìn)程需要申請?jiān)S多的系統(tǒng)資源,比如內(nèi)存空間分配,PCB的分配等,這樣就會造成一些不必要的浪費(fèi),而線程不需要任何系統(tǒng)資源,它與所屬的進(jìn)程共享系統(tǒng)資源,并且線程之間的切換速度快,提高了程序運(yùn)行的效率,所以引入了線程的概念。 線程是操作系統(tǒng)分配處理器的最基本單元,它是操作系統(tǒng)用來調(diào)度執(zhí)行的最小單位。 一個線程可以創(chuàng)建和撤銷另一個線程;同一個進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行。 主要任務(wù)1、利用圖形界面直觀易懂的特點(diǎn),把完全抽象的線程的就緒、阻塞(等待)、執(zhí)行的狀態(tài)以及同步互斥的過程用圖形動態(tài)的顯示出來。2、用信號量和事件作為線程之間的同步互斥工具,通過
3、對設(shè)置BUFFER1、BUFFER2的容量,來協(xié)調(diào)PUT、GET、MOVE這三個線程,使其同步來實(shí)現(xiàn)P、V操作,并說明每個信號量的含義、初值和值的范圍。3、設(shè)計(jì)的程序并非真正的傳輸數(shù)據(jù),只是對一個數(shù)據(jù)計(jì)數(shù)器加減來模擬數(shù)據(jù)的增加減少,然后通過定時刷新,將線程的狀態(tài)、數(shù)據(jù)顯示到界面上??傮w設(shè)計(jì)利用信號量機(jī)制來解決生產(chǎn)者消費(fèi)者問題,利用互斥信號量mutex實(shí)現(xiàn)進(jìn)程對緩沖池的互斥使用。對 信 號 量 的 操 作 通 過 兩 個 原 子 操 作 : W a i t ( s ) 和Signal(s).Wait(s)是等待信號的操作,進(jìn)行S=S-1操作;Signal(s)是發(fā)送信號的操作,進(jìn)行S=S+1操作
4、。 wait 若s-1后仍大于或等于零,則進(jìn)程繼續(xù)執(zhí)行;若s-1后小于零,則該進(jìn)程被阻塞后進(jìn)入與該信號相對應(yīng)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度;若相加結(jié)果大于或等于零,則從該信號的等待隊(duì)列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度 互斥與同步互斥與同步:進(jìn)程的同步與互斥進(jìn)程的同步與互斥是指進(jìn)程在推進(jìn)時的是指進(jìn)程在推進(jìn)時的相互制約關(guān)系。相互制約關(guān)系。進(jìn)程同步:它主要源于進(jìn)程合作,是進(jìn)程間共同完成一項(xiàng)任務(wù)時進(jìn)程同步:它主要源于進(jìn)程合作,是進(jìn)程間共同完成一項(xiàng)任務(wù)時直接發(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個Put操作 , 不斷循環(huán),向Buffer1送數(shù)據(jù),1個Move操作,不斷循環(huán),將Buffer1的數(shù)據(jù)取到Buffer2,2個GET操作, 不斷循環(huán),從Buffer2中取數(shù)據(jù)。Buffer1容量3, Buffer2容量2, Put、 Move、 Get每次操作一個數(shù)據(jù),為了在操作的過程中要保證數(shù)據(jù)不丟失,每個Buffer每次只能接受一個Put或一個Move或一個Get,多個操作不能同時操作同一Buffer(即需要互斥操作)。 信號量的設(shè)置 需要六個信號量:full1,empty1,butt
6、er1 full2,empty2,butter2各信號量含義及初值如下: 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)資源管理外,同時也是一行、內(nèi)存分配、系統(tǒng)資源管理外,同時也是一個很大的服務(wù)中心,調(diào)用這個服務(wù)中心的各種個很大的服務(wù)中心,調(diào)用這個服務(wù)中心的各種服務(wù)(每一種服務(wù)是一個函數(shù)),可以幫肋應(yīng)服務(wù)(每一種服務(wù)是一個函數(shù)),可以幫肋應(yīng)用程序達(dá)到開啟視窗、描繪圖形、使用周邊設(shè)用程序達(dá)到開啟視窗、描繪圖形、使用周邊設(shè)備的目的,由于這些函數(shù)服務(wù)的對象是應(yīng)用程備的目的,由于這些函數(shù)服務(wù)的對象是應(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聲明信號量,本質(zhì)是一個長整型的數(shù)/*mian函數(shù) */ main(int argc, char *argv ) 聲明局部變量 /pthread_t用于聲明線程ID/*初始化信號量imutex為1*/ sem_init(&sem1,0,1);/*初始化信號量omutex為1*/*初始化信號量iFull為1*/*初始化信號量iEmpty為10*/*初始化信號量oFull為0*/*初始化信號量oEmpty為20*/函數(shù)sem_init()用來初始化一個信號量它的原型為
10、: extern int sem_init _P (sem_t *_sem, int _pshared, unsigned int _value);pshared參數(shù)控制著信號量的類型/*創(chuàng)建三個線程*/ /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) /*信號量減一,P操作*/ p(empty) p(s) put 操作 /*信號量加一,V操作*/ v(full) v(s) 函數(shù)sem_post( sem_t *sem )用來增加信號量的值當(dāng)有線程阻塞在這個信號量上時,調(diào)用這個函數(shù)會使其中的一個線程不再阻塞,選擇機(jī)制同樣是由線程的調(diào)度策略決定的。函數(shù)sem_wait( sem_t *sem )被用來阻塞當(dāng)前線程直到信號量sem的值大于0,解除阻塞后將sem的值減一,表明公共資源經(jīng)使用后減少。函數(shù)sem_trywait ( sem_t *sem )是函數(shù)sem_wai
12、t()的非阻塞版本,它直接將信號量sem的值減一。函數(shù)sem_destroy(sem_t *sem)用來釋放信號量sem。 獲得信號量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) /*信號量減一,P操作*/ p(full) p(s) get 操作 /*信號量加一,V操作*/ v(empty) v(s) Buffer1Buffer2putmovegetBuffer1 Buffer2putgetmove操作過程操作過程Buffer1 Buffer2putgetmove操作過程操作過程Buffer1 Buffer2putgetmove操作過程操作過程Buffer1 Buffer2putgetmove操作過程操作過程Buffer1 Buffer2putgetmove操作過程操作過程Buffer1 Buffer2putgetmove操作過程操作過程Buffer1 Buffer2putgetmove操作過程操作過程Buffer1 Buffer2putgetmove操作過程操作過程總結(jié)經(jīng)過幾天的討論課準(zhǔn)備,對
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省某廢鋼基地項(xiàng)目可行性研究報(bào)告
- 2024租賃期滿后購買選擇權(quán)協(xié)議
- 2025年度特色餐廳餐飲配送服務(wù)承包合同4篇
- 中國防水膠卷材項(xiàng)目投資可行性研究報(bào)告
- 2025年度個人創(chuàng)業(yè)貸款擔(dān)保合同樣本4篇
- 2025年涂裝勞務(wù)分包合同范本大全:涂裝工程安全3篇
- 2025年度個人房產(chǎn)抵押融資合同規(guī)范文本2篇
- 2025年度個人汽車貸款合同標(biāo)準(zhǔn)格式4篇
- 2025年度個人汽車租賃保險(xiǎn)附加服務(wù)合同3篇
- 2025年江蘇海州發(fā)展集團(tuán)有限公司招聘筆試參考題庫含答案解析
- CNAS實(shí)驗(yàn)室評審不符合項(xiàng)整改報(bào)告
- 農(nóng)民工考勤表(模板)
- 承臺混凝土施工技術(shù)交底
- 臥床患者更換床單-軸線翻身
- 計(jì)量基礎(chǔ)知識培訓(xùn)教材201309
- 中考英語 短文填詞、選詞填空練習(xí)
- 一汽集團(tuán)及各合資公司組織架構(gòu)
- 阿特拉斯基本擰緊技術(shù)ppt課件
- 初一至初三數(shù)學(xué)全部知識點(diǎn)
- 新課程理念下的班主任工作藝術(shù)
- (完整版)企業(yè)破產(chǎn)流程圖(四張)
評論
0/150
提交評論