Linux執行緒優先順序對排程影響

2021-10-09 07:09:45 字數 927 閱讀 2606

首先,linux是乙個時分作業系統,普通執行緒每次被排程獲得執行的最長時間是確定的,即乙個tick,通過核心 config_hz可配置。在tick中斷時會發生,核心會觸發執行緒排程;同時,當前正在執行的執行緒主動讓出cpu時,也會觸發排程。除此之外,其它中斷、系統呼叫等也能觸發執行緒排程。

linux執行緒優先順序的範圍是 0 ~ 139,值越小,優先順序越高。user space 執行緒優先順序的範圍是 100 ~ 139,預設建立的執行緒優先順序是120,對應的nice值是0,nice值的範圍是 -20 ~ 19,對應的優先順序是 100 ~ 139。只有核心執行緒才支援低於100的優先順序,優先順序低於100的執行緒稱為rt級執行緒。

在user space中,可以設定執行緒的nice值,nice值越小,該執行緒通過排程獲得執行的機會越大。但不是說nice值小的執行緒占有cpu直到執行完畢,nice值大的執行緒才能獲取cpu。比如:2個相同執行體,不同nice值的執行緒,每個執行緒執行時間為5個tick,兩線程同時啟動,在每次tick中斷發生時,核心排程nice值小的執行緒的概率是3/4, nice值大的執行緒的概率是1/4,這樣,nice值小的執行緒會早於nice值大的執行緒執行完畢,但在nice值小的執行緒執行完畢時,nice值大的執行緒也肯定獲得過執行,比如1個tick。而不會像rtos那樣,高優先順序的執行緒執行完畢前,低優先順序的執行緒是得不到cpu執行的。

在核心中,可以設定某個執行緒為rt級,即優先順序值低於100,同時必須設定該執行緒相應的排程策略(sched_fifo或sched_rr )。rt級執行緒能最大限度地優先獲得cpu,並且優先順序高的執行緒一定優先被排程。但是,對於整個系統,所有rt級執行緒對cpu占用有個限制,即不能在 sched_rt_period_us 時間內連續占用超過 sched_rt_runtime_us。(這兩個值位於/proc/sys/kernel/sched_rt_period_us 和 /proc/sys/kernel/sched_rt_runtime_us),超過了,核心就是排程普通執行緒。

WinCE設定執行緒優先順序影響

工業通訊軟體如canopen和ethercat一般都需要系統提供乙個精準的timer。前一段時間 時間在arm 平台的wince上面實現精準度為250us 和500us 的timer。主要是利用硬體上面的乙個定時器來實現計時功能。然後用驅動再實現乙個可以提供250us或500us倍數的timer。基...

linux 執行緒優先順序

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

linux執行緒優先順序

建立執行緒的順序 other rr low pri fifo low pri rr high pri fifo high pri rr low pri 可以搶占 other fifo low pri 可以搶占 rr low pri rr high pri 可以搶占 fifo low pri fifo...