操作系统概念学习笔记三 cpu调度算法

摘要:
周转时间是所有时间段之和,包括等待进入内存、在就绪队列中等待,在cpu上执行和I/O执行等待时间:CPU调度算法并不影响进程运行和执行I/O的时间量。2最短作业优先调度SJFSJF算法的真正困难时如何知道下一个CPU请求的长度。优先权调度算法的一个主要问题是无穷阻塞。实现软实时要求自习设计调度程序和操作系统的有关方面:第一,系统必须有优先权调度,且实时进程必须有最高的优先权。
一 基本概念

1 队列中的记录通常是进程的进程控制块。

2 CPU调度决策可在如下四种环境下发生
a 当一个进程从运行状态切换到等待状态 例如,I/O请求或调用wait以等待一个子进程的终止
b 党一个进程从运行状态切换到就需状态 例如,当出现中断
c 当一个进程从等待状态切换到就需状态 例如,I/O完成
d 当一个进程终止

当调度只能发生在第一和第四种种情况时,称调度方案是非抢占的,否则调度方案是可抢占的。

采用非抢占调度,一旦CPU被分配给一个进程,那么该进程会一直使用CPU直到进程终止或切换到等待状态时释放CPU

3 分派程序
功能包括:
切换上下文
切换到用户模式
跳转到用户程序的合适位置以重新启动这个程序

二 调度准则
CPU使用率: 40%到90%

吞吐量:一个时间单元内所完成进程的数量。

周转时间:从进程提交到进程完成的时间间隔称为周转时间。周转时间是所有时间段之和,包括等待进入内存、在就绪队列中等待

,在cpu上执行和I/O执行

等待时间:CPU调度算法并不影响进程运行和执行I/O的时间量。它只影响进程在就需队列中等待所花费的时间。

响应时间:从提交请求到产生第一响应的时间。是开始响应所需要的时间,而不是输出该响应所需要的时间。

CPU使用率和吞吐量最大化,周转时间、等待时间和相应时间最小化

三 CPU调度算法

1 先到先服务调度
FCFS(first-come,first-served)
当一个进程进入到就需队列,其pcb就被链接到队列的尾部,当CPU空闲时,CPU被分配给位于队列头的进程。接着,该运行进程从队

列中被删除。

FCFS策略的平均等待时间相当长

FCFS调度算法是非抢占式的。

2 最短作业优先调度
SJF(shortest-job-first)
SJF算法的真正困难时如何知道下一个CPU请求的长度。SJF调度经常用于长期调度。

3 优先权调度
每个进程都有一个优先权与其关联,具有最高优先权的进程会被分配到CPU。具有相同优先权的进程按FCFS顺序调度。

优先权可以通过内部或外部方式来定义。

优先权调度可以使可抢占的或者非抢占的。

优先权调度算法的一个主要问题是无穷阻塞。解决办法是老化,老化是一种技术,以逐渐增加在系统中等待很长时间的进程的优先

权。

4 轮转法调度
轮转法(RR)调度算法是专门为分时系统设计的。定义一个小时间单元,称为时间量或时间片。时间片通常为10ms到100ms。就绪队

列作为循环队列处理。CPU调度程序循环就需队列,为每个进程分配不超过一个时间片间隔的CPU。

如果上下文切换时间约为时间片的10%,那么约10%的CPU时间会浪费在上下文切换上。


5 多级队列调度
(multilevel queue-scheduling algorithm)
不同队列可用于前台和后台进程,前台队列可能使用RR算法调度,而后台队列可能使用FCFS算法调度。

6 多级反馈队列调度
对于多级队列调度算法,通常进程进入系统时,被永久地分配到一个队列,进程并不在队列之间移动。

四 多处理器调度

堆成多处理器
非对称多处理器


五 实时调度
实时计算分为两种类型:硬实时,软实时
硬实时:系统需要在保证的时间内完成关键任务。通常,在提交进程时,同时有一条语句告诉系统用来完成或执行I/O所需要的时间

软实时:要求关键进程要比其他较弱进程拥有更高的优先权。
实现软实时要求自习设计调度程序和操作系统的有关方面:
第一,系统必须有优先权调度,且实时进程必须有最高的优先权。实时进程的优先权不随时间而下降,尽管非实时进程的优先权可

