一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux信號事件發(fā)生的兩個來源

FPGA之家 ? 來源:嵌入式軟件開發(fā)交流 ? 作者:young ? 2021-06-18 15:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

什么是信號

信號可以理解為軟件中斷,是在軟件層次上對中斷機制的一種模擬,在原理上,一個進程收到一個信號與處理器收到一個中斷請求可以說是差不多的。信號是異步的,一個進程不必通過任何操作來等待信號的到達。信號可以直接進行用戶空間進程和內(nèi)核進程之間的交互,內(nèi)核進程也可以利用它來通知用戶空間進程發(fā)生了哪些系統(tǒng)事件。

誰來產(chǎn)生信號

信號事件的發(fā)生有兩個來源:

(1) 硬件來源,比如我們按下ctrl+c,會產(chǎn)生SIGINT信號。

(2) 軟件來源,比如我們調(diào)用alarm函數(shù)來產(chǎn)生SIGALRM信號。

常用信號

Linux信號的編號是從1-64,其中32和33空缺,沒有對應(yīng)的信號。通過kill -l 可查看所有的信號。

1~31之間的信號叫做不可靠信號, 信號可能會丟失, 也叫做非實時信號。

34~64之間的信號叫做可靠信號, 信號不會丟失, 也叫做實時信號。

信號響應(yīng)方式

信號有如下三種響應(yīng)方式:

(1) 忽略信號,即對信號不做任何處理,但是有兩個信號不能忽略,即 SIGKILL 及 SIGSTOP。

(2) 捕捉信號,定義信號處理函數(shù),當信號發(fā)生時,執(zhí)行相應(yīng)的自定義處理函數(shù)。

(3) 執(zhí)行缺省操作,Linux 對每種信號都規(guī)定了默認操作。

信號處理過程

信號處理的大致流程如下:

信號產(chǎn)生 -》 信號注冊 -》 信號在進程中注銷 -》 信號處理函數(shù)執(zhí)行完畢

我們主要講一下“信號注冊” 和“信號在進程中注銷”。其他兩個都比較好理解。

信號注冊指的是在目標進程中注冊,該目標進程中有未決信號的信息。啥叫未決信號呢,實際執(zhí)行信號的處理動作稱為信號遞達,信號從產(chǎn)生到遞達之間的狀態(tài),稱為信號未決。

先來看一下對應(yīng)的結(jié)構(gòu)體:

struct sigpending{ //未決信號鏈的頭部與尾部 struct sigqueue *head, *tail; //未決信號集 sigset_t signal;};

struct sigqueue{ struct sigqueue *next; //信號所攜帶的信息 siginfo_t info;}

信號注冊的過程就是將信號值加入到未決信號集siginfo_t中,將信號所攜帶的信息加入到未決信號鏈的某一個sigqueue中去。

因此,對于可靠的信號,可能存在多個未決信號的sigqueue結(jié)構(gòu),對于每次信號到來都會注冊。而不可靠信號只注冊一次,只有一個sigqueue結(jié)構(gòu)。

只要信號在進程的未決信號集中,表明進程已經(jīng)知道這些信號了,還沒來得及處理,或者是這些信號被阻塞。

信號在進程中注銷是指進程已經(jīng)接收到信號了,會在鏈表中移除。在進程的執(zhí)行過程中,每次從系統(tǒng)調(diào)用或中斷返回用戶空間的時候,都會檢查是否有信號沒有被處理。如果這些信號沒有被阻塞,那么就調(diào)用相應(yīng)的信號處理函數(shù)來處理這些信號??煽啃盘柡筒豢煽啃盘柕奶幚碛兴煌?/p>

不可靠信號:由于不可靠信號在未決信號鏈中只有一個sigqueue結(jié)構(gòu),因此將它刪除的同時,也會將信號從未決信號集中刪除。

可靠信號:由于可靠信號在未決信號鏈中可能有多個sigqueue結(jié)構(gòu),如果只有一個,也將信號從未決信號集中刪除掉。如果有多個則不從未決信號集中刪除信號,注銷完畢。

原文標題:Linux信號及工作原理

文章出處:【微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213724
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2851

