介绍

  1. 按优先数调度算法实现处理器调度的程序
    五个进程任意确定一组“优先数”和“要求运行时间”,并输出初始状态
    实验结果:

  2. 按时间片轮转发实现处理机调度的程序
    五个进程任意确定一组“优先数”和“要求运行时间”,并输出初始状态
    实验结果:

相关阅读

Python|页面置换模拟程序设计
Python|银行家算法
Python|独占设备的分配和回收模拟
Python|模拟文件系统
Python|进程调度算法
Python|分页管理方式下存储分配情况模拟
Python|Windows下实现经典进程同步问题——理发师问题
Python|模拟实现动态分区存储管理

完整代码

import copy
import random
class PCB:def __init__(self, id, priority, cpu_time, all_time, state):''':param id: 进程标识:param priority: 进程优先数(并规定优先数与优先权成正比):param cpu_time: 进程已经占用CPU的时间:param all_time: 进程还需要运行的时间(当进程运行完毕时,其值为0):param state: 进程的状态(为简化期间,设每个进程处于就绪R和结束E两种状态之一并假设起始状态都是就绪状态R)'''self.id = idself.priority = priorityself.cpu_time = cpu_timeself.all_time = all_timeself.state = statedef run_process(self):# 执行进程if self.state == 'E' or self.all_time == 0:if self.all_time == 0:self.state = 'E'return Falseself.priority -= 1self.cpu_time += 1self.all_time -= 1if self.all_time == 0:self.state = 'E'return Truedef process_finish(process_list):# 检查所有进程是否结束for i in process_list:if i.state == 'R':return Falsereturn Truedef show_ready_list(process_list):# 输出进程队列ready_list = [i.id for i in process_list if i.state == 'R']print('-------------------------------------------------')print('当前的就绪进程队列为:', ready_list)def priority_scheduling(process_list):# 优先数调度算法print('当前的就绪进程队列为:', [i.id for i in process_list if i.state == 'R'])while not process_finish(process_list):print('进程名\t|占用CPU时间变化\t|还需运行时间变化\t|优先数变化')for i in process_list:if i.run_process():print('P{}\t\t|{} --> {}\t\t|{} --> {}\t\t|{} --> {}'.format(i.id, i.cpu_time-1, i.cpu_time, i.all_time+1, i.all_time, i.priority+1, i.priority))print('运行一次后就绪进程队列为:', [i.id for i in process_list if i.state == 'R'])show_ready_list(process_list)else:print('优先数调度算法结束')def round_robin(process_list):# 时间片轮转算法print('当前的就绪进程队列为:', [i.id for i in process_list if i.state == 'R'])while not process_finish(process_list):print('进程名\t|占用CPU时间变化\t|还需运行时间变化')for i in process_list:if i.run_process():print('P{}\t\t|{} --> {}\t\t|{} --> {}'.format(i.id, i.cpu_time-1, i.cpu_time, i.all_time+1, i.all_time))print('运行一次后就绪进程队列为:', [i.id for i in process_list if i.state == 'R'])show_ready_list(process_list)else:print('时间片轮转算法结束')if __name__ == '__main__':p1 = PCB(id=1, priority=random.randint(1, 5), cpu_time=0,all_time=random.randint(1, 5), state='R',)p2 = PCB(id=2, priority=random.randint(1, 5), cpu_time=0,all_time=random.randint(1, 5), state='R',)p3 = PCB(id=3, priority=random.randint(1, 5), cpu_time=0,all_time=random.randint(1, 5), state='R',)p4 = PCB(id=4, priority=random.randint(1, 5), cpu_time=0,all_time=random.randint(1, 5), state='R',)p5 = PCB(id=5, priority=random.randint(1, 5), cpu_time=0,all_time=random.randint(1, 5), state='R',)process_list = [p1, p2, p3, p4, p5]_process_list = copy.deepcopy(process_list)print('-------------------优先数调度算法-------------------')process_list = sorted(process_list,key=lambda process: process.priority,reverse=True,)print('初始状态:')print('进程名\t|占用CPU时间\t|还需运行时间\t|优先数\t|状态')for i in process_list:print('P{}\t\t|{}\t\t\t|{}\t\t\t|{}\t\t|{}'.format(i.id, i.cpu_time, i.all_time, i.priority, i.state))print('-------------------------------------------------')priority_scheduling(process_list)print('')print('-------------------时间片轮转算法-------------------')print('初始状态:')print('进程名\t|占用CPU时间\t|还需运行时间\t|状态\t')for i in _process_list:print('P{}\t\t|{}\t\t\t|{}\t\t\t|{}\t\t'.format(i.id, i.cpu_time, i.all_time, i.state))print('-------------------------------------------------')round_robin(_process_list)

