1、
概述
在
unix
系統中,訊號是一種「軟體中斷」處理機制。有許多較為複雜的程式會使用到訊號。訊號機制提供了一種處理非同步事件的方法。
在核心**中通常使用乙個無符號長整數(
32位)中的位元位來表示各種不同的訊號,因此最多可表示
32個不同的訊號。
2、
程序對訊號的三種處理或操作方式
a、
忽略該訊號。
sigkill
和sigstop
這兩個訊號不能被忽略。
b、捕獲該訊號。為了進行操作,我們要定義乙個訊號處理函式對捕獲的訊號進行處理。
c、執行預設操作。核心為每種訊號都提供一種預設操作,通常是終止程序的執行。
3、
傳送訊號
使用者在終端鍵盤上按
ctrl+c
組合來終止乙個程式執行,該操作會產生乙個
sigint
訊號,併發送到當前前台執行的程序中;當程序設定乙個報警時鐘到期時,系統就會向程序傳送乙個
sigalrm
訊號。乙個程序也可以向另乙個程序傳送訊號,如用
kill()
函式向同組的子程序傳送終止執行訊號。
4、
修改訊號處理程式
通過函式
signal()
和sigaction()
可修改程序的訊號處理函式為自己定義的函式。但
signal()
在某些特殊時刻可能會造成訊號丟失,因為它所指定的訊號的處理函式在被呼叫一次後,該訊號的處理函式又恢復為預設處理。
5、
訊號處理過程
當要捕獲並處理某個訊號時,首先要為該訊號設定處理函式。在每個系統呼叫中斷返回時和時鐘中斷返回時,都會檢視當前程序是否有訊號要處理。在其他某些中斷返回時,也會檢視當前程序的訊號情況。程序
0和核心程序不在檢查之列。只是檢查普通程序。當有訊號要處理時會呼叫訊號處理過程。訊號處理結束後,又會從當前程序被中斷處開始執行。
linux0 11訊號機制
linux0.11訊號機制 本文簡單描述linux0.11訊號機制的實現 www.2cto.com 一 有關訊號 當程序收到乙個訊號後,程序根據相關設定呼叫訊號處理函式。有三類訊號處理方式 預設處理方式 忽略訊號方式 執行使用者設定的訊號處理函式。傳送訊號的方式 按下相應的鍵 如ctrl c 使用k...
linux0 11記憶體管理之page s檔案
page.s包括頁異常處理程式,中斷14 主要分兩種情況處理.一是由於缺頁引起的 頁異常中斷,通過呼叫do no page err code,address 來處理,二是由頁寫保護引起 的頁異常,此時通過呼叫頁寫保護處理函式do wp page err code,address 處理哦 其中出錯碼 ...
linux0 11之記憶體管理
其實我覺得作業系統的記憶體管理很神秘,且不說在寫應用程式時呼叫的malloc,在寫linux驅動時get free page,get free pages,kmalloc,就相當頭疼。看完linux0.11之後小有感觸,就此記下。先說核心使用的get free page吧,其實get free pa...