操作系统单处理器的进程调度实验报告.pdfVIP

  • 46
  • 0
  • 约6.36千字
  • 约 7页
  • 2021-07-02 发布于湖北
  • 举报

操作系统单处理器的进程调度实验报告.pdf

实验二 单处理器系统的进程调度 年级 2009 级 学号 2009443004 姓名 郭占强 成绩 专业 生物信息学 实验地点 生科楼 409 指导教师 王硕 实验项目 单处理器系统的进程调度 实验日期 2011 年 11月 25 日 一、实验目的 加深对进程概念的理解,明确进程和程序的区别; 深入了解系统如何组织进程、创建进程; 进一步认识如何实现处理器调度。 二、实验要求 编写程序完成单处理机系统中的进程调度,要求采用时间片轮转调度算法。实验具体包括: 首先确定进程控制块的内容,进程控制块的组成方式;然后完成进程创建原语和进程调度原语; 最后编写主函数对所作工作进程测试。 三、实验原理: 单处理器系统的进程调度 四、实验程序设计 #includestdio.h #includestdlib.h #define RUNNING 1// 用 RUNNING 表示进程处于运行态 #define WAIT 2// 用 wait 表示进程处于就绪态 #define FINISH 3// 用 FINISH 表示进程已经执行完毕 #define TIME_PIECE 5// 用 TIME_PIECE 表示时间片大小 #define MAX_PROCESS_NUM 10// 假定系统允许进程个数为 10 int AX,BX,CX,DX,PC,PSW,TIME;// 模拟寄存器 int run;// 定义指向正在运行进程的进程控制块的指针 int pfree;//定义指向空闲进程控制块队列的指针 struct{ int head; int tail; }ready;// 定义指向就绪队列的头指针 head和尾指针 tail struct{ - 1 - int name;//进程标识符 int status;//进程状态 int ax, bx, cx,dx;//进程现场信息,通用寄存器内容 int pc;//进程现场信息,程序计数器内容 int psw;//进程现场信息,程序状态字寄存器内容 int time;// 进程每次申请的时间片大小 int totalTime;//执行进程需要的总时间 int remainingTime;//进程剩余的执行时间 int next;// 下一个进程控制块的位置 }pcbarea[MAX_PROCESS_NUM];// 定义模拟进程控制块区域的数组 //进程控制块初始化 void Init(){ int i; run=ready.head=ready.tail=-1;//运行指针、就绪指针清空 pfree=0;//空闲指针指向第一个进程 for(i=0;iMAX_PROCESS_NUM-1;++i) pcbarea[i].next=i+1; pcbarea[MAX_PROCESS_NUM-1].next=-1; } // 创建进程 void Create(int process_name,int ax,int bx,int cx,int dx,int pc,int psw,int totalTime){ int i; if(pfree==-1){ // 空闲进程控制块队列为空 printf( 无空闲进程控制块,进程创建失败 \n); return; } i=pfree;// 取空闲进程控制块队列的第一个 pfree=pcbarea[pfree].next;//pfree后移 // 填写该进程控制块内容 pcbarea[i].name=process_name; pcbarea[i].status=WAIT; pcbarea[i].ax=ax; pcbarea[i].bx=bx; pcbarea[i].cx=cx; pcbarea[i].dx=dx; pcbarea[i].pc=pc; pcbarea[i].psw=psw; pcbarea[i].time=TIME_PIECE; - 2 - pcbarea[i].t

文档评论(0)

1亿VIP精品文档

相关文档