操作系统实验六 设计一个按时间片轮转法实现处理器调度的程序

#includeiostream
#includecstdlib

using namespace std;

typedef struct PNode  PCB
{
     struct PNode nest; 定 义指向下一个节点的指针
     char name[10];  定义进程名,并分配空间
     int All_time;  定义总运行时间
     int Runed_Time;  定义已运行时间
      char state;  定义进程状态ReadyEnd
}
Proc;  指向该PCB的指针
int ProcNum;  总进程数
初始化就绪队列
void lnitPCB(Proc &H)
{
    cout 请输入总进程个数;
      cin  ProcNum;  进程总个数int Num = ProcNum;
      H =(Proc)malloc (sizeof(PNode));  建立头结点
      H-next = NULL;
      Proc p= H;  定义一个指针

      cout总进程个数为 ProcNum  个,请依次输入相应信息end1;
      cout  endl;
      while (Num--)
      {
            p = p-next = (Proc)malloc(sizeof (PNode)) ;
            cout 进程名,总运行时间,已运行时间;
            cin  p-name  p-A11_time  p-Runed_Time;
            p-state = 'R';
            p-next = NULL;
      }
       p-next = H-next;
}
      输入运行中的进程信息
void Displnfo(Proc H)
{
    Proc p = H-next;
    do
    {
        if (p-state != 'E') 如果 该进程的状态不是End的话
        {
            cout 进程名 p-name  t总运行时间 p-All_time  t已运行时间 p-Runed_Time  t状态 p-state  endl;
            p= p-next;
        }else p = p-next;
    }while (p != H-next) ;整个进程链条始终完整,只是状态位有差异
}

时间片轮转法
void SJP_ Simulator (Proc &H)
{
    cout  endl ---------START-------------N;
    int flag =ProcNum;    记录剩余进程数
    int round=0;          记录轮转数
    Proc p=H-next;
    while (p-All_ _timep-Runed Time)
    {
        round++ ;
        cout  endl Round  round --正在运行. p-name 进程
            endl;
        p-Runed_ _Timett;  更改正在运行的进程的已运行的时间
        Displnfo(H);  输出此时为就绪状态的进程的信息
        if (p-Al1_ time = p- Runed_ Time)
        {
            判断该进程是否结束
            p-state=’E’;
            flag-;
            cout  p-name 进程已运行结束,进程被删除! n;
        }
        p= p-next;
        while  (flag && p-A11_ time == p-Runed_ Time)
            p= p-next;  跳过先前已结束的进程
    }
    cout  endl  ------END-------n;
}
void main()
{
    Proc H;
    lnitPCB(H); 数据 初始化
    Displnfo(H); 输出此刻的进程状态
    SJP_ Simulator (H);时间片轮转法
    system(pause);
}

你可能感兴趣的:(计算机)