OSIDP-多处理器和实时调度-10
多处理器调度
多处理器系统分类:
1.松耦合、分布式多处理器(集群):一系列相对自治的系统组成,每个处理器有属于自己的内存和I/O通道。
2.专用处理器:有一个通用的主处理器,专用处理器由主处理器控制并为它提供服务。
3.紧耦合多处理器:一系列共享同一内存并受 OS 完全控制的处理器组成。
粒度:
1.无约束并行性(independent parallelism):进程间没有显式的同步,每个进程都表示独立的应用或者作业。(为啥不是翻译为“独立”?= =)
2.粗粒度(coarse)和极粗粒度(very coarse)并行性:进程之间存在同步。
3.中粒度(medium-grain)并行性:应用程序按照进程中的一组线程实现,这组线程之间的合作和交互性更高。
4.细粒度(fine-grain)并行性:与线程并行相比,更复杂。具体是啥玩意,不知道。反正这个领域目前研究不成体系。(译者翻译的意思)
当所有处理器访问内存和I/O设备时从物理上来说是公平的情况下,最简单的调度策略是把所有处理器看作一个资源池。
静态分配:一个进程从创建到运行完成,完全由一个特定的处理器进行执行。
优点:调度开销较小。
缺点:一个处理器可能空闲,而其他处理器可能忙碌且相关队列积压很多的就绪进程等待执行。
主从式:OS 的核心功能在某个特定的处理器上运行,其他处理器可能仅执行用户程序。
缺点:主处理器失败导致整个系统失败;主处理器可能成为系统瓶颈。
对等式:OS 能在任何一个处理器上执行。
缺点:OS 的复杂性增加。
在多处理器系统中运行中粒度的应用程序时,要求每个处理器的利用率提高不是很重要,应用的平均性能的提高更重要。
在处理器系统中,相对简单的进程调度算法可能更有效,开销也较低。调度算法的选择不那么重要,使用FCFS或在静态优先级中使用FCFS即可。
一个应用程序的各个线程同时在各个独立的处理器中执行时,其性能会显著提升。
负载分配:系统维护一个全局就绪线程队列,处理器空闲时就从队列中选择一个线程执行。
优点:
1.当有工作可做时,没有处理器处于空闲状态。
2.不需要集中调度程序。
3.可以执行任意的调度算法。
缺点:
1.中心队列(central queue,具体什么玩意?是就绪线程队列吗?)占据了必须互斥访问的存储器区域。
2.被抢占的线程可能不在同一个处理器上恢复执行。
3.若所有线程被视为一个公共线程池,那么一个程序中的所有线程不可能同时访问处理器。
三种负载分配的调度算法
1.FCFS
2.最少线程数优先:一个作业包含的未调度线程的数量最少时,给它指定最高的优先级。该策略为非抢占式。
3.可抢占的最少线程数优先:和上述第2个算法一样,不过是可抢占式。
三种策略,FCFS效果最好。
组调度(gang scheduling):同时调度组成一个进程的一组线程。
优点:进程切换的开销最小;节省资源分配时间。
专用处理器分配:一种极端的组调度。一个应用程序被调度时,它的每个线程被分配给一个处理器,直到进程执行完成。
使用该方法原因:
1.多处理器中,单个处理器只占系统资源的一小部分,单个处理器的利用率不再是重要因素。
2.一个进程的生命周期中,避免进程切换可以加快执行速度。
对于专用处理器分配,为了提高性嫩,限制活跃线程的数量,使其不超过系统中处理器的数量。
多处理器系统中的处理器分配问题类似单处理器系统中的存储器分配问题。
动态调度:进程执行过程中可以动态改变该进程中线程的数量。
对于适用动态调度的应用程序,动态调度优于组调度和专用处理器分配。
缓存共享需要考虑因素:合作资源共享(多个线程访问相同内存区域)和资源抢占(独占内存区域)。
实时调度
实时计算:系统的正确性不仅取决于计算的逻辑结果,而且取决于产生结果的时间。
实时 OS 的需求:
1.可确定性:可以按照固定的、预先确定的时间或者时间间隔执行操作。
2.可响应性:获知中断后,OS 为中断提供服务的时间。
具体包括:最初处理中断并开始执行中断服务例程(ISR)所需的时间总量;执行ISR所需的时间总量;中断嵌套的影响。
3.用户控制:允许用户细粒度地控制任务的优先级。
4.可靠性。
5.故障弱化操作(fail-soft operating):系统在故障时尽可能多地保存其性能和数据的能力。
实时 OS 常见功能:
1.使用优先级更严格。
2.中断延迟相对较短。
3.时许特征更精确、更可预测。
实时调度算法:
1.静态表调度法:分析任务的到达时间、执行时间、优先级等信息确定任务何时执行。适用周期性任务。
2.静态优先级抢占调度法:基于优先级的抢占式调度。
3.基于动态规划的调度法:一个任务已到达但未执行时,尝试创建一个包含前面被调度的任务和新达到的任务的调度。
4.动态尽力调度法:一个任务到达时,系统根据任务特性指定一个优先级。优点是易于实现。
调度需要的信息:
1.就绪时间:任务开始准备执行时的时间。
2.启动最后期限:任务必须开始的时间。
3.完成最后期限:任务必须完成的时间。
4.处理时间:从执行任务到完成任务所需的时间。
5.资源需求:任务在执行过程中需要的除处理器之外的资源。
6.优先级:度量任务的相对重要性。
7.子任务结构:一个任务可分解为一个必须执行的子任务和一个可选执行的子任务。
速率单调调度(rate monotonic scheduling, RMS):任务的周期越短,其优先级越高。
优先级反转(priority inversion):系统环境迫使一个较高优先级的任务等待一个较低优先级的任务。
解决方法:
优先级继承:优先级较低的任务继承任何一个与其共享同一资源的优先级较高任务的优先级。
优先级置顶:优先级与每个资源相关联,资源的优先级被设定为比使用该资源的具有最高优先级的任务的优先级高一级。
OSIDP-多处理器和实时调度-10的更多相关文章
- Linux进程管理 (9)实时调度类分析,以及FIFO和RR对比实验
关键词:rt_sched_class.SCHED_FIFO.SCHED_RR.sched_setscheduler().sched_setaffinity().RR_TIMESLICE. 本文主要关注 ...
- Linux进程管理 (7)实时调度
关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...
- 在Android中使用实时调度(real-time)
Linux的线程调度策略中有FIFO和RT的实时调度方法,但是在Android中做了限制,普通用户不能修改线程的调度算法为FIFO和RT,必须ROOT用户才能更改.但问题是程序是以普通用户启动和运行的 ...
- 【原创】(六)Linux进程调度-实时调度器
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- 机械师实时调度示例(I) - 实时规划
OptaPlanner创办人Geoffrey De Smet及其团队,在Red Hat 技术峰会上主题会场上,演示了一个通过OptaPlanner实现实时规划与调度的示例.Geoffrey及其团队专门 ...
- Python之实时调度任务
过了年就开始面临毕业了,毕业季是幸福的,但也是紧迫的.2月已过就开始着手策划毕业论文了,一直到现在,论文基本完成了,感觉过去的一个半月的时间,对自己过去2年在实验室所学又温习了一遍.书到用时方恨少,在 ...
- Springmvc中配置Quartz使用,实现任务实时调度。
菜鸡的自我修炼,第一次接触quartz,做个记录.-------jstarseven 最近在项目中,第一次在springmvc中配置实用quartz,深刻的感受到quartz带来的方便,顺手做个记录. ...
- 操作系统概念学习笔记三 cpu调度算法
一 基本概念 1 队列中的记录通常是进程的进程控制块. 2 CPU调度决策可在如下四种环境下发生 a 当一个进程从运行状态切换到等待状态 例如,I/O请求或调用wait以等待一个子进程的终止 b 党一 ...
- OS之进程管理---实时CPU调度
引言 一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system).软实时系统不保证会调度关键实时进程,而只保证 ...
- OS之进程管理---多处理器调度
引言 之前我们所学习的操作系统进程调度策略的前提条件是单处理器系统下的CPU调度程序.如果系统中存在多个CPU,那么负载分配就成为可能,但是相应的调度问题就会更加复杂. 多处理器调度方法 对于多处理器 ...
随机推荐
- 攻防世界-fileinclude
一道简单的文件包含题目,源代码如下 一.代码分析 此题中关键代码为 分析此处代码可知,$lan的值是cookie中language所对应的值,当该值不为english时,会将$lan的值与.php字符 ...
- 初识Node
Node的定义:一个搭建在Chrome JavaScript运行时上的平台,用于构建高速.可伸缩的网络程序. Node构建与JS之上,在服务器端,Node使用V8虚拟机,执行的是本地机器码,省去了 ...
- Zookeeper ZAB协议
这篇博客是从源码的角度了解Zookeeper 从接收客户端请求开始,到返回数据为止,有很多涉及到的对象创建因为在前几篇文章已经说明过了,这里就不再重复的说明了,如果不是很明白的的,可以先看前几篇博文了 ...
- 把userId:12323 直接拿到12323
JSONObject jsonObject1 = JSONObject.parseObject(mqttMessage); MessageVo messageVo = JSONObject.toJa ...
- redis常用命令之Hash
redis常用命令之Hash Hash常用命令 redis 可以理解为一个全局的大字典,key就是数据的唯一标识符.对应的key不同,value也不同.redis有5个基本的数据类型. 1 redis ...
- Promise的几个方法解析
Promise.all 此方法在集合多个 promise 的返回结果时很有用. 输入的promise中只要有一个reject,即进入reject,否则会进入then 完成(Fulfillment):在 ...
- [jQuery]z-index属性大于0的元素使用fadeIn无法正常过渡的问题
rt 问题记录. 尝试使用$(' ').animate({ opacity: 1 }) 会出现相同的问题. 可能是opacity动画与z-index无法兼容(?) 最后的处理方式是改变元素渲染顺 ...
- 2022-3-18内部群每日三题-清辉PMP
1.在评估项目活动现状的会议中,团队发现存在一些影响可交付成果的风险.项目经理应该怎么做? A.跟踪已发现的风险,识别和分析新风险,并评估整个项目的风险过程有效性 B.记录风险管理信息用于经验教训 C ...
- freertos 启动任务调度器后卡在svc 0,汇编停在了0x0800014A E7FE B 0x0800014A
分别引导加载程序和应用程序(带有或不带有FreeRTOS)都可以正常工作. 引导加载程序和应用程序(无需FreeRTOS)可以完美运行. 但是,如果我在应用程序中使用freeRTOS并完成两项任务(显 ...
- python_列表(list)
列表用中括号表示,列表中的数据可以存储不同类型的数据,在实际开发中,列表中都是定义相同类型数据,可以对列表中的数据用相同的方法进行处理. 1, 通过index获取到对应的值. num_list = [ ...