當前位置:首頁 » 操作系統 » linux線程優先順序

linux線程優先順序

發布時間: 2022-04-22 15:49:19

linux c如何調整線程優先順序

你好。
在分時系統里應該沒什必要吧
setpriority/getpriority,這兩個函數描述的是改變進程優先順序。
但是在linux中線程就是一個輕量級的進程,
所以這兩個函數是可以作用於單獨的線程的
如果我的回答沒能幫助您,請繼續追問。

㈡ 是指實時線程,Linux分配1-99為實時線程,是1為最高優先順序還是99為最高

1是實時進程優先順序最高的,99是實時進程優先順序最低的,數字越小,優先順序越高
你在做operating system的實驗?

㈢ linux 怎麼查看線程優先順序

你好。 在分時系統里應該沒什必要吧 setpriority/getpriority,這兩個函數描述的是改變進程優先順序。 但是在linux中線程就是一個輕量級的進程, 所以這兩個函數是可以作用於單獨的線程的 如果我的回答沒能幫助您,請繼續追問。

㈣ 在Linux下怎麼修改當前線程的優先順序

注意:盡量不要修改系統默認優先順序

Thread類與線程優先順序相關的屬性和方法:

MAX_PRIORITY : 線程可以具有最高優先順序
MIN_PRIORITY : 線程可以具有的最低優先順序
NORM_PRIORITY : 分配給線程的默認優先順序
getPriority() : 獲得線程的優先順序
setPriority() : 修改線程的優先順序

java">importjava.util.Scanner;

{

publicstaticThread[]getThreads(){
ThreadGroupgroup=Thread.currentThread().getThreadGroup();
Thread[]threads=newThread[group.activeCount()];
group.enumerate(threads);
System.out.println("線程ID "+"線程名稱 "+"線程優先順序");
for(Threadthread:threads){
System.out.println(thread.getId()+" "+thread.getName()+" "+thread.getPriority());;

}
returnthreads;

}
publicstaticStringinput(){
Scannersc=newScanner(System.in);
Stringstr=sc.nextLine();
returnstr;
}

(Thread[]threads){
System.out.println("請輸入您要修改的線程的ID");
inti=Integer.parseInt(input());
intcount=-1;
for(Threadthread:threads){
if(thread.getId()==i){
System.out.println("請輸入您要修改成的優先順序別:");
intpriroty=Integer.parseInt(input());
thread.setPriority(priroty);
break;
}else{
count++;
}
}
if(count==threads.length-1){
System.out.println("找不到您要的線程");
}
getThreads();

}
publicstaticvoidmain(String[]args){
modifyPriority(getThreads());
}
}

㈤ linux系統中,程序有若干個優先順序,最低的優先順序是什麼

linux系統中,程序有若干個優先順序,最低的優先順序是19。

Linux為一套免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年第一次釋出,它主要受到Minix和Unix思想的啟發,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體

(5)linux線程優先順序擴展閱讀:

普通用戶只能在0~19之間調整應用程序的優先權值,只有超級用戶有權調整更高的優先權值(從-20~19)。linux系統屬於這種數值越小優先順序越高,數值越大優先順序越低的系統。windows屬於那種優先數值大的優先順序高的系統。

在linux系統中,使用ifconfig命令給網口配置ip,系統會自動生成這個網卡的相關路由信息,可以使用命令route –n查看系統所有的路由信息,參數-n是不進行地址解析,如果不添加-n選項,route命令會根據/etc/resolv文件中配置的DNS伺服器進行地址解析。

㈥ linux操作系統設置優先順序的問題

linux下調整進程優先順序
進程的優先順序決定了進程是否優先被cpu分配資源進行處理。
在cpu資源十分充足時,每個正在運行的進程都能分配到足夠的資源進行處理,此時調整進程的優先順序是沒有什麼意義的;
如果cpu資源緊張時,top查看cpu使用達到90%以上時,優先順序高的進程將被優先分配資源去執行。
如果此時手頭有一個非常緊要的任務要執行,比如傳輸一個非常重要的數據或是准備給客戶發一封非常緊急的郵件,
你希望這些任務優先地被執行完成,那麼就需要調整這些任務的優先順序了。
優先順序的值=優先系數+nice值
優先系數由系統內核決定,不可更改
nice值可以手動更改,范圍是
-20~19
優先順序的值越低,優先順序越高;優先順序的值越高,優先順序越低。
所以想調整成最高優先順序的話,就將nice值設為-20;想調整成最低優先順序的話,將nice值設為19。
調整優先順序:
1、任務未運行前進行調整
#
nice
-n-20
sh
/xxx/xxx.sh
--以最高優先順序運行xxx.sh這個腳本
#
nice
-n19
sh
/xxx/xxx.sh
--以最低優先順序運行xxx.sh這個腳本
2、任務已經開始運行的情況下調整

