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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

信号的产生和状态

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

信號的產生:1.按鍵產生,如:Ctrl+c(內核向進程發送信號,殺死該進程)、Ctrl+z、Ctrl+\;2.系統調用產生,如:kill、raise、abort;3.軟件條件產生,如:定時器alarm;4.硬件異常產生,如:非法訪問內存(段錯誤)、除0(浮點數例外)、內存對齊出錯(總線錯誤);5.命令產生,如:kill命令。

遞達:遞送并且到達進程。

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

信號的處理方式(內核處理):1.執行默認動作;2.忽略(丟棄);3.捕捉(掉用戶處理函數)。

阻塞信號集(信號屏蔽字)與未決信號集:

Linux內核的進程控制塊PCB是一個結構體,task_struct, 除了包含進程id,狀態,工作目錄,用戶id,組id,文件描述符表,還包含了信號相關的信息,主要指阻塞信號集和未決信號集。未決信號集和阻塞信號集(信號屏蔽字),它們都是一個集合(set,即不重復但是無序)。集合(set)里存儲的是數字(信號編號,從1開始),對應的0表示假,1表示真。即在阻塞信號集中,0表示未阻塞,1表示阻塞。

阻塞信號集(信號屏蔽字):將某些信號加入集合,對他們設置屏蔽,當屏蔽信號后,再收到該信號,該信號的處理將推后(解除屏蔽后)。

未決信號集:1. 信號產生,未決信號集中描述該信號的位立刻翻轉為1,表信號處于未決狀態。當信號被處理對應位翻轉回為0。這一時刻往往非常短暫; 2. 信號產生后由于某些原因(主要是阻塞)不能抵達。這類信號的集合稱之為未決信號集。在屏蔽解除前,信號一直處于未決狀態。?? 因此阻塞信號集影響著未決信號集。

信號屏蔽字(阻塞信號集)和未決信號集本質就是一個寄存器,在64位操作系統中,它們都是64位的寄存器(字長64位),寄存器中每一位代表了每一個信號的狀態,1為真,0為假。例如在未決信號集中,0表示該位表示的信號未產生或者已經產生且遞達(此時0到1到0是瞬間發生的);而1表示已經產生但是未抵達,這是由阻塞信號集對其產生的影響。

信號的編號:可以使用kill –l命令查看當前系統可使用的信號有哪些。

不存在編號為0的信號。其中1-31號信號稱之為常規信號(也叫普通信號或標準信號),34-64稱之為實時信號,驅動編程與硬件相關(嵌入式開發用到)。名字上區別不大。而前32個名字各不相同。

總結:產生信號(5種,此時未決信號集中相應的序號對應立即變為1)? 阻塞? ?解除阻塞? ?遞達?? 處理:1.默認處理動作(5種)? 2.忽略處理? 3.捕捉

總結

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

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