热门标签 | 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;优先级返回到以前的值


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文讨论了读书的目的以及学习算法的重要性,并介绍了两个算法:除法速算和约瑟夫环的数学算法。同时,通过具体的例子和推理,解释了为什么x=x+k序列中的第一个人的位置为k,以及序列2和序列3的关系。通过学习算法,可以提高思维能力和解决问题的能力。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
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社区 版权所有