此为本人在期中临近复习操作系统概念时将手写版笔记中的重点进行提炼后,加入个人的理解与思考所写出的总结性笔记,仅供参考。
一、基本概念 1、单处理器系统:每次仅允许一个进程进行,其他进程必须等待,直到CPU空闲时才能被调度。 2、CPU-I/O区间周期:锦程之星由CPU执行核I/O等待周期组成,进程在这两个状态之间切换。锦程之星必须从CPU区间开始,然后I/O与CPU交替,最后通过CPU区间通过系统请求终止。 3、CPU调度程序:由该程序从内存中选择一个能够执行的进程并为之分配CPU ①、从运行到等待,此时没有选择只有调度,为非抢占的。 ②、从等待到就绪,此时有调度有选择,为抢占式 ③、从运行到就绪,此时有调度有选择,为抢占式 ④、进程终止,此时无选择有调度,为非抢占式 可以看出来,只要是进入就绪队列之后,就是抢占式调度 4、非抢占式调度:一旦进程拥有CPU,将会持续运行直到进程被阻塞或终止 5、抢占式调度:进程可以被随时终止并交出CPU控制权 6、受终端影响的代码段必须加以保护以避免同时访问,及操作系统需要在进入这段代码后禁止中断,而在退出后重新允许中断 7、分派程序:一个用来将CPU的控制转交给短期调度程序选择的进程的模块,需要能够切换上下文,切换到用户模式,跳转到用户程序的合适位置以重启该程序 8、分派延迟:分派程序停止一个进程而启动另一个进程所需的时间
二、调度准则 1、CPU使用率:CPU实际运行时间/(CPU实际运行时间+上下文切换时间),↑ 2、吞吐量:单位时间内完成进程的数量,↑ 3、周转时间:从进程提交(到达)到完成(最终完成)的时间间隔,↓ 4、平均周转时间:周转时间/进程数量,↓ 5、等待时间:进程在就绪队列中所等待的时间(不管是第几次进入就绪队列),↓ 6、平均等待时间:等待时间/进程数量,↓ 7、响应时间:从进程提交(到达)到第一次响应(开始处理)的时间,↓ 8、甘特图:长方形,下方标明时间节点,中间为进程代号
三、调度算法 1、先到先得调度(FCFS):用一个大的FIFO存储进程。会有护航效应,即所有进程等待一个大进程释放CPU,是一种非抢占式调度。 2、最短作业优先调度(SJF):将每个进程与下一个CPU区间段相关联,当CPU开孔显示,会赋给具有最短CPU区间的进程,如果两个进程具有相同长度,那么可以采用FCFS调度来处理。为最佳算法,具有最小的平均等待时间。但由于没办法知道下一个cpu区间的长度,所以不能再短期CPU调度层次上加以实现,一般会预测为以前CPU区间长度的指数平均。可能是抢占式的可能是非抢占式的。 3、优先级调度:SJF是优先级的一个特例,优先级为下一CPU区间的倒数。每个进程有一个优先级,CPU分配给最高的进程。可能是抢占式可能是非抢占式。会面临饥饿问题(无穷阻塞问题),低优先级的进程可能永不执行。可以通过老化来解决,即随着时间的增加,优先级会逐步变高 4、轮转式算法(RR):定义了一个时间单元(时间片),将就绪队列设计为循环队列(FIFO),时间片结束后,进程被抢占并放入就绪队列的最后重新参加调度。时间片是从进程开始执行后计算的,如果进程切换(中断或终止),则时间片重新开始计数。性能依赖于时间片的大小,如果很大则变为FCFS算法;如果很小则成为处理器共享,速度为真正处理器的1/n。时间片必须大于上下文切换的时间,而小于20%的CPU区间。 5、多级队列调度:将就绪队列分成几个相对独立的队列(前后台),每个队列有自己的调度算法,而队列之间必须有调度。通常采用固定优先权可抢占调度实现,每个队列与更底层队列相比有绝对的优先权,前台比后台有绝对的优先权。另一种可能在队列之间划分时间片,每个都有一定的CPU时间。进程不可以切换队列。 6、多级反馈队列调度:进程可以在队列之间切换的多级队列调度,可以根据不同CPU区间的特点以区分进程,需要确定进程如何升级,如何降级,以及在需要服务时应进入哪个队列。
四、多处理器调度 1、非对称多处理:一个处理器处理所有的调度决定、I/O处理以及其他系统活动,其他的处理器只执行用户代码。此时只有一个处理器访问系统数据结构。 2、对称多处理:每个处理器自我调度,所有进程可能处于一个共同的就绪队列中,或每个处理器有他自己的私有就绪进程队列。调度通过每个处理器检查共同就绪队列并选择一个进程来执行。此时多个处理器试图访问和更新一个共同数据结构。 3、处理器亲和性:避免进程从一个处理器转移至另一个处理器 ①、软亲和性:os具有让一个进程保持在同一个处理器上运行的策略,但不能做出保证。此时,进程是有可能在处理器之间移动的。 ②、硬亲和性:允许进程指定它不允许移至其他处理器上。 4、负载平衡:设法将工作服在平均地分配到系统的所有处理器上。仅是针对拥有自己私有的可执行进程的处理器,对于采用共同队列的则不需要,因为一旦空闲,他会立刻从共同队列中取走一个可执行进程。 5、对称多线程:通过提供多个逻辑处理器来实现运行多线程,也叫超线程。技术上是通过一个CPU有多组寄存器来实现的。 6、实时调度: ①、硬实时系统:在保证的时间内完成任务,进程提交时会告诉所需的I/O时间,如果能保证完成则允许运行,否则不行 ②、软实时系统:保证关键进程拥有更高的优先权,而实时进程的优先级不随时间下降,非实时进程会下降。 7、little公式:n(平均队列长度)=w(平均等待时间)*r(平均到达率)