作業系統實驗 程序排程(不可搶占式動態優先順序)

2021-10-02 08:37:10 字數 1875 閱讀 8787

#include

#include

#include

using

namespace std;

/*不可搶占式動態優先順序*/

/*若正在執行的程序時間片用完就轉為就緒狀態,占用一次cpu優先順序-1

就緒佇列中等待的佇列,每等待cpu執行完乙個時間片,優先順序+1*/

// 列舉程序的狀態:就緒、執行、阻塞、完成

enum state

;struct pcb

;pcb *finish,

*ready,

*run,

*tail;

//完成,就緒,執行佇列

int num;

//實際程序總數,小於10

int timeslice;

//時間片

void

input()

;//輸入

void

init()

;//初始化引數

void

output()

;//輸出

void

insert

(pcb *p)

;//根據優先順序將程序插入有序單向鍊錶佇列

voidin(

);//從就緒佇列選擇隊首程序執行

void

running()

;//程序排程

intmain()

void

input()

//輸入

else

*/insert

(p);}}

void

init()

//初始化引數

/* tail=ready;

p=tail->next;

while(p!=null)

*/}void

output()

//輸出

// if(temp==null)

// cout<<"執行完成!"temp=run;

cout<<"runing佇列"}

*/ temp=finish;

cout<<

"finish佇列"

(temp!=

null)}

void

insert

(pcb *p)

/* 建立對程序進行優先順序排列函式*/

else

/* 程序比較優先順序,插入適當的位置中*/

else

/* 插入程序優先數最低,則插入到隊尾*/}if

(flag ==0)

}}voidin(

)//從就緒佇列選擇隊首程序執行

run=ready;

run-

>state=run;

cout<<

"running: "

<>namename<<

setw(7

)<>time<<

setw(9

)<>priority

<<

setw(7

)<>rtime<<

setw(9

)<>state

>next;

run-

>next=

null;}

void

running()

//程序排程

else

insert

(run)

;// tail->next=run;

// tail=tail->next;

// sort();

}output()

;in()

;}}

作業系統程序排程實驗報告 linux搶占式排程

為什麼會發生排程?因為cpu是有限的,而作業系統上的程序很多,所以作業系統需要平衡各個程序的執行時間 比如說有的程序執行時間已經很長了,已經占用了cpu很長時間了,這個時候作業系統要公平 就會換下乙個需要執行的程序。舉個例子 公司只有乙個飲水機用來接水,有很多人排隊,某個人接完了一杯水,又接下一杯水...

0512 作業系統程序排程實驗

1.目的和要求 1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若優先順序...

作業系統 程序排程

程序排程程序排程室作業系統必不可少的一種排程。因此在三種型別的os dos windows linux 都無一例外地配置了程序排程。此外它也是對系統效能影響最大的一種處理機排程。程序排程的任務 儲存處理機的現場資訊。在進行排程時首先需要儲存當前程序的處理機的現場資訊,如程式計數器 多個通用暫存器中的...