#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 都無一例外地配置了程序排程。此外它也是對系統效能影響最大的一種處理機排程。程序排程的任務 儲存處理機的現場資訊。在進行排程時首先需要儲存當前程序的處理機的現場資訊,如程式計數器 多個通用暫存器中的...