Presentation is loading. Please wait.

Presentation is loading. Please wait.

作業系統實習課(二) -Scheduler-Related System Calls-

Similar presentations


Presentation on theme: "作業系統實習課(二) -Scheduler-Related System Calls-"— Presentation transcript:

1 作業系統實習課(二) -Scheduler-Related System Calls-
2015/04/14

2 Initializing Priority and
Scheduling Policy Fields

3

4 Header 及 Macro 是Unix Standard的縮寫。Real-time applications系統定義符號常數的標頭檔,包含open、read、write、exit、getpid等函數的原型。 此標頭檔內定義下列的常數,用來決定最佳的預設priority:SCHED_PRIO_USER_MIN SCHED_PRIO_USER_MAX SCHED_PRIO_SYSTEM_MIN SCHED_PRIO_SYSTEM_MAX SCHED_PRIO_RT_MIN SCHED_PRIO_RT_MAX Macro(巨集),根據一系列預定義的規則替換一定的文字模式,編譯器在遇到巨集時會自動進行這一模式替換。

5 sched_get_priority_max() 及 sched_get_priority_min()
在sched.h裡定義 int sched_get_priority_max(int policy); int sched_get_priority_min(int policy); 支援的policy 包含SCHED_FIFO,SCHED_RR,及 SCHED_OTHER...等。 只有在系統遇到不認識policy時,回傳-1並送errno給 EINVAL。

6 sched_getscheduler()及sched_getparam()
在sched.h裡定義 int sched_getscheduler(pid_t pid); int sched_getparam(pid_t pid, struct sched_param *param); 用來取得realtime processes 的 scheduling policy 和 priority的 函數。 User使用時不需要特殊權限。 如果每個function的PID都為0,則回傳值為calling process的 scheduling policy 或 priority。 sched_getparam() 回傳值為0,表示成功;失敗則回傳-1。

7 sched_setscheduler()
在sched.h裡定義 int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); 用來設置process的scheduling policy和priority。 User使用時需要superuser的權限。 sched_setscheduler () 回傳值為0,表示成功;失敗則回 傳-1。

8 sched_setparam() 在sched.h裡定義 int sched_setparam(pid_t pid, const struct sched_param *param); 用來建立新的priority。 User使用時需要superuser的權限。 sched_setparam() 回傳值為0,表示成功;失敗則回傳-1。

9 範例的參數變化

10 Cygwin vs Ubuntu Cygwin Ubuntu

11 問題 如果把範例程式中的SCHED_FIFO全部改成SCHED_RR,範 例參數變化圖裡讀取的參數中有哪些會改變?
範例程式中的pid的值有變動嗎?怎麼變的? sts這個變數是甚麼? 對於process的priority更改,sched_setscheduler()和 sched_setparam()是差在哪裡?


Download ppt "作業系統實習課(二) -Scheduler-Related System Calls-"

Similar presentations


Ads by Google