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

2021-05-28 17:28:24 字數 1729 閱讀 5315

在程序中實現優先順序演算法可以使用最小堆排列來實現。

一般在優先順序排程演算法中要實現的操作

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依次執行 程...