    瀏覽量

    78261

原文標題:Linux信號及工作原理

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    當CY7C65215在兩個通道上配置為 SPI 和 I2C 時,能否在Linux系統(tǒng)中看到兩個設(shè)備?

    我的客戶想知道,當 CY7C65215 在兩個通道上配置為 SPI 和 I2C 時,他能否在 Linux 系統(tǒng)中看到兩個設(shè)備。
    發(fā)表于 05-26 06:27

    ADS1198有兩個時鐘,CLK和SCLK,這兩個時鐘信號能接在一起嗎?

    最近在做這塊芯片,看到有兩個時鐘,CLK和SCLK,這兩個時鐘信號能接在一起嗎,就是說CLK和SLCK能不能使用同一時鐘信號?另外,關(guān)于
    發(fā)表于 02-07 06:28

    兩個晶體管能如何實現(xiàn)高效正弦波振蕩?

    在電子設(shè)計中,振蕩器是一重要的組件,廣泛應(yīng)用于信號發(fā)生、無線通信和音頻設(shè)備中。一般來說,設(shè)計一穩(wěn)定的正弦波振蕩器往往需要運算放大器或復雜的電路結(jié)構(gòu)。然而,是否可以僅用
    的頭像 發(fā)表于 01-07 12:00 ?565次閱讀
    <b class='flag-5'>兩個</b>晶體管能如何實現(xiàn)高效正弦波振蕩?

    ADC124S021同時使用兩個通道,兩個通道的轉(zhuǎn)換數(shù)據(jù)發(fā)生串擾怎么解決?

    用DSP的SPI接口接ADC124S021,如果只是進行單通道的信號采集,則轉(zhuǎn)換后的數(shù)值穩(wěn)定,但是同時使用兩個通道時則兩個通道的數(shù)據(jù)發(fā)生串擾現(xiàn)象。如,我單獨使用2通道,則轉(zhuǎn)換后數(shù)值穩(wěn)
    發(fā)表于 12-30 07:41

    從時域和頻域兩個角度對信號進行分析

    一般來說,我們會從時域和頻域兩個角度,分別對信號進行分析。 時域 時域是真實世界存在的域,按時間順序呈現(xiàn)。例如,在某個時鐘信號的時域圖中,可以觀察到兩個重要的參數(shù),波形的周期和上升沿:
    的頭像 發(fā)表于 11-19 10:18 ?3340次閱讀
    從時域和頻域<b class='flag-5'>兩個</b>角度對<b class='flag-5'>信號</b>進行分析

    單相電機兩個繞組都在定子上嗎

    單相電機的兩個繞組,即起動線圈(或稱為輔助繞組、副繞組)和運行線圈(或稱為主繞組),都位于定子上 。這兩個繞組在電機中起著關(guān)鍵作用,共同協(xié)作以產(chǎn)生旋轉(zhuǎn)磁場,從而使電機能夠運轉(zhuǎn)。 單相電機通常由一
    的頭像 發(fā)表于 09-03 15:10 ?2168次閱讀

    ad如何設(shè)置兩個元器件的距離

    在Altium Designer(簡稱AD)中設(shè)置兩個元器件之間的距離,主要是通過設(shè)置元器件間的安全間距(Clearance)規(guī)則來實現(xiàn)的。這個規(guī)則定義了元器件之間、元器件與走線之間以及其他設(shè)計元素
    的頭像 發(fā)表于 09-02 15:31 ?1.7w次閱讀

    如何用塊ad9851實現(xiàn)輸出正交的兩個余弦信號

