版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1第四章進程管理實驗4.1實驗目的一、加深對進程概念的理解,明確進程和程序的區(qū)別
二.進一步認識并發(fā)執(zhí)行的實質(zhì)
三.分析進程爭用資源的現(xiàn)象,學習解決進程互斥的方法
四.了解Linux系統(tǒng)中進程通信的基本原理
4.2準備知識
4.2.1基本概念
進程的概念
進程與程序的區(qū)別
并發(fā)執(zhí)行的概念
進程互斥的概念
進程通信的基本原理
2系統(tǒng)調(diào)用圖4-1系統(tǒng)調(diào)用的參數(shù)表方式變元表:N參數(shù)1參數(shù)2……參數(shù)n(a)直接方式trap參數(shù)1參數(shù)2……參數(shù)n××變元表:N指針(b)間接方式系統(tǒng)調(diào)用是一種進入系統(tǒng)空間的辦法。通常,在OS的核心中都設(shè)置了一組用于實現(xiàn)各種系統(tǒng)功能的子程序,并將它們提供給程序員使用。程序員在需要OS提供某種服務(wù)的時候,便可以調(diào)用一條系統(tǒng)調(diào)用命令,去實現(xiàn)希望的功能,這就是系統(tǒng)調(diào)用。因此,系統(tǒng)調(diào)用就像一個黑箱子一樣,對用戶屏蔽了操作系統(tǒng)的具體動作而只是提供了調(diào)用功能的接口。系統(tǒng)調(diào)用與一般的過程調(diào)用有下述幾方面的明顯差別:(1)運行在不同的系統(tǒng)狀態(tài)。(2)通過軟中斷進入。(3)返回問題。當調(diào)用進程仍具有最高優(yōu)先級時,才返回到調(diào)用進程繼續(xù)執(zhí)行;否則,將引起重新調(diào)度,以便讓優(yōu)先權(quán)最高的進程優(yōu)先執(zhí)行。(4)嵌套調(diào)用。系統(tǒng)調(diào)用也可以嵌套進行系統(tǒng)調(diào)用的實現(xiàn)系統(tǒng)調(diào)用的實現(xiàn)與一般過程調(diào)用的實現(xiàn)相比,兩者間有很大差異。對于系統(tǒng)調(diào)用,控制是由原來的用戶態(tài)轉(zhuǎn)換為系統(tǒng)態(tài),這是借助于中斷和陷入機制來完成的,在該機制中包括中斷和陷入硬件機構(gòu)及中斷與陷入處理程序兩部分。中斷是指CPU對系統(tǒng)發(fā)生某事件時的一種響應(yīng).中斷分為外中斷和內(nèi)中斷(1)所謂外中斷是指由于外部設(shè)備事件所引起的中斷.(2)內(nèi)中斷則是指由于CPU內(nèi)部事件所引起的中斷.
如程序出錯(地址越界)、電源故障等。內(nèi)中斷(trap)被譯為“捕獲”或“陷入”。陷入是由于執(zhí)行了現(xiàn)行指令所引起的;中斷則是由于系統(tǒng)中某事件引起的,該事件與現(xiàn)行指令無關(guān)。進程創(chuàng)建與軟中斷通信fork系統(tǒng)調(diào)用:由于進程為執(zhí)行程序的環(huán)境,因此在執(zhí)行程序前必須先建立這個能"跑"程序的環(huán)境。Linux系統(tǒng)提供系統(tǒng)調(diào)用拷貝現(xiàn)行進程的內(nèi)容,以產(chǎn)生新的進程,調(diào)用fork的進程稱為父進程;而所產(chǎn)生的新進程則稱為子進程。子進程會承襲父進程的一切特性,但是它有自己的數(shù)據(jù)段,也就是說,盡管子進程改變了所屬的變量,卻不會影響到父進程的變量值。
父進程和子進程共享一個程序段,但是各自擁有自己的堆棧、數(shù)據(jù)段、用戶空間以及進程控制塊。換言之,兩個進程執(zhí)行的程序代碼是一樣的,但是各有各的程序計數(shù)器與自己的私人數(shù)據(jù)。
9linux是多用戶和多進程的操作系統(tǒng),進程在操作系統(tǒng)中的創(chuàng)建,都會生成一個進程描述塊,描述當前進程的所有信息,包括,數(shù)據(jù)段、代碼段、堆棧段的地址,當前進程的環(huán)境變量,文件描述符等。
fork函數(shù)過程:操作系統(tǒng)先創(chuàng)建一個進程描述塊,然后把父進程的所有進程描述符的信息精確拷貝過來,和父進程一樣(除了進程ID不一樣外),代碼段共享,數(shù)據(jù)段和堆棧段復制,所有的寄存器的值全部精確拷貝,文件描述符也許精確拷貝。
fork的返回值,fork在父進程空間中返回子進程的PID,在子進程空間中返回0。10圖3-2父進程和子進程的內(nèi)存映像用戶內(nèi)存區(qū)父進程的vm_arce_structvmstartvmstartcount=2vmstartvmstartcount=2子進程的vm_arce_struct子進程數(shù)據(jù)區(qū)子進程堆棧區(qū)父進程數(shù)據(jù)區(qū)父進程堆棧區(qū)共享正文區(qū)11一.fork()函數(shù):用于創(chuàng)建一個新進程(子進程)intfork();pid=fork();if(pid<0){printf("forkerror\n");exit(0);}if(pid==0){printf("Thechildprocessisrunningnow!\n");exit(0);}if(pid>0){printf("Theparentprocessisrunningnow!\n");exit(0);}
進程創(chuàng)建與軟中斷通信信號與軟中斷信號是OS系統(tǒng)中使用的一種進程間通信方式,它提供一種處理異步事件的方法。例如:用戶可以通過一個中斷指令中斷一個程序的執(zhí)行,兩個進程間可以通過發(fā)送信號通知一個異步事件,系統(tǒng)或進程通過信號報告突發(fā)的硬件故障(如非法指令或運算溢出)。此外,系統(tǒng)還可以通過信號實現(xiàn)軟中斷,即用戶進程向自身發(fā)送信號,以調(diào)用某些系統(tǒng)功能,或轉(zhuǎn)入某些特定處理。進程創(chuàng)建與軟中斷通信“軟中斷”不同于普通中斷,它是指通過隨機向進程發(fā)送信號,通知進程完成某事件。只有執(zhí)行狀態(tài)的進程才會響應(yīng)該信號,與處理普通中斷一樣,進程轉(zhuǎn)而執(zhí)行信號要求的處理。如果信號到達時,進程處于執(zhí)行狀態(tài)以外的其他狀態(tài),則信號不會被響應(yīng)。進程創(chuàng)建與軟中斷通信系統(tǒng)調(diào)用signal(sig,function)是進程用來設(shè)定某個信號的處理方法;系統(tǒng)調(diào)用kill(Pid,Iid)是用來發(fā)送信號給指定進程的。這兩個調(diào)用可以形成信號的基本操作。處理信號有三種類型:進程接收到信號后退出;進程忽略該信號;進程收到信號后執(zhí)行用戶設(shè)定用系統(tǒng)調(diào)用signal的函數(shù)。信號SIGINT由按下Ctrl-C發(fā)出,信號SIGQUIT由按下Ctrl-發(fā)出。信號功能值SIGHUP掛起1SIGINT鍵盤中斷,鍵盤按Delete鍵或Break鍵2SIGQUIT鍵盤按Quit鍵3SIGILL非法指令4SIGTRAP跟蹤中斷5SIGIOTIOT指令6SIGBUS總線錯7SIGFPE浮點運算溢出8SIGKILL要求終止進程9SIGUSR1用戶定義信號#110SIGSEGV段違法11SIGUSR2用戶定義信號#212SIGPIPE向沒有讀進程的管道上寫13SIGALRM定時器告警,時間到14SIGTERMkill發(fā)出的軟件結(jié)束信號15(16,堆棧錯誤,使進程終止)SIGCHLD子進程死17SIGCONT若已停止則繼續(xù)18SIGPWR電源故障30Wait()函數(shù)Wait()函數(shù)常用來控制父進程與子進程的同步。在父進程中調(diào)用wait()函數(shù),則父進程被阻塞,進入等待隊列,等待子進程結(jié)束。當子進程結(jié)束時,會向父進程發(fā)出SIGCHLD信號。當接收到信號后,父進程從wait()函數(shù)返回繼續(xù)執(zhí)行原程序。Exit()函數(shù)是進程結(jié)束最常調(diào)用的函數(shù)。在正常終止時,exit()函數(shù)返回進程結(jié)束狀態(tài)。進程創(chuàng)建與軟中斷通信#include<stdio.h>#include<signal.h>#include<unistd.h>#include<sys/types.h>intwait_flag;voidstop(){wait_flag=0;};main(){ intpid1,pid2; wait_flag=1; signal(2,stop);//orsignal(14,stop);進程創(chuàng)建與軟中斷通信while(wait_flag==1); while((pid1=fork())==-1); if(pid1>0){while((pid2=fork())==-1); if(pid2>0){wait_flag=1; sleep(5); kill(pid1,16); kill(pid2,17); wait(0); wait(0); printf("Parentprocessiskilled!!\n"); exit(0); }
else{wait_flag=1; signal(17,stop); while(wait_flag==1); printf("Childprocess2iskilledbyparent!!\n"); exit(0);
}
}
else
{wait_flag=1;
signal(16,stop);
while(wait_flag==1);printf("Childprocess1iskilledbyparent!!\n");exit(0); }}
進程創(chuàng)建與軟中斷通信
else{wait_flag=1; signal(17,stop); while(wait_flag==1); printf("Childprocess2iskilledbyparent!!\n"); exit(0);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國單面背網(wǎng)超市貨架數(shù)據(jù)監(jiān)測研究報告
- 2025年中國油墨專用柔軟劑市場調(diào)查研究報告
- 2025至2031年中國鍛鋼蝶閥行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國耐磨合金管行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國牙墊行業(yè)投資前景及策略咨詢研究報告
- 二零二四年度園林景觀土方開挖與照明工程承包合同3篇
- 2025年度城市綠地除草養(yǎng)護工程合同范本3篇
- 2025年度山地林業(yè)資源開發(fā)承包經(jīng)營合同3篇
- 2025年度個人專利許可使用及維權(quán)服務(wù)合同4篇
- 二零二四年度漁船租賃與冷鏈物流配送合同范本3篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計與授權(quán)使用3篇
- 心肺復蘇課件2024
- 《城鎮(zhèn)燃氣領(lǐng)域重大隱患判定指導手冊》專題培訓
- 湖南財政經(jīng)濟學院專升本管理學真題
- 2024年湖南商務(wù)職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性測試題庫帶答案
- 全國身份證前六位、區(qū)號、郵編-編碼大全
- 2024-2025學年福建省廈門市第一中學高一(上)適應(yīng)性訓練物理試卷(10月)(含答案)
- 《零售學第二版教學》課件
- 廣東省珠海市香洲區(qū)2023-2024學年四年級下學期期末數(shù)學試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
評論
0/150
提交評論