linux 0 11 之訊號管理

2021-04-26 01:35:14 字數 1255 閱讀 4029

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...