原文:為什么Linux不能在中斷中睡眠

中斷分析 首先來看中斷的流程: 如果條件滿足了 即:有中斷描述符,並成為調度器的調度單位,棧也不溢出了,理論上是可以做到中斷睡眠的 ,中斷是可以睡眠的,但會引起很多問題. 例如,你在時鍾中斷中睡眠了,那操作系統的時鍾就亂了,調度器也了失去依據 例如,你在一個IPI 處理器間中斷 中,其它CPU都在死循環等你答復,你卻睡眠了,那其它處理器也不工作了 例如,你在一個DMA中斷中睡眠了,上面的進程還在同 ...

2020-10-15 14:41 0 731 推薦指數:

查看詳情

中斷不能睡眠的原因

為什么interrupt context不能調用導致睡眠的kernel API呢?如果驅動這么做會導致什么樣的后果呢? 本文的實驗在X86 64bit + 標准4.4內核上完成。 看下一個中斷: #define DRIVER_DESC "context schedule ...

Fri Mar 03 19:47:00 CST 2017 0 1655
中斷里為什么不能睡眠

前幾天被人問到了“中斷里為什么不能睡眠”這個問題,之前我並沒有深究過這個問題。后來查了一下資料,基本上所有的論壇和博客都說:因為中斷沒有上下文,如果睡眠被切換出去之后就無法再切回來。我實在是不能認同這種說法,中斷確實沒有自己的上下文,但是中斷發生的時候它使用的是被中斷進程的上下文,如果真的讓中斷 ...

Thu Apr 30 06:22:00 CST 2020 0 765
linux進程睡眠的介紹

事件. 對於一個 Linux 驅動使一個進程睡眠是一個容易做的事情. 但是, 有幾個規則必須記住 以安全的方式編碼睡 ...

Sat Jul 06 18:29:00 CST 2019 0 943
linux一個進程如何睡眠

如果我們深入 <linux/wait.h>, 你見到在 wait_queue_head_t 類型后面的數據結構是非 常簡單的; 它包含一個自旋鎖和一個鏈表. 這個鏈表是一個等待隊列入口, 它被聲明做 wait_queue_t. 這個結構包含關於睡眠進程的信息和它想怎樣被喚醒 ...

Sat Jul 06 18:38:00 CST 2019 0 404
Linux進程的睡眠和喚醒

1 Linux進程的睡眠和喚醒 在Linux,僅等待CPU時間的進程稱為就緒進程,它們被放置在一個運行隊列,一個就緒進程的狀態標志位為TASK_RUNNING。一旦一個運行的進程時間片用完, Linux內核的調度器會剝奪這個進程對CPU的控制權,並且從運行隊列中選擇一個合適的進程 ...

Mon Jul 03 05:37:00 CST 2017 0 8824
linux系統中斷已連接的用戶

1、用w命令查看當前系統登錄的用戶 USER —登錄的用戶名TTY —登錄后系統分配的終端號FROM—遠程主機名,即從哪兒登錄來的LOGIN@—何時登錄IDLE—空閑了多長時間,表 ...

Wed Jun 22 03:19:00 CST 2016 0 1966
linux nvme 的中斷申請及處理

中斷的描述符如上所述。作為背景知識,可以理解下面的內容,本文討論基於的內核版本信息如下: 我們知道,nvme的多隊列,默認按照核數的多少來設置,目前nvme的隊列有兩種,admin隊列,IO隊列,兩者都屬於nvme_queue對象,submit queue ...

Tue Dec 19 18:43:00 CST 2017 0 1302
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM