程序排程模擬

2021-09-05 14:48:30 字數 1773 閱讀 4408

/**: 程序排程模擬程式 &

* 本程式來自一位網友,她寫了大部分**,可是錯誤太多,

*漏洞百出,不盡人意,下面是我修改後的。希望用到的人可以多多參考,

* 看了的人給些意見!

*/#include

#include

#include

#include

#include

#define true            1

#define false           0

#define ready           2  /* 程序就緒       */

#define end             4  /* 程序結束       */

typedef int status;

typedef struct pcbstru

ospcb;

typedef struct pcbqueuehead /* 程序佇列頭結構      */

queueheadnode;

void printresult(queueheadnode *pheadnode);

void attemperprocess(queueheadnode *pheadnode)

printresult(pheadnode); /* 列印當前程序佇列狀態 */

/* 如果所有的程序都執行完則退出 */

if (iendnum == pheadnode->pcbnumber) break; }

printf("/n按優先數排程執行完畢!/n"); }

void deletequeue(queueheadnode *pheadnode)

} void printresult(queueheadnode *pheadnode)

p = p->pnextpcb;

printf("/n"); }

}int main()

,,,,};

queueheadnode procheadnode;

queueheadnode *pheadnode= null;

ospcb *pnewpcbnode= null;

int i,j;

procheadnode.pcbnumber = 0;   /*程序佇列當前pcb總數為0*/

procheadnode.procequeuehead = null; /*程序佇列頭指標為空*/

pheadnode =&procheadnode;

for (i=4;i>=0;i--)

pnewpcbnode->jc_name =a[i][0];

pnewpcbnode->needtime =a[i][1];

pnewpcbnode->usedtime =a[i][2];

pnewpcbnode->youxian =a[i][3];

pnewpcbnode->jc_status =ready;

pnewpcbnode->pprevpcb = pnewpcbnode->pnextpcb = null;

/*入隊*/

ospcb *p;

if (pheadnode->procequeuehead == null)

else

procheadnode.pcbnumber++; }

/*排程*/

attemperprocess(&procheadnode);

deletequeue(&procheadnode);

getch();

return 0; }

程序排程模擬

實驗平台 windows 7,vs2010 實驗目標 模擬短作業優先演算法,時間片輪轉演算法,和優先數演算法,並動態畫出grant圖,計算每個程序的響應時間和周轉時間 資料結構 class process fin.close void sjf void void preemptive sjf int...

程序排程 模擬程序排程的過程

通過這次實驗,理解程序排程的過程,進一步掌握程序狀態的轉變 程序排程的策略,進一步體會多道程式併發執行的特點,並分析具體的排程演算法的特點,掌握對系統效能的評價方法。編寫程式模擬實現程序的輪轉法排程過程,模擬程式只對pcb進行相應的排程模擬操作,不需要實際程式。假設初始狀態為 有n個程序處於就緒狀態...

程序排程模擬演算法

1.先進先出排程。程序按申請進入記憶體的時間執行。2.優先順序排程。程序按作業系統分配的優先順序,執行。3.時間輪轉排程。程序按申請進入記憶體的時間依次執行乙個時間片。4.分級排程。時間輪轉排程 優先順序排程。先執行優先順序較高的按時間輪轉排程的方法執行,在執行優先順序較低的。a.設計程序控制塊pc...