linux中斷底半部機制
中斷處理程式
----中斷處理程式ISR是在中斷髮生時被呼叫時用來處理中斷的函式,在中斷執行期間,不能
----執行有可能引起睡眠測操作,不能同使用者空間交換資料,不能呼叫schedule函式,實現
----中斷處理有一個原則,就是儘可能快處理並返回地,但是多數中斷產生時要進行大量的
----耗時處理,為了使中斷處理儘可能短並完成後續大量工作,linux引入了一種底半部機制,
----分為頂半部(top half)和底半部(buttomhalf)。
底半部機制
----Tasklet
----工作佇列
Tasklet和下半部處理
----tasklet將任務延遲到安全時間執行,每個tasklet都和一個函式相關聯,當tasklet執行時,
----該函式就被呼叫,並且tasklet可以排程自己。
Tasklet的實現
----定義一個處理函式:
----void tasklet_func(unsigned long);
----定義一個tasklet結構my_tasklet與tasklet_func(data)函式關聯
----struct tasklet_struct my_tasklet;
----DECLARE_TASKLET(my_tasklet,tasklet_func,data);
----排程tasklet
----tasklet_schedule(&my_tasklet);
工作佇列和下半部處理
----工作佇列使用方法和tasklet非常相似
----定義一個工作佇列:
----struct work_struct my_wq;
----定義一個處理函式
----void my_wq_func(struct work_struct *work);
----初始化工作佇列並將其處理函式繫結
----INIT_WORK(&my_wq,my_wq_func);
----排程工作佇列執行
----schedule_work(&my_wq);
Tasklet和工作佇列的區別
----tasklet工作在中斷上下文
----工作佇列工作在程式上下文
----tasklet處理函式中不能睡眠
----工作佇列中允許有睡眠
相關文章
- 中斷下半部機制 - 軟中斷及tasklet
- 中斷下半部的三種機制
- Linux中斷機制分析Linux
- 聊聊中斷機制~
- Java中斷機制Java
- liteos 中斷機制(四)
- 人腦的「中斷機制」
- 詳細分析Java中斷機制Java
- Java 底層機制Java
- OS筆記(中斷/異常機制)筆記
- 中斷機制和中斷描述符表、中斷和異常的處理
- Java多執行緒17:中斷機制Java執行緒
- 零頁面機制在缺頁中斷中的作用
- 深入分析Java執行緒中斷機制Java執行緒
- Linux中的保護機制Linux
- 徹底理解 Dart mixin 機制Dart
- Linux中的許可權機制Linux
- slub機制徹底圖解分析圖解
- assertj斷言機制記錄
- Linux中的冷熱頁機制概述Linux
- php底層原理之垃圾回收機制PHP
- 併發機制的底層實現
- 徹底剖析JVM類載入機制JVM
- 徹底搞懂HTTPS的加密機制HTTP加密
- javascript事件機制底層實現原理JavaScript事件
- LINUX中斷--申請中斷和解除安裝中斷Linux
- uni-app中websocket的使用 斷開重連、心跳機制APPWeb
- 細說計算機底層整型編碼機制計算機
- JavaScript 閉包的底層執行機制JavaScript
- PHP底層的執行機制與原理PHP
- JavaScript閉包的底層執行機制JavaScript
- PHP 底層的執行機制與原理PHP
- Linux OOM 機制LinuxOOM
- Linux安全機制Linux
- http系列--徹底理解瀏覽器的快取機制(http快取機制)HTTP瀏覽器快取
- Java 併發機制底層實現 —— volatile 原理、synchronize 鎖優化機制Java優化
- Linux堆記憶體管理深入分析(下半部)Linux記憶體
- 徹底理解安卓應用無響應機制安卓