一、高级调度(作业调度)
1、原因:
由于内存(电脑内存条)空间有限,有时无法将用户提交的作业全放入内存,因此需要确定的某种规则来决定讲作业调入内存的顺序。
2、概念:
按一定的原则从外存处于后后备队列的作业中选中一个或多个作业给他们分配内存等必要的资源,并建立响应的PCB(程序控制块儿),以使他们获得竞争处理机的权力。是作业的第一次获得资源
注;高级调度是外村与内存之间的调度,每个作业只能调入一次,调出一次。作业调入时会建立相应的PCB,作业调出是才撤销PCB(在程序未结束之前,PCB常驻内存)。
二、中级调度(内存调度)
概念:引入虚拟存储技术后,可以将暂时不能运行的进程调到外村等待,等它重新具备了条件后且内存又有空闲,再重新调入内存。
调到外村等待的进程状态为挂起态,被挂起的进程的PCB会放到挂起队列。
中级调度,就是决定将哪个挂起的进程重新调入内存,一个进程可能会被多次调出、调入内存,发生频率要比高级调度高。
三、初级调度(cpu调度)
1、早期批处理调度算法
(1)短作业优先:非抢占式
(2)先来先处理:非抢占式
(3)高响应比优先:非抢占式
2、交互式处理调度算法
(1)时间片轮转调度算法(RR)
如果时间片设计过大轮,时间片调度算法就退化为先来先服务算法。设计时间片时要让切换进程的开销占比不超过1%。
(2)优先级调度算法
(3) 多级反馈队列调度算法
四、内存分配(操作系统对内存的管理)
1、单一连续分配(有内部碎片)
2、单固定分区分配(有内部碎片)
3、 动态分区分配(有外部碎片)
(1) 首次适应算法
算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。
如何实现:空闲分区以地址递增的顺序排列,每次分配内存时按顺序查找空闲分区链或者是空闲内存表。
(2) 最佳适应算法
由于动态分区分配是一种连续的分配的方式,因此分配的必须是一片连续的分区。
实现方法;空闲分区按照容量大小递增排列,每次分配内存时顺序查找空分区链,找到满足要求的第一个分区。
缺点:产生很多外部碎片。
(3)最坏适应算法
为了解决最佳适应算法会产生很多的外部碎片的问题,将空闲分区按照容量递减的顺序来排列,每次选择第一个最大的满足要求的分块。
缺点:会导致大进程到来时,没有可用的空闲内存。
(4) 邻近适应算法
首次适应算法每次都从空闲分区的头部开始寻找合适的分区,增加了查找的开销
解决方法:空闲分区以地址递增的顺序,排列成一个循环链表
五、页面置换算法
(1) 最佳置换算法(OPT)
无法实现,选择调出的页面将是以后永远不会使用的,无法提前预判,所以无法实现
(2) 先进先出置换算法(FIFO)
每次选择涛涛的页面是最早进入内存的页面。把调入内存的页面根据调入的先后顺序,排成一个队列,需要换出的页面就是队列头上的页面,队列的长度取决于系统分配给进程分配了多少内存块。
(3) 最近最久未使用算法(LRU)
每次淘汰的页面时最近最久未使用的页面。
实现方法:赋予每个页面对应的页表项,用访问字段记录上次访问以来的时间t,当淘汰一个页面时,选择时间t最大的淘汰,即最近最久未使用。
本文详细介绍了操作系统的调度算法,包括高级调度(作业调度)、中级调度(内存调度)、初级调度(CPU调度)以及内存分配和页面置换算法。在CPU调度中,讲解了短作业优先、时间片轮转和优先级调度等;在内存分配部分,讨论了静态和动态分区策略及不同适应算法;页面置换算法则涵盖了OPT、FIFO和LRU等。

3677

被折叠的 条评论
为什么被折叠?



