操作系统之进程调度

世界上很多问题都是跟资源分配和任务调度有关,而学会了操作系统的进程调度算法,我觉得也会给你在做事的时候带来一些启发吧。
在现代的操作系统中,有很多进程在内存中。有的正在运行,有的正等待某个事件的发生(比如等待用户敲击键盘)。那么操作系统作为一个大佬,就必须管理这些进程,让它们按照规则来,不能乱了套。

进程调度的类型

按照每个阶段的执行时间的相对比例来分,进程的调度类型包括一下三类:
(1)长程调度:每当创建一个新的进程的时候,都会执行一次长程调度,它决定是否把进程添加到待执行的进程池中。
(2)中程调度:它决定是否把待执行的进程池中的进程加入到部分/全部在内存中的进程集合中去。
(3)短程调度:决定哪一个进程可以获得CPU资源并执行。
一个进程执行要经历的过程可以用下图来表示:
这里写图片描述
图例:首先,进程会进入作业队列,然后进入就绪队列,最后才获得CPU资源并执行;如果进程需要进行I/O操作,还会进入等待I/O的队列,一旦对应事件发生,就会重新进入就绪队列。

调度需要考虑

一、课程设计目的 1、要求学生设计一个模拟进程调度的算法 2、理解进程控制块的结构 3、理解进程运行的并发性 4、掌握进程调度的三种基本算法 二、课程设计题目描述和要求 设计题目描述 在多道程序运行环境下,进程数目一般多于处理机数目,使得进程要通过竞争来使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同的进程队列。于是系统有运行进程队列、就绪进程队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行进程调度的算法有多种,常用的有优先级调度算法、先来先服务算法、时间片轮转算法。 进程是程序在处理机上的执行过程。进程存在的标识是进程控制块(PCB),进程控制块结构如下: Typeedef struct node { Char name[10]; /*进程标识符*/ Int prio; /*进程优先数*/ Int cputime /*进程占用CPU时间*/ Int neentime /*进程到完成还需要的时间*/ Char state; /*进程状态*/ Struct node *next; /*链指针*/ }PCB; 系统创建一个进程,就是由系统为某个程序设置一个PCB,用于对该进程进行控制和管理。进程任务完成,由系统收回其PCB,该进程便消亡。每个进程可以有三个状态运行态、就绪态和完成状态
目 录 1.课程设计的目的 1 2.课程设计的要求 1 2.1、进程的定义 1 2.2、进程的创建 1 2.3、进程的调度 2 2.4、并发环境模拟 2 3.课程设计报告内容 2 3.1 流程图 2 3.2 模块函数 3 3.3函数实现如下: 3 3.4实验结果: 5 4.总结 6 参考文献 6 附录 6 无限循环进程模拟 1.课程设计的目的 1、实现模拟进程描述以及运行态、就绪态和挂起态三种状态; 2、了解模拟进程创建过程; 3、实现有优先级的多进程就绪态的模拟; 4、了解挂起态转换为就绪态的简单算法; 5、了解低优先级队列进入挂起态的简单算法。 2.课程设计的要求 以进程PCB结构表示一个进程,每个进程有自己唯一的PCB。用一个PCB结构指针(run)标识运行态的进程,两个PCB结构指针(hwait,lwait)分别标识处于就绪态进程的高优先级,低优先级两个队列。另一个PCB结构指针来(hang)标识挂起态进程。当前运行进程时间片运行完毕之后依据其优先级将其插入到对应就绪队列队尾中,判断高优先级队列是否为空,不空则取其对头的进程继续运行,空则判断低优先级队列取进程运行(若高低优先级队列度为空演示程序退出结束演示)。每隔25m新建进程根据优先级插入就绪队列。当运行高优先级就绪队列程序过长时间而低优先级就绪队列中的进程得不到运行时低优先级队列挂起。当运行到地优先级就绪队列中进程时挂起恢复。 2.1、进程的定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值