實驗三 軟中斷通信

實驗三 軟中斷通信

ID:38657706

大小:19.50 KB

頁數(shù):5頁

時間:2019-06-17

實驗三 軟中斷通信_第1頁
實驗三 軟中斷通信_第2頁
實驗三 軟中斷通信_第3頁
實驗三 軟中斷通信_第4頁
實驗三 軟中斷通信_第5頁
資源描述:

《實驗三 軟中斷通信》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

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

2、lled!2、分析利用軟中斷通信實現(xiàn)進程同步的機理實驗指導(dǎo)一、信號1、信號的基本概念每個信號都對應(yīng)一個正整數(shù)常量(稱為signalnumber,即信號編號。定義在系統(tǒng)頭文件中),代表同一用戶的諸進程之間傳送事先約定的信息的類型,用于通知某進程發(fā)生了某異常事件。每個進程在運行時,都要通過信號機制來檢查是否有信號到達。若有,便中斷正在執(zhí)行的程序,轉(zhuǎn)向與該信號相對應(yīng)的處理程序,以完成對該事件的處理;處理結(jié)束后再返回到原來的斷點繼續(xù)執(zhí)行。實質(zhì)上,信號機制是對中斷機制的一種模擬,故在早期的UNIX版本中又把它稱為軟中斷

3、。信號與中斷的相似點:(1)采用了相同的異步通信方式;(2)當(dāng)檢測出有信號或中斷請求時,都暫停正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序;(3)都在處理完畢后返回到原來的斷點;(4)對信號或中斷都可進行屏蔽。信號與中斷的區(qū)別:(1)中斷有優(yōu)先級,而信號沒有優(yōu)先級,所有的信號都是平等的;(2)信號處理程序是在用戶態(tài)下運行的,而中斷處理程序是在核心態(tài)下運行;(3)中斷響應(yīng)是及時的,而信號響應(yīng)通常都有較大的時間延遲。信號機制具有以下三方面的功能:(1)發(fā)送信號。發(fā)送信號的程序用系統(tǒng)調(diào)用kill()實現(xiàn);(2)預(yù)置對信號的處理方式。接收信號

4、的程序用signal()來實現(xiàn)對處理方式的預(yù)置;(3)收受信號的進程按事先的規(guī)定完成對相應(yīng)事件的處理。2、信號的發(fā)送信號的發(fā)送,是指由發(fā)送進程把信號送到指定進程的信號域的某一位上。如果目標進程正在一個可被中斷的優(yōu)先級上睡眠,核心便將它喚醒,發(fā)送進程就此結(jié)束。一個進程可能在其信號域中有多個位被置位,代表有多種類型的信號到達,但對于一類信號,進程卻只能記住其中的某一個。進程用kill()向一個進程或一組進程發(fā)送一個信號。3、對信號的處理當(dāng)一個進程要進入或退出一個低優(yōu)先級睡眠狀態(tài)時,或一個進程即將從核心態(tài)返回用戶態(tài)時,核心都要檢查該進

5、程是否已收到軟中斷。當(dāng)進程處于核心態(tài)時,即使收到軟中斷也不予理睬;只有當(dāng)它返回到用戶態(tài)后,才處理軟中斷信號。對軟中斷信號的處理分三種情況進行:(1)如果進程收到的軟中斷是一個已決定要忽略的信號(function=1),進程不做任何處理便立即返回;(2)進程收到軟中斷后便退出(function=0);(3)執(zhí)行用戶設(shè)置的軟中斷處理程序。二、所涉及的中斷調(diào)用1、kill()系統(tǒng)調(diào)用格式intkill(pid,sig)參數(shù)定義intpid,sig;其中,pid是一個或一組進程的標識符,參數(shù)sig是要發(fā)送的軟中斷信號。(1)pid>0時

6、,核心將信號發(fā)送給進程pid。(2)pid=0時,核心將信號發(fā)送給與發(fā)送進程同組的所有進程。(3)pid=-1時,核心將信號發(fā)送給所有用戶標識符真正等于發(fā)送進程的有效用戶標識號的進程。2、signal()預(yù)置對信號的處理方式,允許調(diào)用進程控制軟中斷信號。系統(tǒng)調(diào)用格式signal(sig,function)頭文件為 #include參數(shù)定義signal(sig,function)intsig;void(*func)()其中sig用于指定信號的類型,sig為0則表示沒有收到任何信號,余者如下表:值名字說明01SI

7、GHUP掛起(hangup)02SIGINT中斷,當(dāng)用戶從鍵盤按^c鍵或^break鍵時03SIGQUIT退出,當(dāng)用戶從鍵盤按quit鍵時04SIGILL非法指令05SIGTRAP跟蹤陷阱(tracetrap),啟動進程,跟蹤代碼的執(zhí)行06SIGIOTIOT指令07SIGEMTEMT指令08SIGFPE浮點運算溢出09SIGKILL殺死、終止進程10SIGBUS總線錯誤11SIGSEGV段違例(segmentationviolation),進程試圖去訪問其虛地址空間以外的位置12SIGSYS系統(tǒng)調(diào)用中參數(shù)錯,如系統(tǒng)調(diào)用號非法13

8、SIGPIPE向某個非讀管道中寫入數(shù)據(jù)14SIGALRM鬧鐘。當(dāng)某進程希望在某時間后接收信號時發(fā)此信號15SIGTERM軟件終止(softwaretermination)16SIGUSR1用戶自定義信號117SIGUSR2用戶自定義信號218SIGCLD某個子進

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。