Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说进程调度介绍_物流调度岗位介绍以及要求[通俗易懂],希望能够帮助你!!!。
因为有进程间通信,就会涉及到多个进程竞争CPU,操作系统要决定哪一个进程先运行。
由于我们不知道每次作业什么时候到来,每个作业需要运行多久,因此不太可能有绝对完美的调度算法。
许多进程调度的处理方式对进程和线程都适用。这里首先讨论进程调度问题。
我们可以把调度算法分为两类:非抢占式调度以及抢占式调度。
非抢占式调度算法
这种算法挑选一个进程运行,并一直运行到阻塞(可能是I/O阻塞或等待另外一个进程)或自愿退出。
抢占式调度算法
挑选一个进程并运行,这个进程所运行的最大时间是固定的。如果到了最大时间依然在运行,进程将会被挂起,调度器将会挑选另外的进程运行。
由于操作系统可以分为批处理、交互式、实时系统三部分,在不同的系统中,调度器的优化目标是不同的,因此分开介绍。
为了设计一个调度算法,应该首先明确一个好的调度算法必须做什么。
公平
给每个进程公平的CPU份额
策略强制执行
执行所规定的策略
平衡
保持系统所有的部分都忙碌
吞吐量
最大化每小时作业数
周转时间
最小化从提交到完成的时间间隔(衡量了用户等待一个输出的平均时间)
CPU利用率
保持CPU始终忙碌
响应时间
快速响应请求
均衡性
满足所有用户需求
满足截止时间
避免丢失数据
可预测性
在多媒体系统中避免失真
在这个算法中,进程按照他们请求CPU的顺序使用CPU,维持一个就绪进程的单一队列。
当一个作业从外部进入系统,就马上运行并可以运行任意长时间。当其他作业到来时,就被插入队列尾端。
当运行的进程阻塞时,队列里的第一个进程调度运行,当这个阻塞的进程转为就绪时,再次插入队列尾端。
算法的优点很明显:易于实现。但缺点是在I/O密集型进程和计算密集型进程交替执行时,效率很低。
这也是很容易想到的贪心算法。当一批作业同时到来时,我们先处理作业最短的。
可以证明,当所有作业同时启动时,最短作业优先算法是最优的。这能够使得平均等待时间最短,最大化吞吐量。
但这种算法也只能在批处理系统中有用。因为在实际的其他系统中,每个作业的到达时间、执行时间都是未知的。
使用这种调度算法,调度器总是挑选其剩余时间最短的那些进程运行,同样,运行时间必须预知。
当一个新作业到来时,它所需的总时间与当前运行进程的剩余时间进行比较,如果新作业需要比当前进程更少的时间完成,那么当前进程被挂起,新作业运行。
这种方式可以使得新到来的短作业得到较好的服务。
HRRN是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之间的折中算法,既考虑作业等待时间又考虑作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能。
响应比 =(等待时间+要求服务时间)/ 要求服务时间
即RR=(w+s)/s=1+w/s,因此响应比一定是大于1的。
CPU每次计算所有作业的响应比,选择最高响应比再进行作业。
准入调度器
当作业到来时,首先被放入存储在磁盘上的输入队列中。
准入调度器决定哪些作业允许进入系统,其他作业被选中之前就保存在输入队列中。
内存调度器
决定哪个进程留在内存而哪个进程换出到磁盘。在内存中保留的进程数称为多道程序的道数。
CPU调度器
实际在内存中选取下一个将要运行的进程。任何合适的抢占式和非抢占式调度算法都可以在CPU调度器中使用。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章