在程序中實現優先順序演算法可以使用最小堆排列來實現。
一般在優先順序排程演算法中要實現的操作
1.從後備作業佇列中選擇乙個優先順序最高的作業將他們調入記憶體,分配必要的資源。此處的優先順序越高關鍵字越小
2.建立程序並且放入到後備作業佇列中
3,。改變乙個程序的優先順序重新排列後備作業佇列的順序
此處的c語言實現僅僅使用乙個陣列代表關鍵字,
若再真實的作業系統中,真可以使用結構體陣列來代替示例中的簡單陣列。
struct process
process
#include#define heap_size 5//定義堆的大小,記住此時的大小不包含堆陣列的0號元素,0號元素儲存的是 堆的大小;
//***************=min_heapify***************===
/*此函式的作用是使以i為根的堆成為最小堆;
*/ void min_heapify(int *array,int i)
//**********=== heap_extract_min**********===
/*此函式是返回最小堆的最小的關鍵字
*/int heap_extract_min(int*array)
//**********= heap_prior_increase***************
/*此函式的作用是增加堆中某個元素的優先值,優先順序高的關鍵字小;
*/void heap_prior_increase(int*array,int i,int key)
array[i]=key;
while(i>1&&array[i/2]>array[i])
}//**********= min_heap_insert********************=
/*此函式的作用是插入元素;
*/void min_heap_insert(int*array,int key)
int main();//此處的第乙個元素是堆的大小;
build_min_heap(heap_array);
heap_prior_increase(heap_array,3,3);
printf("\nheap_array:");
for(int i=0;i<6;i++)
printf(" %d ",heap_array[i]);
min_heap_insert(heap_array,6);
printf("\nheap_array:");
for(int i=0;i<6;i++)
printf(" %d ",heap_array[i]);
min_heap_insert(heap_array,2);
printf("\nheap_array:");
for(int i=0;i<6;i++)
printf(" %d ",heap_array[i]);
test=heap_extract_min(heap_array);
printf("\nheap_extract_min=%d \n",test) ;
printf("\n ^_^welcome to wuhan university^_^\n\n");
getchar();
}
短程序優先 SPF 排程演算法 C語言實現
include include define num 20 0 2 3 54 4 6 58 2 1 1 不包含同時到達情況 必須排除位置資訊!void print int a,int j int arr fin,arr turn,min w,min m 0,print f double arr ri...
SRTF最短剩餘時間優先排程C語言實現
什麼是srtf?srtf shortest remaining time first 實現思想 當新程序進入就緒佇列時,如果它需要處理的時間比當前程序處理時間短,則將當前程序掛起,把cpu分配給新程序。srtf就是sjf的搶占式版本。include include typedef struct pc...
程序排程 先來先服務和短程序優先排程演算法
系統中有5個程序p1,p2,p3,p4,p5如下。規定程序的優先數越小優先順序越高。試描述在採用先來先服務排程 短程序優先排程演算法時,各個程序的執行過程,並計算這5個程序的平均周轉時間。假設忽略程序的排程時間。答 先來先服務排程演算法執行過程如下 按到達先後p1,p2,p3,p4,p5依次執行 程...