實(shí)驗(yàn)三 軟中斷通信_(tái)第1頁(yè)
已閱讀1頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)三軟中斷通信實(shí)驗(yàn)?zāi)康?、了解什么是信號(hào)2、熟悉LINUX系統(tǒng)中進(jìn)程之間軟中斷通信的基本原理實(shí)驗(yàn)內(nèi)容1、編寫(xiě)程序:用fk()創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用signal()讓父進(jìn)程捕捉鍵盤(pán)上來(lái)的中斷信號(hào)(即按^c鍵);捕捉到中斷信號(hào)后,父進(jìn)程用系統(tǒng)調(diào)用kill()向兩個(gè)子進(jìn)程發(fā)出信號(hào),子進(jìn)程捕捉到信號(hào)后分別輸出下列信息后終止:Childprocess1iskilledbyparent!Childprocess2iskilledbypare

2、nt!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出如下的信息后終止:Parentprocessiskilled!2、分析利用軟中斷通信實(shí)現(xiàn)進(jìn)程同步的機(jī)理實(shí)驗(yàn)指導(dǎo)一、信號(hào)1、信號(hào)的基本概念每個(gè)信號(hào)都對(duì)應(yīng)一個(gè)正整數(shù)常量(稱為signalnumber即信號(hào)編號(hào)。定義在系統(tǒng)頭文件中),代表同一用戶的諸進(jìn)程之間傳送事先約定的信息的類型,用于通知某進(jìn)程發(fā)生了某異常事件。每個(gè)進(jìn)程在運(yùn)行時(shí),都要通過(guò)信號(hào)機(jī)制來(lái)檢查是否有信號(hào)到達(dá)。若有,便中斷正在執(zhí)行的程序,轉(zhuǎn)向與該

3、信號(hào)相對(duì)應(yīng)的處理程序,以完成對(duì)該事件的處理;處理結(jié)束后再返回到原來(lái)的斷點(diǎn)繼續(xù)執(zhí)行。實(shí)質(zhì)上,信號(hào)機(jī)制是對(duì)中斷機(jī)制的一種模擬,故在早期的UNIX版本中又把它稱為軟中斷。信號(hào)與中斷的相似點(diǎn):(1)采用了相同的異步通信方式;(2)當(dāng)檢測(cè)出有信號(hào)或中斷請(qǐng)求時(shí),都暫停正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序;(3)都在處理完畢后返回到原來(lái)的斷點(diǎn);(4)對(duì)信號(hào)或中斷都可進(jìn)行屏蔽。信號(hào)與中斷的區(qū)別:(1)中斷有優(yōu)先級(jí),而信號(hào)沒(méi)有優(yōu)先級(jí),所有的信號(hào)都是平等

4、的;(2)信號(hào)處理程序是在用戶態(tài)下運(yùn)行的,而中斷處理程序是在核心態(tài)下運(yùn)行;(3)中斷響應(yīng)是及時(shí)的,而信號(hào)響應(yīng)通常都有較大的時(shí)間延遲。信號(hào)機(jī)制具有以下三方面的功能:(1)發(fā)送信號(hào)。發(fā)送信號(hào)的程序用系統(tǒng)調(diào)用kill()實(shí)現(xiàn);(2)預(yù)置對(duì)信號(hào)的處理方式。接收信號(hào)的程序用signal()來(lái)實(shí)現(xiàn)對(duì)處理方式的預(yù)置;(3)收受信號(hào)的進(jìn)程按事先的規(guī)定完成對(duì)相應(yīng)事件的處理。2、信號(hào)的發(fā)送信號(hào)的發(fā)送,是指由發(fā)送進(jìn)程把信號(hào)送到指定進(jìn)程的信號(hào)域的某一位上。如果

5、目標(biāo)進(jìn)程正在一個(gè)可被中斷的優(yōu)先級(jí)上睡眠,核心便將它喚醒,發(fā)送進(jìn)程就此結(jié)束。一個(gè)進(jìn)程可能在其信號(hào)域中有多個(gè)位被置位,代表有多種類型的信號(hào)到達(dá),但對(duì)于一類信號(hào),進(jìn)程卻只能記住其中的某一個(gè)。進(jìn)程用kill()向一個(gè)進(jìn)程或一組進(jìn)程發(fā)送一個(gè)信號(hào)。violation),進(jìn)程試圖去訪問(wèn)其虛地址空間以外的位置12SIGSYS系統(tǒng)調(diào)用中參數(shù)錯(cuò),如系統(tǒng)調(diào)用號(hào)非法13SIGPIPE向某個(gè)非讀管道中寫(xiě)入數(shù)據(jù)14SIGALRM鬧鐘。當(dāng)某進(jìn)程希望在某時(shí)間后接收信號(hào)

6、時(shí)發(fā)此信號(hào)15SIGTERM軟件終止(softwaretermination)16SIGUSR1用戶自定義信號(hào)117SIGUSR2用戶自定義信號(hào)218SIGCLD某個(gè)子進(jìn)程死19SIGPWR電源故障function:在該進(jìn)程中的一個(gè)函數(shù)地址,在核心返回用戶態(tài)時(shí),它以軟中斷信號(hào)的序號(hào)作為參數(shù)調(diào)用該函數(shù),對(duì)除了信號(hào)SIGKILL,SIGTRAP和SIGPWR以外的信號(hào),核心自動(dòng)地重新設(shè)置軟中斷信號(hào)處理程序的值為SIG_DFL,一個(gè)進(jìn)程不能捕

7、獲SIGKILL信號(hào)。function的解釋如下:(1)function=1時(shí),進(jìn)程對(duì)sig類信號(hào)不予理睬,亦即屏蔽了該類信號(hào);(2)function=0時(shí),缺省值,進(jìn)程在收到sig信號(hào)后應(yīng)終止自己;(3)function為非0,非1類整數(shù)時(shí),function的值即作為信號(hào)處理程序的指針。三、參考程序#include#include#include#include#includevoidwaiting()stop()intwait_ma

8、rkintmain()intp1p2stdout=1while((p1=fk())==1)創(chuàng)建子進(jìn)程p1if(p10)while((p2=fk())==1)創(chuàng)建子進(jìn)程p2if(p20)wait_mark=1signal(SIGINTstop)接收到^c信號(hào),轉(zhuǎn)stopwaiting()kill(p116)向p1發(fā)軟中斷信號(hào)16kill(p217)向p2發(fā)軟中斷信號(hào)17wait(0)同步wait(0)printf(“Parentproce

溫馨提示

  • 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論