#
top
--查看系統當前進程運行情況
>
r
--鍵入小r
>
PID
to
renice:
--提示輸入運行的進程的pid
>
Renice
PID
23302
to
value:
--把這個進程的nice值設置為多少,根據需要進行調整

#
renice
-20
PID
將進程的nice值改為-20
#
renice
19
PID
將進程的nice值改為19
轉載紅黑聯盟:linux下調整進程優先順序

㈦ 有哪種系統是進程優先順序數值大的優先順序高的 linux系統進程優先順序最高優先順序是-20,最低優先順序是19嗎

linux系統的優先順序數確實是這樣的。需要注意的是普通用戶只能在0~19之間調整應用程序的優先權值,只有超級用戶有權調整更高的優先權值(從-20~19)。

linux系統屬於這種數值越小優先順序越高,數值越大優先順序越低的系統。windows屬於那種優先數值大的優先順序高的系統。windows是優先數值大的優先順序高的系統。這個優先順序只對可以搶占的系統有效的。

(7)linux線程優先順序擴展閱讀:

進程是有優先順序的。如果即將被運行的進程的優先順序比正在運行的進程的優先順序高,則系統可以強行剝奪正在運行的進程的CPU,讓優先順序高的進程先運行。

由於具有降低優先順序的任務長時間佔用共享資源,造成申請該資源的優先順序最高的進程始終處於等待狀態,此時其他比佔用資源優先順序高但比等待資源進程優先順序低的進程將獲得處理器的使用權,並先於優先順序最高的處於等待狀態的進程先結束,稱這種現象為優先順序反轉。

㈧ 如何在linux/unix中設置線程的優先順序

我們使用int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
來創建線程,但是如何設置線程的優先順序呢?
在討論這個問題的時候,我們先要確定當前線程使用的調度策略,posix提供了
int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);函數來獲取所
使用的調度策略,它們是:SCHED_FIFO, SCHED_RR 和 SCHED_OTHER。
我們可以使用
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
來獲取線程線程可是設置的最大和最小的優先順序值,如果調用成功就返回最大和最小的優先順序值,否則返回-1。
從我現在運行的linux系統中,我使用下列程序(程序見附錄)獲取了對應三種調度策略中的最大和最小優先順序:
policy = SCHED_OTHER
Show current configuration of priority
max_priority = 0
min_priority = 0
Show SCHED_FIFO of priority
max_priority = 99
min_priority = 1
Show SCHED_RR of priority
max_priority = 99
min_priority = 1
Show priority of current thread
priority = 0
Set thread policy
Set SCHED_FIFO policy
policy = SCHED_FIFO
Set SCHED_RR policy
policy = SCHED_RR
Restore current policy
policy = SCHED_OTHER
我們可以看到
SCHED_OTHER是不支持優先順序使用的,而SCHED_FIFO和SCHED_RR支持優先順序的使用,他們分別為1和99,數值越大優先順序越高。 從上面的結果我們可以看出,如果程序控制線程的優先順序,一般是用pthread_attr_getschedpolicy來獲取系統使用的調度策略,如果是SCHED_OTHER的話,表明當前策略不支持線程優先順序的使用,否則可以。當然所設定的優先順序范圍必須在最大和最小值之間。我們可以通過sched_get_priority_max和sched_get_priority_min來獲取。
可能網友會問,是否我們可以通過int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);來設定自己所需的調度策略呢?我覺得是完全可以的(有些系統需要定義_POSIX_THREAD_PRIORITY_SCHEDULING),只要系統實現了對應的調用策略。
說了半天,我們還沒有說,在系統允許使用線程優先順序別的時候,如何設置優先順序別呢?
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);
上面兩個函數分別用於設置線程的優先順序,struct sched_param的定義如下
struct sched_param
{
int __sched_priority; //所要設定的線程優先順序
};
例:創建優先順序為10的線程
pthread_attr_t attr;
struct sched_param param;
pthread_attr_init(&attr);
pthread_attr_setschedpolicy(&attr, SCHED_RR);
param.sched_priority = 10;
pthread_attr_setschedparam(&attr, ¶m);
pthread_create(xxx , &attr , xxx , xxx);
pthread_attr_destroy(&attr);

