SRTF最短剩餘時間優先排程C語言實現

2021-10-06 05:08:24 字數 1184 閱讀 8503

什麼是srtf?

srtf=shortest remaining time first

實現思想:當新程序進入就緒佇列時,如果它需要處理的時間比當前程序處理時間短,則將當前程序掛起,把cpu分配給新程序。

srtf就是sjf的搶占式版本。

#include

#include

typedef

struct pcb

*task, pcb;

pcb*

creattask

(int x,

int y,

int z)

void

deltask

(pcb* n,

int x)

d = n->next;

n->next = d->next;

free

(d);}}

void

count

(pcb* n,

int t)

p = p->next;

} p = n->next;

while

(p !=

null

) q->counttime--;if

(qp==

0||qp!=q->id)

printf

("當前執行的任務序號為 %d \n"

, q->id)

; qp = q->id;

if(time < q->arrivetime)

//防止時間暫停

time = q->arrivetime;

time++;if

(q->counttime==0)

}printf

("\n");

printf

("平均周轉時間為 %.2f \n"

, zt / temp)

;printf

("平均帶權周轉時間為 %.2f \n"

, dt / temp);}

intmain()

count

(head, n)

;}

srtf的特點:

優點:保證新的短作業一進入系統就能很快的到服務,平均等待時間短。

缺點:為保證程序斷點現場,統計程序剩餘時間增加了系統開銷,不利於長作業。

作業排程用得少,程序排程用得多。

用C語言寫的乙個最短作業優先排程演算法

include 定義乙個結構體 struct sjf 定義乙個結構體陣列 sjf a 100 定義乙個輸入函式 void input sjf p,int n 定義乙個輸出函式 void print sjf p,float arrivetime,float servicetime,float star...

c語言模擬短作業優先排程演算法和時間片轉輪排程演算法

陣列模擬短作業,隊咧模擬時間片轉輪,注釋很清楚,就不贅述 include include include include include include define r run 執行中 define f finish 已完成 define w waite 等待中 define t taken 未提...

程序的優先排程演算法的c語言實現

在程序中實現優先順序演算法可以使用最小堆排列來實現。一般在優先順序排程演算法中要實現的操作 1.從後備作業佇列中選擇乙個優先順序最高的作業將他們調入記憶體,分配必要的資源。此處的優先順序越高關鍵字越小 2.建立程序並且放入到後備作業佇列中 3,改變乙個程序的優先順序重新排列後備作業佇列的順序 此處的...