一.概述 因为这次os作业对用户在控制台的输入输出有要求,所以我花了挺多的代码来完善控制台的显示. 也因为我这次要实现多个类似算法,所以将一些共性单独提取出来作为一个类. 如果只想要和算法有关的核心代码,看RR类的calc()即可. 实现思路:每运行一个进程,则将所有进程的remainServiceTime减去一个时间片的长度. 二.运行结果 1. 测试数据: 2. 运行结果: 三.流程图 四.实现代码 1. RR类(主类) 只有calc()中涉及了算法,init()和printResult()…
一.概述 因为这次os作业对用户在控制台的输入输出有要求,所以我花了挺多的代码来完善控制台的显示. 也因为我这次要实现多个类似算法,所以将一些共性单独提取出来作为一个类. 如果只想要和算法有关的核心代码,看FCFS类的calc()即可. 实现思路:按照顺序将进程添加到列表中,然后再按照添加顺序运行.模拟进程的运行,即为按顺序改变每个进程的到达时间.服务时间.开始时间.等待时间.周转时间和带权周转时间.在所有进程都结束后再计算平均周转时间和平均带权周转时间. 三.测试 1. 测试数据: 2. 运行…
转自:https://blog.csdn.net/houchaoqun_xmu/article/details/55540250 时间片轮转RR进程调度算法 一.概念介绍和案例解析时间片轮转法 - 基本原理:  在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片.时间片的大小从几ms到几百ms.当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾:然后,…
调度的基本概念:从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行. 进程信息 struct node { string name;//进程名称 int id;//进程id int time;//进程服务时间 int rtime;//进程服务时间(主要用于时间片轮转算法) int level;//进程优先级 int start;//进程提交时间 int lst;//进程调度时间 }; set<string> pname;//存放进程名称,防止创建重复进程 que…
进程调度:在操作系统中调度是指一种资源分配. 调度算法是指: 根据系统的资源分配策略所规定的资源分配算法. 操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源.这就是调度.目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源. 那么我们看一下常见的进程调度算法: 1.      先来先去服务: 概念: 如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务(FC…
这次介绍一下操作系统的进程调度算法 操作系统的调度分为三种:1.远程调度(创建新进程):2.中程调度(交换功能的一部分):3.短程调度(下次执行哪个进程) 这次讲述的就是短程调度,可以简单的看作咱们平时所说的进程调度啦 当发生下面几种情况的时候会调用短程调度器,然后就看下次执行那个进程啦 时钟中断 I/O中断 操作系统调用 信号(如信号量) 进程调度算法: 先来先服务(FCFS) 短作业优先(SPN) 最短剩余时间(SRT) 时间片轮转 最高响应比优先 公平共享调度 先来先服务 就和名字一样,哪…
1.环境的搭建: 这个可以参考孟宁老师的github:mykernel,这里不再进行赘述.主要是就是下载Linux3.9的代码,然后安装孟宁老师编写的patch,最后进行编译. 2.代码的解读 课上的代码全部保存在github上,我fork了一份,然后为它加上了详细的注释,参见mykernel 3.代码结构 这里主要有三个文件: mypcb.h 这个头文件定义了进程控制结构PCB mymain.c 这个文件主要是定义了启动N个进程的过程 myinterupt.c 这个文件主要是时钟中断函数和进程…
Java NIO 入门(二)缓冲区内部细节 概述 本文将介绍 NIO 中两个重要的缓冲区组件:状态变量和访问方法 (accessor). 状态变量是前一文中提到的"内部统计机制"的关键.每一个读/写操作都会改变缓冲区的状态.通过记录和跟踪这些变化,缓冲区就可能够内部地管理自己的资源. 在从通道读取数据时,数据被放入到缓冲区.在有些情况下,可以将这个缓冲区直接写入另一个通道,但是在一般情况下,您还需要查看数据.这是使用访问方法get()来完成的.同样,如果要将原始数据放入缓冲区中,就要使…
1.在介绍进程调度之前,先对进程的状态的概念应该有所了解,下面是关于进程状态的一些基本概念:进程的状态分为三种,分别为: 1).运行态:该状态表明进程在实际占用CPU 2).就绪态: 该状态下进程可以运行,但因为其他进程正在运行而暂时停止 3).阻塞态: 该状态下进程不能运行,除非某种外部事件的发送 运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的. 等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行. 运行态→就绪态 不是由于自身原因,而是由外界原因使…
[Java并发编程(二)] 线程池 FixedThreadPool.CachedThreadPool.ForkJoinPool?为后台任务选择合适的 Java executors ... 摘要 Java 和其他平台相比最大的优势在于它可以很好的利用资源来进行并行计算.确实,在 JVM 上可以轻而易举地在后台执行一段代码,并在需要使用它的时候消费计算的结果.同时,它也让开发者可以更好的利用现代计算机硬件所带来计算能力. 但是,想让计算正确并不容易,或许对于开发者最大的挑战是编写一个总是能运行正确的…