91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 361KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: 其他
  • 標簽: 操作系統??

資源簡介

在OS中調度的實質是一種資源分配,因而調度算法是指:根據系統的資源分配策略所規定的資源分配算法。對于不同的操作系統和系統目標,通常采用不同的調度算法,例如,在批處理系統中,為了照顧為數眾多的短作業,應采用短作業優先的調度算法;又如在分時系統中,為了保證系統具有合理的響應時間,應采用輪轉法進行調度。目前存在的多種調度算法中,有的算法適用于作業調度,有的算法適用于進程調度;但也有些調度算法既可用于作業調度,也可用于進程調度[1] 。處理機調度常用的算法有:先來先服務算法,高響應比優先算法,時間片輪轉算法和短作業優先調度算法。本次課程設計就將模擬先來先服務,時間片輪轉,短作業優先,高響應比優先4種調度算法,并對他們的性能進行比較。

資源截圖

代碼片段和文件信息

#include
#include
#include
#define?N?10

/********先來先服務,短作業優先,高響應比算法進程控制塊定義***********/

typedef?struct?Proc_identity
{
char?name; //進程名
float?arrTime; //到達時間
float?finTime; //完成時間
float?serTime; //服務時間
float?waitTime;?//等待時間
float?prior; //優先權
float?rTime; //周轉時間
float?drTime; //帶權周轉時間
}Proc_identity*proc;


/******************時間片輪轉算法進程控制塊定義***********************/

typedef?struct?pcb
{
char?name[N];??????//進程名
int arrTime;???????//到達時間
int?runTime;???????//運行時間
char?state;????????//運行后的狀態
struct?pcb?*next;??//指向下一個PCB
}PCB;



/*************按到達時間的先后順序對進程排序(冒泡法)******************/


void?SortArrTime(struct?Proc_identity?pro[]int?n)
{
int?ij;
struct?Proc_identity?ptemp;
int?flag;
for(i?=?1;?i? {
flag?=?0;
for(j?=?0;?j? {
if(pro[j].arrTime?>?pro[j+1].arrTime)
{
ptemp?=?pro[j];
pro[j]?=?pro[j+1];
pro[j+1]?=?ptemp;
flag?=?1;
}
}
if(flag?==?0)
break;
}
}


/****************************先來先服務算法*****************************/



void?FCFS(struct?Proc_identity?pro[]int?n)
{
int?i;

//初始化第一個到達的進程

pro[0].finTime?=?pro[0].arrTime?+?pro[0].serTime;
pro[0].rTime?=?pro[0].finTime?-?pro[0].arrTime;
pro[0].drTime?=?pro[0].rTime?/?pro[0].serTime;

//處理后續進程

for(i?=?1;?i? {
if(pro[i].arrTime?<=?pro[i-1].finTime)?//判斷后一個進程到達時間是否在第一個未完成之前
{
pro[i].finTime?=?pro[i-1].finTime?+?pro[i].serTime;
pro[i].rTime?=?pro[i].finTime?-?pro[i].arrTime;
pro[i].drTime?=?pro[i].rTime?/?pro[i].serTime;
}
else
{
pro[i].finTime?=?pro[i].arrTime?+?pro[i].serTime;
pro[i].rTime?=?pro[i].finTime?-?pro[i].arrTime;
pro[i].drTime?=?pro[i].rTime?/?pro[i].serTime;
}
}
}


/**********************短作業優先算法**********************************/

void?SJF(struct?Proc_identity?pro[]int?n)?
{
int?ijk;

//初始化第一個到達的進程時間
pro[0].finTime?=?pro[0].arrTime?+?pro[0].serTime;

//處理剩下的進程的調度時間
for(i?=?1;?i? {
if(pro[i].arrTime?>?pro[i-1].finTime)//此時進程到達的時間都大于第一個進程的完成時間
{
pro[i].finTime?=?pro[i].arrTime?+?pro[i].serTime;
}
else
{
int?count?=?0;
for(j?=?i;?j? {
if(pro[j].arrTime?<=?pro[i-1].finTime)
count++;
}

struct?Proc_identity?MinJobProctemp;
MinJobProc.serTime?=?pro[i].serTime;//假設當前進程服務時間最短
int?x?=?i;//找出服務時間最短進程的下標

for(k?=?i+1;?k? {
if(MinJobProc.serTime?>?pro[k].serTime)
{
MinJobProc.serTime?=?pro[k].serTime;
x?=?k;
}
}
//將最短服務時間的進程賦給i
temp?=?pro[i];
pro[i]?=?pro[x];
pro[x]?=?temp;

pro[i].finTime?=?pro[i-1].finTime?+?pro[i].serTime;
}
}

for(i?=?0;?i? {
pro[i].rTime?=?pro[i].finTime?-?pro[i].arrTime;
pro[i].drTime?=?pro[i].rTime?/?pro[i].serTime;
}
}


/*************************高響應比算法******************************

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-06-29?10:41??新建文件夾\
?????目錄???????????0??2012-06-29?10:41??新建文件夾\CPU_Dispatcher\
?????文件????????4376??2012-06-15?17:36??新建文件夾\CPU_Dispatcher\CPU_Dispatcher.dsp
?????文件?????????553??2012-06-15?17:36??新建文件夾\CPU_Dispatcher\CPU_Dispatcher.dsw
?????文件???????50176??2012-06-20?13:11??新建文件夾\CPU_Dispatcher\CPU_Dispatcher.ncb
?????文件???????53760??2012-06-20?13:11??新建文件夾\CPU_Dispatcher\CPU_Dispatcher.opt
?????文件????????1354??2012-06-19?23:19??新建文件夾\CPU_Dispatcher\CPU_Dispatcher.plg
?????目錄???????????0??2012-06-29?10:41??新建文件夾\CPU_Dispatcher\Debug\
?????文件??????208997??2012-06-19?23:19??新建文件夾\CPU_Dispatcher\Debug\CPU_Dispatcher.exe
?????文件??????224420??2012-06-19?23:19??新建文件夾\CPU_Dispatcher\Debug\CPU_Dispatcher.ilk
?????文件??????226476??2012-06-17?17:26??新建文件夾\CPU_Dispatcher\Debug\CPU_Dispatcher.pch
?????文件??????484352??2012-06-19?23:19??新建文件夾\CPU_Dispatcher\Debug\CPU_Dispatcher.pdb
?????文件???????25883??2012-06-19?23:19??新建文件夾\CPU_Dispatcher\Debug\dispatcher.obj
?????文件???????41984??2012-06-20?12:51??新建文件夾\CPU_Dispatcher\Debug\vc60.idb
?????文件???????53248??2012-06-19?23:19??新建文件夾\CPU_Dispatcher\Debug\vc60.pdb
?????文件???????12419??2012-06-19?21:38??新建文件夾\CPU_Dispatcher\dispatcher.cpp
?????文件??????283648??2012-06-29?10:39??新建文件夾\操作系統課程設計.doc

評論

共有 條評論