操作系统 单处理器进程调度模拟实验(c++)

该实验采用C++模拟了时间片轮转调度算法,通过进程控制块PCB管理进程。系统启动时,输入时间片长度及各程序执行长度,进程按顺序执行。执行完的时间片后,进程进入就绪队列末尾,等待下一轮调度。
摘要由CSDN通过智能技术生成

本实验模拟了时间片轮转调度算法下的单处理机进程调度。

数据结构以进程控制块PCB为基本单位。

逻辑结构简单描述为,存在一个准备就绪的队列,用来组织PCB。

程序开始,需要输入运行时间片长度,再录入程序。程序需要数字编号和执行长度。

位于队列头的PCB出队,变为执行态,执行(与模拟的系统寄存器空间交互),执行完毕后,改为就绪态,再次加入队尾。

</pre><pre name="code" class="cpp">#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<Windows.h>
#include<conio.h>

//进程控制块数据类型
typedef struct pcb
{
	int id;					//进程号
	int count;  			//进程工作量
	char status;  			//进程状态(R和W和F)
	int ax, bx, cx,dx; 	//进程现场信息,通用寄存器内容
	int pc;         		//进程现场信息,程序计数器内容
	int psw;       		//进程现场信息,程序状态字寄存器内容
	struct pcb *next;       		//下一个进程控制块的位置
} PCB,*QueuePtr;

//就绪队列的指针
typedef struct 
{
	QueuePtr front;
	QueuePtr rear;
} ReadyQueue;

//系统寄存器数据类型
typedef struct
{	
	int ID;
	int COUNT;
	char STATUES;
	int AX,BX,CX,DX,PC,PSW;
} OsReg
实验二 处理器系统的进程调度 1.实验目的 加深对进程概念的理解,明确进程和程序的区别; 深入了解系统如何组织进程、创建进程; 进一步认识如何实现处理器调度。 2.实验预备知识 进程的概念; 进程的组织方式; 进程的创建; 进程的调度。 3.实验内容 编程序完成处理机系统中的进程调度,要求采用时间片轮转调度法。实验具体包括:首先确定进程控制块的内容,进程控制块的组成方式;然后完成进程创建原语和进程调度原语;最后编主函数对所作工作进程测试。 4.提示与讲解 这个实验主要要考虑三个问题:如何组织进程、如何创建进程和如何实现处理器调度。 考虑如何组织进程,首先就要设定进程控制块的内容。进程控制块PCB记录各个进程执行时的情况。不同的操作系统,进程控制块记录的信息内容不一样。操作系统功能越强,软件也越庞大,进程控制块记录的内容也就越多。这里的实验只使用了必不可少的信息。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类: ① 标识信息 每个进程都要有一个惟一的标识符,用来标识进程的存在和区别于其他进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。在后面给出的参考程序中,采用编号方式,也就是为每个进程依次分配一个不相同的正整数。
实验内容: 编一个处理机下的进程调度程序,模拟操作系统对进程的调度。 要求: 能够创建定数量的进程,每个进程由一个进程控制块表示。 实现先来先服务调度法:进程到达时间可由进程创建时间表示。 实现短作业优先调度法:可定进程要求的运行时间。(说明:对不可剥夺的短作业优先法,当作业运行时间相等时,优先调度进程号小的进程执行;对可剥夺式的短作业优先法,即选最短剩余时间的进程进行运行,在剩余时间相同的情况下,选择到达时间早的进程进行运行) 实现时间片轮转调度法:可定生成时间片大小。(说明:新进程到来时插入到就绪队列的队尾,当进程P运行完一个时间片时,若同时有进程Q到达,则先在就绪队列队尾插入新到达的进程Q,之后再插入进程P) 实现动态优先级调度法:可定进程的初始优先级(优先级与优先数成反比,优先级最高为0),优先级改变遵循下列原则:进程在就绪队列中每停留一个时间片,优先级加1,进程每运行一个时间片,优先级减3。(说明:本法在优先级相同的情况下,选择到达时间早的进程进行运行) 测试用例格式如下: 输入:调度法    进程号/到达时间/运行时间/优先级/时间片 输出:调度顺序/进程号/开始运行时间/结束运行时间/优先级 其中调度法选项为:1----先来先服务,2----短作业优先,3----最短剩余时间优先,4----时间片轮转,5----动态优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值