以。
第二,分配延迟必须小

分派程序停止一个进程而启动另一个进程执行所需要花费的时间成为分派延迟

六 linux
linux提供了两种独立进程调度算法。一种是分时算法,用于在多个进程之间进行公平可抢占调度
一种是为实时任务设计的,
linux只允许在用户模式下运行的进程被抢占

第一种调度类型是用于分时进程的,对于传统的分时进程,linux使用了优先权的、基于信用度的算法。每个进程都有一定数量的调

度信用度,党要选择一个新任务运行时,具有最多信用的进程会被选择。每次出现定时器中断时,当前运行进程会失去一个信用,

党其信用为0时,它会被暂停且另一个进程会被选择。

linux使用两种实时调度类型:先到先处理和轮转。

时间片轮转(RR)调度对于分时系统更为适合。
FCFS算法是非抢占的,RR算法是可抢占的。SJF和优先级算法可以使可抢占的也可以使非抢占的。

多级队列算法允许多个不同算法用于各种类型的进程,最为常用的是前台交互队列(RR)和后台批处理队列(FCFS)。多级反馈队

列允许进程在队列之间迁移。

solaris 2和windows2000都采用可抢占的、基于优先级的调度算法,包括支持实时线程,来调度线程
linux进程调度程序也使用基于优先级的算法,并提供实时支持。

免责声明:文章转载自《操作系统概念学习笔记三 cpu调度算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转载]在.Net Framework中获得系统环境信息(转)2个小技巧下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux top 命令

top 命令主要用于查看进程的相关信息,同时它也会提供系统平均负载,cpu 信息和内存信息。下面的截图展示了 top 命令默认提供的信息: 系统平均负载top 命令输出中的第一行是系统的平均负载,这和 uptime 命令的输出是一样的: 13:05:49      表示系统当前时间。up 7 days    表示系统最后一次启动后总的运行时间。1 us...

C#正则表达式引发的CPU跑高问题以及解决方法团队

3月23日(周日)下午16:30左右,博客园主站负载均衡中的2台Web服务器CPU玩起了爬楼梯的游戏(见上图),一直爬到了接近100%。发现这个状况后,我们立即将这2台阿里云临时磁盘云服务器从负载均衡中摘下来,挂上1台云盘云服务器,恢复了正常。 由于曾经多次遇到过阿里云云服务器CPU问题,现在对阿里云云服务器产生了一种偏见,只要出现CPU问题,就会首先怀...

sar性能监控

1、安装sar: yum -y install sysstat 第一次使用sar命令会提示如下错误:“无法打开 /var/log/sa/sa13: 没有那个文件或目录”。 这里的值13是当天的日期,如今天是2017-02-13,所以这里提示13。原因是没有生成这个文件,可以使用-o命令生成。 生成成功 2、监控CPU sar -u 2 3  #每2...

二维矩形装箱问题(2D rectangular packing problem, 简称2DRP)介绍

写在前面 由于某些原因,这篇文章还没写完就作者就搞别的问题去了,写到一半很不好意思,大家可以去看原文对应的论文进一步研究:【A skyline heuristic for the 2D rectangular packing and strip packing problems】。祝大家学习顺利~ 前言 今天为大家介绍二维矩形装箱问题(2D recta...

Oracle常见的33个等待事件

Buffer busy waits         原因:        当一个会话试图修改一个数据块,但这个数据块正在被另一个会话修改时。        当一个会话需要读取一个数据块,但这个数据块正在被另一个会话读取到内存中时。        备注:数据处理的最小单位是块 select name,parameter1,parameter2,paramet...

Linux/Unix下的任务管理器top命令

Windows下的任务管理器虽然不好用(个人更喜欢Process Explorer些),但也算方便,可以方便的查看进程,CPU,内存...也可以很容易的结束进程 没有图形化界面下的Linux,也有命令可以实现Windows的任务管理器功能,这个命令就是"top",用户可以使用top来对进程排序,结束进程等. top 命令是 Linux 下常用的性能分析工...