⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiyan.txt

📁 自己编的一个关于操作系统作业调度的程序
💻 TXT
字号:
# define N 10
#define SIZE 100
# define M 10 

#include<string>

#include<stdio.h>
#include<stdlib.h>
#include"iostream"
using namespace std;
typedef struct jcb{   
	    char	name[4];    //作业名
		int		length;     //作业长度,所需主存大小
		int		printer;    //作业执行所需打印机的数量
		int		tape;       //作业执行所需磁带机的数量
		int		runtime;    //作业估计执行时间
		int		waittime;   //作业在系统中的等待时间
		int  	next;       //指向下一个作业控制块的指针
	 }JCB;

typedef struct pcb
{
	char name[4];        //进程名
 int status;      //进程状态
 int runtime;     //进程运行时间
float address;   //进程在内存中的起始地址
int  lenth;       //进程长度,也就是占用内存的大小
 int  ax,bx,cx,dx; //进程现场信息
 int pc;          //进程现场信息
 int psw;         //进程现场信息
 int next;        //下一个进程控制块的位置
}pcbarea;

//初始化
JCB jobtable[N]=
	 {
		 {"H",100,100,100,100,100,1}, //为操作方便,加入头节点
		 {"a",1,1,2,1,6,2},
		 {"c",3,1,2,2,6,3},
		 {"b",2,1,2,3,6,4},
		 {"d",4,1,2,4,6,5},
		 {"e",5,1,2,5,6,6},
		 {"f",6,1,2,5,6,7},
		 {"g",7,1,2,5,6,8},
		 {"h",8,1,2,5,6,9},
		 {"i",9,1,2,5,6,0}
	 };


//静态链表的打印
void jobtable_print()
{
    int i=0;
	//while(jobtable[i].next!=0)
		for(i=1;i<N;i++)
	{
		//i=jobtable[i].next;
		printf("%s,",jobtable[i].name);
		printf("%d,",jobtable[i].length);
		printf("%d,",jobtable[i].printer);
		printf("%d,",jobtable[i].tape);
		printf("%d,",jobtable[i].runtime);
		printf("%d,",jobtable[i].waittime);
		printf("%d" ,jobtable[i].next);
		printf("\n");
	};
}

//静态链表的排序
void jobtable_sort()
{    
     
     int index,pre_index;
	 jobtable[1].next=0; //将头节点和第一个节点构成一个环
	//将后边的节点按关键字插入环中
 for(int i=2;i<N;i++)
 {
	 pre_index=0;
	 index=jobtable[pre_index].next;


    if(jobtable[i].length<=jobtable[jobtable[0].next].length)
       {

		 jobtable[pre_index].next=i;
         jobtable[i].next=index;

       }

 else{
	 
    for(int j=jobtable[0].next,k;jobtable[i].length>jobtable[j].length;k=j,j=jobtable[j].next);
	
		jobtable[i].next=j;
		jobtable[k].next=i;
	
 
 }


  } 

}

//主函数
void main()
{  
	

    cout<<"请输入排序方式";	
    printf("排序前:\n");
	jobtable_print();
	sort(jobtable);
	 printf("排序后:\n");
	 void pcb_printf ();
	jobtable_print();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -