热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

OS十、多处理器和实时调度

思维导图:静态分配:所有进程进入一个全局队列,然后分配到任何一个可用的处理器中。缺点:一个处理器可能很忙,堆积

思维导图:

静态分配:所有进程进入一个全局队列,然后分配到任何一个可用的处理器中。
缺点:一个处理器可能很忙,堆积了很多工作,其余进程缺很空闲
动态分配:线程可以在不同处理器对应的队列之间转移(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;优先级返回到以前的值


推荐阅读
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 本文深入探讨了 Python 列表切片的基本概念和实际应用,通过具体示例展示了不同切片方式的使用方法及其背后的逻辑。 ... [详细]
  • 本文详细介绍了K-Medoids聚类算法,这是一种基于划分的聚类方法,适用于处理大规模数据集。文章探讨了其优点、缺点以及具体实现步骤,并通过实例进行说明。 ... [详细]
  • 本文探讨如何利用人工智能算法自动区分网页是详情页还是列表页,介绍具体的实现思路和技术细节。 ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • MATLAB实现n条线段交点计算
    本文介绍了一种通过逐对比较线段来求解交点的简单算法。此外,还提到了一种基于排序的方法,但该方法较为复杂,尚未完全理解。文中详细描述了如何根据线段端点求交点,并判断交点是否在线段上。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
author-avatar
默默追寻爱情
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有