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

  • 大小: 2KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-15
  • 語言: 其他
  • 標簽: 進程調度??

資源簡介

實驗內容: 編寫一個單處理機下的進程調度程序,模擬操作系統對進程的調度。 要求: 能夠創建指定數量的進程,每個進程由一個進程控制塊表示。 實現先來先服務調度算法:進程到達時間可由進程創建時間表示。 實現短作業優先調度算法:可指定進程要求的運行時間。(說明:對不可剝奪的短作業優先算法,當作業運行時間相等時,優先調度進程號小的進程執行;對可剝奪式的短作業優先算法,即選最短剩余時間的進程進行運行,在剩余時間相同的情況下,選擇到達時間早的進程進行運行) 實現時間片輪轉調度算法:可指定生成時間片大小。(說明:新進程到來時插入到就緒隊列的隊尾,當進程P運行完一個時間片時,若同時有進程Q到達,則先在就緒隊列隊尾插入新到達的進程Q,之后再插入進程P) 實現動態優先級調度算法:可指定進程的初始優先級(優先級與優先數成反比,優先級最高為0),優先級改變遵循下列原則:進程在就緒隊列中每停留一個時間片,優先級加1,進程每運行一個時間片,優先級減3。(說明:本算法在優先級相同的情況下,選擇到達時間早的進程進行運行) 測試用例格式如下: 輸入:調度算法    進程號/到達時間/運行時間/優先級/時間片 輸出:調度順序/進程號/開始運行時間/結束運行時間/優先級 其中調度算法選項為:1----先來先服務,2----短作業優先,3----最短剩余時間優先,4----時間片輪轉,5----動態優先級

資源截圖

代碼片段和文件信息

import?java.util.Random;
import?java.util.Scanner;

public?class?MultiProcess{
//主函數
public?static?void?main(String[]?arg){
Process[]?Pro;
int?ProcessNum;
Random?rand=new?Random();
Scanner?in?=?new?Scanner(System.in);
//初始化全部進程實體
System.out.println(“請輸入要生成的進程數目,0為隨機產生“);
int?choose?=?in.nextInt();
if(choose?==?0)
ProcessNum?=?rand.nextInt(7)+3;
else
ProcessNum?=?choose;
Pro?=?new?Process[ProcessNum];
Process[]?Pro1?=?new?Process[ProcessNum];
System.out.println(“創建了“+ProcessNum+“個進程“);
System.out.println(“為每一個進程賦值:1為手動0為隨機“);
choose?=?in.nextInt();
if(choose?==?0){
for(int?i?=?0;i int?a?=?rand.nextInt(20);
int?b?=?rand.nextInt(9)+1;
int?c?=?rand.nextInt(4)+1;
Pro[i]=new?Process(i?a?b?c);
Pro1[i]=new?Process(i?a?b?c);
System.out.println(“已創建進程ID“+Pro[i].GetID()+“:到達時間為:“+Pro[i].GetArriveTime()+“:運行時間為:“+Pro[i].GetRunTime()+“:優先級為:“+Pro[i].GetPriority());
}
}
else{
for(int?i?=?0;i int?m?=i+1;
System.out.println(“請輸入進程“+m+“的到達時間[020]、運行時間[110]、優先級[15]“);
int?a?=?in.nextInt();
int?b?=?in.nextInt();
int?c?=?in.nextInt();
if(a<0||a>20||b<1||b>10||c<1||c>5){
System.out.println(“輸入錯誤請重新輸入“);
i--;
continue;
}
else{
Pro[i]=new?Process(i?a?b?c);
Pro1[i]=new?Process(i?a?b?c);
}
}
for(int?i?=?0;i System.out.println(“已創建進程ID“+Pro[i].GetID()+“:到達時間為:“+Pro[i].GetArriveTime()+“:運行時間為:“+Pro[i].GetRunTime()+“:優先級為:“+Pro[i].GetPriority());
}
//先來先服務調度
FCFS(Pro1ProcessNum);
//短作業優先調度
copy(ProPro1ProcessNum);
SJF(Pro1ProcessNum);
//時間片輪轉調度
copy(ProPro1ProcessNum);
RR(Pro1ProcessNum);
//動態優先級調度
copy(ProPro1ProcessNum);
DP(Pro1ProcessNum);
}

//先來先服務調度對進程鏈按加入時間進行排序后依次運行
public?static?void?FCFS(Process[]?Proint?ProcessNum){
System.out.println();
System.out.println(“先來先服務調度“);
System.out.println(“-------------------------------------------------------“);
for(int?i?=?ProcessNum-1;i>0;i--){
for(int?j=0;j if(Pro[j].GetArriveTime()>Pro[j+1].GetArriveTime())
change(Projj+1);
}
if(Pro[0].GetArriveTime()>0)
System.out.println(“系統等待等待時間為0--“+Pro[0].GetArriveTime());
System.out.println(“當前運行進程為ID“+Pro[0].GetID()+“運行時間為“+Pro[0].GetArriveTime()+“--“+Pro[0].GetFinishTime());
for(int?i?=?1;i? if(Pro[i].GetArriveTime()<=Pro[i-1].GetFinishTime())
Pro[i].SetArriveTime(Pro[i-1].GetFinishTime());
else
System.out.println(“系統等待等待時間為“+Pro[i-1].GetFinishTime()+“--“+Pro[i].GetArriveTime());
Pro[i].SetFinishTime(Pro[i].GetArriveTime()+Pro[i].GetRunTime());
System.out.println(“當前運行進程為ID“+Pro[i].GetID()+“運行時間為“+Pro[i].GetArriveTime()+“--“+Pro[i].GetFinishTime());
}
}
//短作業優先調度對進程鏈按作業時間長短進行排序后依次運行
public?static?void?SJF(Process[]?Proint?ProcessNum){
System.out.println();

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????11041??2011-10-28?11:50??MultiProcess\MultiProcess.java

?????目錄??????????0??2015-12-07?12:50??MultiProcess

-----------?---------??----------?-----??----

????????????????11041????????????????????2


評論

共有 條評論