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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

7、獲SIGKILL信號。function的解釋如下:(1)function=1時,進(jìn)程對sig類信號不予理睬,亦即屏蔽了該類信號;(2)function=0時,缺省值,進(jìn)程在收到sig信號后應(yīng)終止自己;(3)function為非0,非1類整數(shù)時,function的值即作為信號處理程序的指針。三、參考程序#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信號,轉(zhuǎn)stopwaiting()kill(p116)向p1發(fā)軟中斷信號16kill(p217)向p2發(fā)軟中斷信號17wait(0)同步wait(0)printf(“Parentproce

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論