日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信号 09 | 信号概念

發布時間:2023/11/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信号 09 | 信号概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

信號的概念

信號在我們的生活隨處可見,如:古代戰爭中摔杯為號;代戰爭中的信號彈;體育比賽中使用的信號槍,它們都有共性:1. 簡單 2. 不能攜帶大量的信息 3. 滿足某個特定條件才發送

信號是信息的載體,Linux/UNIX環境下,古老、經典的通信方式,現在依然是主要的通信手段。

UNIX早期版本就提供了信號機制,但不可靠,信號可能丟失,Bakeley和AT&T都對信號模型做了更改,增加了可靠信號機制。但彼此不兼容。POSIX.1對可靠信號例程進行了標準化。

?

信號的機制

A給B發送了信號,B收到信號之前執行自己的代碼,收到信號后,不管執行到程序的什么位置,都要暫停運行,去處理信號,處理完畢再繼續執行,與硬件中斷類似——異步模式,但信號是軟件層面上實現的中斷,早期常被稱“軟中斷”。

信號的特征:由于信號是通過軟件方法是是實現,其實現手段導致信號有很強的延時性。但對于用戶來說,這個延遲時間非常短,不易察覺。

注意:每個進程收到的所有信號,都是由于內核負責發送的,內核處理。

?

與信號相關的事件與狀態

產生信號:

  • 按鍵產生:如Ctrl + c、Ctrl + z, Ctrl + \
  • 系統調用產生:如kill、raise、alarm
  • 硬件異常產生:如非法訪問內存(段錯誤)、除0(浮點數除外)、內存對齊錯誤(總線錯誤)

遞達:遞送并且到達進程

未決:產生和遞達之間的狀態。主要由于阻塞(屏蔽)導致該狀態。

信號的處理方式:

  • 執行默認動作:默認操作統通常是終止進程,這取決于被發送的信號
  • 忽略(丟棄):不采取任何操作、有兩個信號不能忽略:SIGKILL和SIGSTOP
  • 捕捉(調用用戶處理函數):內核中斷正在執行的代碼,轉去執行先前注冊過的處理程序

linux內核的進程控制塊PCB是一個結構體,task_struct,除了包含進程ID、狀態、工作目錄、用戶ID、組ID、文件描述符、還包含了信號相關的信息,主要指阻塞信號集和未決信號集。

阻塞信號集:將某些信號加入集和,對它們設置屏蔽屏蔽,當屏蔽x信號后,在收到該信號,該信號的處理退后(解除屏蔽后)

未決信號集

  • 信號產生,未決信號集中描述該信號的位立即翻轉為1, 表信號處于未決轉態。當信號被處理翻轉回為0,這一時刻往往非常短暫。
  • 信號的產生后由于默寫原因(主要指阻塞)不能抵達,這類信號的集合稱之為未決信號集。在屏蔽解除前,信號一直處于未決狀態。

?

?

總結

以上是生活随笔為你收集整理的信号 09 | 信号概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。