【操作系统原理实验】调度算法模拟实现

  1. 选择一种高级语言如C/C++等,模拟实现调度算法完成资源分配与回收的过程。2) 自定义PCB等核心数据结构;3) 利用列表、队列等容器类或者其他数据结构管理PCB,完成相应调度算法的模拟;4) 实现外围一些命令如创建进程、查看进程、关闭进程等,使模拟系统更加方便可用。设计系统命名行提示符;

(1)设计思想:
1、建立结构体PCB,包括进程名、进程状态、优先级、需要时间、剩余时间、指向下一节点的结构体PCB的指针变量,定义两个全局struct pcb的指针变量。
2、初始化,建立进程控制块函数,循环输入n个进程的名、进程优先级、进程运行时间,让p指针指向的节点已经运行时间为0,状态是等待,使p指针下一节点为NULL。
在这里插入图片描述

3、对输入的进程比较优先级进行排序
3.1当ready指针为NULL或者(p->super)>(ready->super),将优先级大的放队首。
在这里插入图片描述

3.2否则让first指针指向ready指针所指节点,second指针指向first指针所指下一节点,当second不为NULL时,如果插入进程比当前进程优先数大,插入当前进程前面。如果插入进程优先数最低,则插入到队尾。
在这里插入图片描述

3.3否则当second为NULL时,first指针指向p指针前一个节点。
在这里插入图片描述

4、遍历链表,返回当前链表长度,当指针不指向尾节点时,循环继续执行,遍历每个节点使得len+1;最后返回链表长度。
5、当链表长度为不为空并且指针不指向尾节点时,进入循环,取链表首个节点,把第二个节点的地址赋值给ready,首节点后继节点地址为空,修改首节点状态为运行。然后显示进程信息,建立进程就绪函数
5.1将p指针指向的节点运行的进程的已经运行时间加1,当进程运行时间=所需时间,则撤销进程。否则,让运行的进程优先级减1,改变进程状态为等待,然后重新对进程排序。
6、当到达尾节点时,显示进程已经完成。
(2)功能函数设计:
sort();进程队列按优先级排序
input();建立进程控制块函数
space();遍历链表,返回当前链表的长度
disp(PCB * pr);建立进程显示函数,用于显示当前进程
check();显示进程
destroy();建立进程撤销函数(进程运行结束)
destroy();建立进程撤销函数(进程运行结束)
(3)结果演示:
当有三个进程a1、a2、a3时

在这里插入图片描述

进程运行结果如下:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值