Python|进程调度算法相关推荐

  1. python 3.0 实现多级反馈队列进程调度算法

    文章目录 前言 一.操作系统课程设计任务 二.具体实现 1.多级反馈定义 2.代码 前言 写的很拉,但是可以实现多级反馈调度的python3.0代码 算法参考:「土豆洋芋山药蛋」作者的文章 参考文章的 ...

  2. python实现进程调度算法_多级反馈队列调度算法(附Python3实现代码)

    一.多级反馈队列调度算法 多级反馈队列调度算法是进程调度的一种算法,该调度算法可以不用事先知道各种进程所需的执行时间,还可以较好的满足各种类型进程的需要,是目前共认的一种较好的进程调度算法. 那你可能 ...

  3. python进程、线程的学习心得

    什么是多线程竞争? 线程不是独立的,同一个进程里的线程,线程间的数据是共享的,多线程操作时,容易造成数据的混乱,线程不安全. 如何解决? 互斥锁. 好处:能够保证某段关键代码执行时,只有一个线程操作, ...

  4. python -- 进程

    什么是进程 要了解进程先了解操作系统,可以参考一下我的上一篇博客:操作系统 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基 ...

  5. python进程、线程、协程

    基本观点: 1.一个python进程一个GIL(全局锁),每个线程需要获取这个锁才能执行. 2.cpu密集型的程序,使用多进程. 3.IO密集型的程序,多线程可能会比多进程快. 4.多核cpu执行多进 ...

  6. python进程join的用法_python 进程介绍 进程简单使用 join 验证空间隔离

    一.多道程序设计技术(详情参考:https://www.cnblogs.com/clschao/articles/9613464.html) 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行 ...

  7. 【进程调度算法】时间片轮转调度算法、多级反馈队列调度算法(Java实现)

    时间片轮转调度算法(RR)是十分简单的进程调度算法. 进程在执行时的情况 在该时间片内进程执行完毕,这种情况调度程序将立即把该进程弹出队列,并把CPU分配给新的队首进程 在该时间片内进程未执行完毕,调 ...

  8. python进程和线程_Python进程与线程知识

    好程序员Python 培训分享进程与线程知识 , Python 开发语言现在已经是被大家非常看中的编程语言了,本篇文章给读者们分享一下 Python 进程与线程知识小结,本篇文章具有一定的参考借鉴价值 ...

  9. Python进程、线程、协程详解

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  10. 计算机操作原理进程调度算法---先来先服务,短进程优先(C语言)

    目录 先来先服务调度算法: 短进程优先调度算法: 两种进程调度算法优缺点 思维导图 程序代码: 先来先服务调度算法: 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可 ...

最新文章

  1. createprocess失败代码2_Win7 中 Visual C++ 2015安装失败解决方法
  2. 多尺度熵---Understanding Multiscale Entropy
  3. 【EventBus】事件通信框架 ( 订阅类-订阅方法缓存集合 | 事件类型-订阅者集合 | 订阅对象-事件类型集合 )
  4. python:opencv 二值化处理
  5. 删除python类中所有未使用的方法?
  6. vue根据指令动态改变title名字
  7. 利用Python K-means实现简单图像聚类
  8. 阿里新一代微服务解决方案:Spring Cloud Alibaba
  9. 多行文字cad提取数据_中望CAD如何快速批量提取txt文本数据
  10. icom对讲机写频线定义_ICOM对讲机的常见故障和使用中的问题
  11. PotPlayer没有声音解决方案
  12. android 支付宝 授权登录,android 支付宝授权登录、获取个人信息一键接入
  13. 《黑白团团队》第九次团队作业:Beta冲刺第三天
  14. 如何进入华为P40 debug 模式/开发者选项模式
  15. 关于大象,冰箱和软件项目报价的故事
  16. linux ssh复制粘贴,Linux下SSH Session复制功能实现方法
  17. 大数据可视化,助力行业大数据应用
  18. 操作系统实验三·xv6系统增添系统调用和用户级应用程序
  19. 使用计算机扬声器打电话,事实:解决计算机扬声器声音的步骤
  20. python实现多语言语种识别_python langid实现语种识别

热门文章

  1. 查看计算机显卡驱动版本,驱动人生检测选择显卡版本教程 电脑显卡公版和官方驱动区别...
  2. 什么叫0day和warez
  3. java 资源描述文件_j2me新手必看-Java应用描述文件(JAD)编辑器
  4. 将所有.java文件修改为.jad文件格式
  5. Java中生成随机数的4种方式!
  6. 硬盘分区整数计算器(如何让硬盘容量成整数)
  7. Python 项目打包各种依赖包
  8. 天堂2服务器自动停止,为什么我一进天堂2就与服务器连接中断??/
  9. 动态爱心(C/C++)
  10. 速达登录服务器密码如何修改,登录速达软件口令忘记了进不去怎么弄