作者:默默追寻爱情 | 来源:互联网 | 2023-09-12 11:34
思维导图:
静态分配:所有进程进入一个全局队列,然后分配到任何一个可用的处理器中。
缺点:一个处理器可能很忙,堆积了很多工作,其余进程缺很空闲
动态分配:线程可以在不同处理器对应的队列之间转移(linux)
主从式:核心功能在某个特定的处理器上运行,其他处理器仅用于执行用户程序
对等式:操作系统可以在任何一个处理器中执行,每个处理器可以在进程池中进行自调度
在单个处理器上使用多道程序设计:对于运行在多处理器系统中的中等粒度应用程序,当多个处理器可用时,每个处理器尽可能的忙碌就不那么重要了,我们更应当关注如何为应用提供最好的平均性能
进程分派:不同于使用单处理器调度时,基于优先级或历史的高级调度算法可以提高性能,多处理器调度相对简单的算法可能更有效
进程调度:结论:对于多处理器,调度原则的选择没有单处理器中显得重要,对于性能提升不大,使用简单的FCFS原则就足够了
四种方法:
1.负载分配:系统维护一个就绪队列的全局队列,每个处理器只要空闲就从队列中选择一个进程
优点:负载均匀的分布在各个处理器上,确保没有处理器是空闲的
缺点:1.中心队列占据了必须访问的存储区域,当有几十个或几百个处理器同时进行查找工作时,可能出现瓶颈
2.被抢占的线程可能不在同一个处理器上恢复执行
3.所有线程被视为一个公共线程池,一个进程的所有线程不可能都同时获得对处理器的访问,如果一个进程的线程间需要高度合作,则所涉及的进程切换会严重影响性能
三种不同的负载分配方案:1.先来先服务(FCFS):线程到达时进入队列末尾,每次首部的就绪线程进入处理器
2.最少线程数优先:共享就绪队列被设置成一个优先级队列,未调度线程数最少的进程会被指定最高优先级
3.可抢占的最少线程数优先:刚到达的作业如果线程数目更少,可以抢占正在执行的进程的线程
2.组调度:定义:同时在一组处理器上调度一个进程的一组线程
优点:关联紧密的进程并行执行,同步阻塞可能会减少,进程切换的开销小,性能提高
3.专用处理器分配:一个进程的所有线程被分配给同一个处理器
原因:1.当处理器数目非常多时,单个处理器利用率高低并不重要
2.一个程序的运行周期中,避免进程切换回加快程序的速度
4.动态调度:操作系统的作用在于分配处理器给程序,作业将它的一部分可运行任务映射到线程,使用当前划分给它的处理器执行这些任务
可确定性:按照固定的、预先确定的时间或时间间隔执行操作,关注的是系统获知中断之前的延迟
可响应性:关注的是系统知道中断之后os为中断提供服务的时间
用户控制:在实时系统中,允许用户细粒度的控制任务优先级是必不可少的
可靠性:在实时系统中,不同于非实时系统,暂时故障可以通过重启等方式解决,实时系统性能的损失或降低可能带来灾难性地后果,如资金损失
故障弱化操作:一个重要特征是稳定性,即不能满足所有任务的最后期限时,首先满足优先级最高的任务的最后期限
静态表调度:适用于周期性的任务,该分析的输入为周期的执行时间,优先级等,调度使满足所有周期性任务的要求。此方法可预测,但是不够灵活
静态优先级抢占调度:给任务指定静态优先级,且可抢占
基于动态规划调度:新任务到达时,如果满足它的最后期限且之前调度的任务也不会错过它的最后期限,则修改这个调度以适应新任务
动态尽力调度:指定优先级,并使用某种形式的实现调度
完成最后期限:当一个完成最后期限更早的线程到达时,优先进行最早完成最后期限的线程,允许抢占,在该任务结束后,再接着执行之前进行到一半的任务
启动最后期限:优先完成启动最后期限最早的任务
速率单调调度:最短周期的任务具有最高优先级,速率最低的任务优先级最低,所以为单调
n个任务的任务周期T和执行时间C&#xff0c;满足&#xff1a;C1/T1&#43;C2/T2&#43;…Cn/Tn<&#61;1
1.优先级继承&#xff1a;优先级较低的任务继承任何与它共享同一个资源的优先级较高的任务的优先级&#xff0c;当高优先级的任务在资源阻塞的时候&#xff0c;优先级立即更改&#xff08;为较高优先级&#xff09;&#xff0c;当资源被较低优先级的任务释放时&#xff0c;这个改变结束。
2.优先级置顶&#xff1a;优先级与每个资源相关联&#xff0c;资源的优先级被设定为比使用该资源的具有最高优先级的用户的优先级高一级&#xff0c;然后动态的调度这个优先级分配给任何访问该资源的任务&#xff0c;一旦任务使用完资源&#xff0c;优先级返回到以前的值