Linux的高優先順序workqueue

2021-10-04 19:32:52 字數 974 閱讀 2345

在專案中,有乙個時間關鍵的操作,而linux本身是分時型作業系統,雖然絕大部分情況可以滿足時間上的要求,但是,時間分布的離散性還是有點大。考慮引入linux real time 補丁,研究發現,即使引入這個補丁,依然無法到達rtos的水平,而且使用起來還比較複雜。後來閱讀workqueue**發現,專案使用的linux 3.18存在乙個highpri workqueue,決定試驗它的行為是否如它的名字所描述的那樣。

試驗**如下:

#define highpri_sched_work(w)		queue_work_on(work_cpu_unbound, system_highpri_wq, w)

struct work_struct work_n1, work_n2, work_h;

static void work_normal_1(struct work_struct *work)

} printk("%s exit", __function__);

}static void work_normal_2(struct work_struct *work)

} printk("%s exit\n", __function__);

}static void work_high(struct work_struct *work)

} printk("%s exit\n", __function__);

}struct hrtimer test_timer;

static enum hrtimer_restart test_timer_isr(struct hrtimer *timer)

測試**執行結果如下:

從這個log來看,highpri workqueue具有優先被執行的功能,可以進一步優化 linux 上時間關鍵性應用的效能。

Linux程序優先順序和調整優先順序

linux 是乙個多使用者 多工的作業系統,系統中通常執行著非常多的程序。但是 cpu 在乙個時鐘週期內只能運算一條指令 現在的 cpu 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...

負號的優先順序比 來的高

程式設計之美 求二進位制數中的1的個數 第二個補充習題 一開始 如下 include include int main printf flag d n flag 執行以後,發現結果不對,用printf輸出結果,來進行除錯。最後原因知道了,原來負號的優先順序比 來的大,然後搞定 include inc...

linux 執行緒優先順序

linux核心的三種排程方法 1,sched other 分時排程策略,2,sched fifo實時排程策略,先到先服務 3,sched rr實時排程策略,時間片輪轉 sched rr排程和sched fifo排程的程序屬於實時程序,以分時排程的程序是非實時程序。當實時程序準備就緒後,如果當前cpu...