操作系统实验报告

来源:百度知道 编辑:UC知道 时间:2024/06/24 04:18:25
①编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。
“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等
②编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。
轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。
简单轮转法的基本思想是:所有就绪进程按 FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。
我是完全不会 再简单也看不懂的。。所以如果只写了一条 麻烦标明是哪一条。。谢谢

#include<algorithm>
#include<iomanip>
#include<conio.h>
using namespace std;
struct PCB
{
string p_name;//程序名
int super;//优先级
double ndtime;//需要时间
double runtime;//运行时间
string state;//状态
bool operator<(const PCB& nd)
{
return super>nd.super ;
}
};
int main()
{
int n,i,j,nn=0;
cout<<"\n请输入进程总个数?";
cin>>n;
PCB *PB=new PCB[n];
for(i=0;i<n;i++)
{
cout<<"\n\n进程号No."<<i<<":"<<endl;
cout<<"\n输入进程名:";
cin>>PB[i].p_name ;
cout<<"\n输入进程优先级数<0~99>:";
cin>>PB[i].super ;
cout<<"\n输入进程运行时间:";
cin>>PB[i].ndtime ;
nn +=PB[i].ndtime ;
PB[i].runtime =0;PB[i].state ="W";
}
sort(PB,PB+n);
int k=PB[0