/**: 程序排程模擬程式 &
* 本程式來自一位網友,她寫了大部分**,可是錯誤太多,
*漏洞百出,不盡人意,下面是我修改後的。希望用到的人可以多多參考,
* 看了的人給些意見!
*/#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...