    我們用ad9851輸出兩個正交的兩個余弦信號,是只要我們用同一時鐘信號給他們輸入clk信號,
    發(fā)表于 09-02 07:26

    使用比較器TLV3501把模擬信號轉(zhuǎn)化為數(shù)字信號,為什么振蕩出的信號總會有兩個連續(xù)的波形?

    和15pf。但是振蕩出的信號總會有兩個連續(xù)的波形。 具體圖如下: 2為藍色,是模擬信號。1為黃色,是比較器輸出信號。4為綠色,是比較器上升沿觸發(fā)振蕩產(chǎn)生的
    發(fā)表于 08-29 08:11

    功放機AB兩個聲道輸出怎么接

    功放機AB兩個聲道輸出的接線方式,主要取決于您想要實現(xiàn)的音頻效果以及音箱的配置。以下將詳細介紹幾種常見的接線方式,以及它們各自的特點和適用場景。 一、基礎(chǔ)接線方式 在大多數(shù)情況下,功放機的AB兩個
    的頭像 發(fā)表于 08-23 10:40 ?9264次閱讀

    單穩(wěn)態(tài)觸發(fā)器的兩個工作狀態(tài)是什么

    單穩(wěn)態(tài)觸發(fā)器是一種數(shù)字邏輯電路,廣泛應(yīng)用于各種電子設(shè)備和系統(tǒng)中。它具有兩個工作狀態(tài):穩(wěn)定狀態(tài)和暫態(tài)狀態(tài)。 單穩(wěn)態(tài)觸發(fā)器的工作原理 單穩(wěn)態(tài)觸發(fā)器是一種具有兩個穩(wěn)定狀態(tài)的觸發(fā)器,其中一狀態(tài)是穩(wěn)定狀態(tài)
    的頭像 發(fā)表于 08-22 10:11 ?1159次閱讀

    具有兩個獨立PLL、八路輸出、集成EEPROM的LMK03328超低抖動時鐘發(fā)生器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有兩個獨立PLL、八路輸出、集成EEPROM的LMK03328超低抖動時鐘發(fā)生器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-21 09:14 ?0次下載
    具有<b class='flag-5'>兩個</b>獨立PLL、八路輸出、集成EEPROM的LMK03328超低抖動時鐘<b class='flag-5'>發(fā)生</b>器數(shù)據(jù)表

    觸發(fā)器的兩個穩(wěn)定狀態(tài)分別是什么

    觸發(fā)器作為數(shù)字電路中的基本邏輯單元,具有兩個穩(wěn)定狀態(tài),這兩個狀態(tài)通常用于表示二進制數(shù)碼中的0和1。
    的頭像 發(fā)表于 08-12 11:01 ?3064次閱讀

    雙穩(wěn)態(tài)電路的兩個穩(wěn)定狀態(tài)是什么

    雙穩(wěn)態(tài)電路是一種具有兩個穩(wěn)定狀態(tài)的電子電路,廣泛應(yīng)用于數(shù)字電路、通信系統(tǒng)、存儲器等領(lǐng)域。 雙穩(wěn)態(tài)電路的基本概念 雙穩(wěn)態(tài)電路是一種具有兩個穩(wěn)定狀態(tài)的電路,即在沒有外部輸入信號的情況下,電路可以保持在
    的頭像 發(fā)表于 08-11 15:00 ?2630次閱讀

    雙穩(wěn)態(tài)觸發(fā)器的兩個基本性質(zhì)是什么

    的定義 雙穩(wěn)態(tài)觸發(fā)器是一種具有兩個穩(wěn)定狀態(tài)的邏輯電路,通常由兩個交叉耦合的反相器或門電路構(gòu)成。在沒有外部輸入信號的情況下,雙穩(wěn)態(tài)觸發(fā)器可以保持在兩個穩(wěn)定狀態(tài)之一,即“0”狀態(tài)或“1”狀
    的頭像 發(fā)表于 08-11 10:08 ?1383次閱讀