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

  • 大小: 15KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-29
  • 語言: C/C++
  • 標簽: C語言??操作系統??

資源簡介

處理機調度的模擬實現,用先來先服務、短作業優先、最短剩余時間優先、時間片輪轉、基于靜態優先級的調度,基于高響應比優先的動態優先級調度處理機調度算法的實現,能夠模擬進程調度情況,并輸出進程的完成時間,計算周轉時間、帶權周轉時間,平均周轉時間和平均帶權周轉時間。要求使用鏈表,進程個數由用戶提供,按照進程的實際個數生成PCB。程序能夠讓用戶選擇使用哪種調度算法,進程基本信息要既可從文件讀入,也可手動輸入。程序還要考慮用戶界面的友好性和使用方便性。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include?
#include?
#include?
#include?
using?namespace?std;
typedef?struct?PCB{
char?id; //進程名字
float?arrival_time;//到達時間
float?service_time;//服務時間
float?start_time;//開始執行時間
float?finish_time;//完成時間
float?turnover_time;//周轉時間
float?weight_time;//帶權周轉時間
int?True;//標志是否運行結束
float?sum_waittime;//等待時間
float?remain_time;//剩余時間
int?static_begin;//靜態優先級
float?run_time;//運行時間
}PCB;

static?queueRRqueue;??//聲明一個隊列
static?int?T;??//時間片
static?int?n;??//進程個數
static?PCB?p[100];??//進程結構
static?PCB?q[100];??//模擬進程就緒隊列
static?PCB?temp;//用于交換兩個進程所有信息的中間變量

void?init()//進程信息初試化
{
int?ij;
for(i=0;i {
p[i].True=0;//都有進程狀態都置為0,表示沒有執行完該進程
p[i].sum_waittime=0;
}
//對進程按到達時間排序
for(i=0;i {
for(j=0;j<=i;j++)???//按照各進程到達時間升序,對進程排序
{
if(p[j].arrival_time>p[i].arrival_time)
{
temp=p[j];
p[j]=p[i];
p[i]=temp;

}
}
}
//for(i=0;i // printf(“%c\n“p[i].id);//檢測是否排序對
}
void?input()//進程信息輸入
{
int?choice;
printf(“\t\t*****************************\n“);
printf(“\t\t選擇你要輸入進程信息的方式:\n“);
printf(“\t\t1?文件讀入方式\n“);
printf(“\t\t2?手動輸入方式\n“);
printf(“\t\t*****************************\n“);
scanf(“%d“&choice);
system(“cls“);
int?i;
if(choice==1)
{
//文件讀取模式
ifstream?inData;
inData.open(“input.txt“);
inData>>n;
for?(i=0;i {
inData>>p[i].id;
}
for?(i=0;i {
inData>>p[i].arrival_time;
}
for?(i=0;i {
inData>>p[i].service_time;
}
}
else
{
//用戶輸入模式
printf(“請輸入進程的個數:“);
scanf(“%d“&n);
printf(“請輸入這些進程的名字id:\n“);
for?(i=0;i {
cin>>p[i].id;
}
printf(“請輸入進程到達時間:\n“);
for?(i=0;i {
cin>>p[i].arrival_time;
}
printf(“請輸入進程服務時間:\n“);
for?(i=0;i {
cin>>p[i].service_time;
}
}
init();//初始化
// 輸出用戶所輸入的信息
printf(“The?information?of?processes?is?the?following:\n“);
printf(“\t進程名\t到達時間\t服務時間\n“);
for?(i=0;i {
cout< cout< cout< }
printf(“************************************************\n“);
}
//先來先服務
void?FCFS()
{
input();
int?i;
float?sum=0;
float?sum1=0;
float?avg_time;//平均周轉時間
float?avg_time1;//平均帶權周轉時間
//初始化第一個進程的開始時間(即到達時間),和結束時間。
p[0].start_time=p[0].arrival_time;
p[0].finish_time=p[0].service_time+p[0].start_time;
for(i=1;i {
//判斷到達時間與前一個進程的完成時間
if(p[i].arrival_time {
p[i].start_time=p[i-1].finish_time;
}
else
{
p[i].start_time=p[i].arrival_time;
}
//完成時間等于開始時間+服務時間
p[i].finish_time=p[i].service_time+p[i].start_time;

}
for(i=0;i {
p[i].turnover_time=p[i].finish_time-p[i].arrival_time;//計算周轉時間
p[i].weight_time=p[i].turnover_time/p[i].service_time;/

評論

共有 條評論