附:使用的測試程序:
#include <iostream>
#include <pthread.h>
#include <sched.h>
#include <assert.h>
using namespace std;
static int get_thread_policy( pthread_attr_t &attr )
{
int policy;
int rs = pthread_attr_getschedpolicy( &attr, &policy );
assert( rs == 0 );
switch ( policy )
{
case SCHED_FIFO:
cout << "policy = SCHED_FIFO" << endl;
break;
case SCHED_RR:
cout << "policy = SCHED_RR" << endl;
break;
case SCHED_OTHER:
cout << "policy = SCHED_OTHER" << endl;
break;
default:
cout << "policy = UNKNOWN" << endl;
break;
}
return policy;
}
static void show_thread_priority( pthread_attr_t &attr, int policy )
{
int priority = sched_get_priority_max( policy );
assert( priority != -1 );
cout << "max_priority = " << priority << endl;
priority = sched_get_priority_min( policy );
assert( priority != -1 );
cout << "min_priority = " << priority << endl;
}
static int get_thread_priority( pthread_attr_t &attr )
{
struct sched_param param;
int rs = pthread_attr_getschedparam( &attr, ¶m );
assert( rs == 0 );
cout << "priority = " << param.__sched_priority << endl;
return param.__sched_priority;
}
static void set_thread_policy( pthread_attr_t &attr, int policy )
{
int rs = pthread_attr_setschedpolicy( &attr, policy );
assert( rs == 0 );
get_thread_policy( attr );
}
int main( void )
{
pthread_attr_t attr;
struct sched_param sched;
int rs;
rs = pthread_attr_init( &attr );
assert( rs == 0 );
int policy = get_thread_policy( attr );
cout << "Show current configuration of priority" << endl;
show_thread_priority( attr, policy );
cout << "Show SCHED_FIFO of priority" << endl;
show_thread_priority( attr, SCHED_FIFO );
cout << "Show SCHED_RR of priority" << endl;
show_thread_priority( attr, SCHED_RR );
cout << "Show priority of current thread" << endl;
int priority = get_thread_priority( attr );
cout << "Set thread policy" << endl;
cout << "Set SCHED_FIFO policy" << endl;
set_thread_policy( attr, SCHED_FIFO );
cout << "Set SCHED_RR policy" << endl;
set_thread_policy( attr, SCHED_RR );
cout << "Restore current policy" << endl;
set_thread_policy( attr, policy );

rs = pthread_attr_destroy( &attr );
assert( rs == 0 );
return 0;
}

編譯命令:
#g++ pthread_priority3.c -o pthread_priority3 -lpthread

㈨ linux應用與內核通信有幾種方式linux有幾種調度方式linux有多少任務優先順序

通信方式主要有:文件加共享內存,管道,SOCKET。一般都用SOCKET,可移植性強。
調度方式:時間片,優先順序,還有就是時間片加優先順序混合,默認是第三種。
線程優先順序是1~99,值越大優先順序越高。

㈩ linux內核線程怎麼設置優先順序

Linux內核的三種調度策略:
1,SCHED_OTHER
分時調度策略,
2,SCHED_FIFO實時調度策略,先到先服務。一旦佔用cpu則一直運行。一直運行直到有更高優先順序任務到達或自己放棄
3,SCHED_RR實時調度策略,時間片輪轉。當進程的時間片用完,系統將重新分配時間片,並置於就緒隊列尾。放在隊列尾保證了所有具有相同優先順序的RR任務的調度公平
Linux線程優先順序設置
首先,可以通過以下兩個函數來獲得線程可以設置的最高和最低優先順序,函數中的策略即上述三種策略的宏定義:
int
sched_get_priority_max(int
policy);
int
sched_get_priority_min(int
policy);
SCHED_OTHER是不支持優先順序使用的,而SCHED_FIFO和SCHED_RR支持優先順序的使用,他們分別為1和99,數值越大優先順序越高。
設置和獲取優先順序通過以下兩個函數:
int
pthread_attr_setschedparam(pthread_attr_t
*attr,
const
struct
sched_param
*param);
int
pthread_attr_getschedparam(const
pthread_attr_t
*attr,
struct
sched_param
*param);
例如以下代碼創建了一個優先順序為10的線程:
struct
sched_param
{
int
__sched_priority;
//所要設定的線程優先順序
};
例:創建優先順序為10的線程
pthread_attr_t
attr;
struct
sched_param
param;
pthread_attr_init(&attr);
pthread_attr_setschedpolicy(&attr,
SCHED_RR);
param.sched_priority
=
10;
pthread_attr_setschedparam(&attr,
¶m);
pthread_create(xxx
,
&attr
,
xxx
,
xxx);
pthread_attr_destroy(&attr);

熱點內容
mac訪問windows共享 發布:2024-10-01 23:31:58 瀏覽:641
java培訓要學什麼 發布:2024-10-01 23:15:54 瀏覽:536
c語言編程學習寶典 發布:2024-10-01 22:35:08 瀏覽:343
無法打開腳本文件 發布:2024-10-01 22:14:51 瀏覽:107
javaxml格式字元串格式 發布:2024-10-01 21:54:03 瀏覽:653
為什麼安卓玩游戲都選驍龍 發布:2024-10-01 21:48:07 瀏覽:375
如何避免伺服器暴露ip 發布:2024-10-01 21:38:24 瀏覽:219
pythonrequestjson 發布:2024-10-01 21:37:37 瀏覽:855
珠海java 發布:2024-10-01 21:07:29 瀏覽:822
伺服器剩餘維護是什麼 發布:2024-10-01 21:03:46 瀏覽:545