支持多核处理器的RTOS
STM微控制器的实时操作系统(RTOS)支持情况

STM微控制器的实时操作系统(RTOS)支持情况随着嵌入式系统的广泛应用和需求的不断增长,实时操作系统(RTOS)在微控制器领域中扮演着重要的角色。
STM微控制器作为一种常用的嵌入式系统解决方案,其对实时操作系统的支持情况也备受关注。
本文将探讨STM微控制器在实时操作系统方面的支持情况,并介绍一些常见的RTOS选择。
一、STM微控制器的RTOS支持在STM微控制器中,STMicroelectronics公司提供了多种实时操作系统的支持,以满足不同应用需求。
以下是几个常见的RTOS选择。
1. FreeRTOSFreeRTOS是一款免费、开源的实时操作系统,广泛应用于STM32系列的微控制器。
它具有高度的可移植性和灵活性,提供了多任务调度、时间片轮转、信号量、消息队列等功能,使开发者能够方便地构建稳定的实时系统。
2. RT-ThreadRT-Thread是一款轻量级的实时操作系统,适用于资源有限的嵌入式系统。
在STM微控制器上,RT-Thread提供了简洁而强大的功能,包括多任务管理、内存管理、设备驱动等,适合对内存和处理器要求较低的应用场景。
3. uC/OS-II和uC/OS-IIIuC/OS-II和uC/OS-III是基于优先级的实时多任务内核,由Micrium公司开发。
这两个RTOS提供了稳定可靠的内核,适用于需要高度可预测性和可扩展性的应用。
在STM微控制器上,可以使用uC/OS-II和uC/OS-III构建实时系统。
以上仅是几个常见的RTOS选择,实际上还有许多其他RTOS也支持STM微控制器。
开发者可以根据具体需求和应用场景选择适合的RTOS。
二、如何选择适当的RTOS在选择适当的RTOS时,需要考虑以下几个因素:1. 系统要求:根据具体的应用需求,评估对实时性、功耗、可扩展性等方面的要求。
不同的RTOS在这些方面的性能可能存在差异。
2. 开发者经验:考虑开发者对不同RTOS的熟悉程度。
freertos 讲解

freertos 讲解**FreeRTOS讲解******FreeRTOS是一个开源的实时操作系统,广泛应用于嵌入式系统。
在本文档中,我们将深入探讨FreeRTOS的核心特性、优势及应用场景,帮助您全面了解这一强大的操作系统。
**一、FreeRTOS简介**FreeRTOS是一个免费的实时操作系统,由Real Time Engineers Ltd.维护。
它遵循MIT开源协议,可以免费用于商业和非商业项目。
FreeRTOS支持多种硬件平台,如ARM、AVR、MSP430等,具有高度可扩展性和模块化特点。
**二、FreeRTOS核心特性**1.任务管理:FreeRTOS采用基于优先级的任务调度算法,支持多任务并发执行,确保高优先级任务能够及时获得处理器资源。
2.时间管理:FreeRTOS提供了精确的时间管理功能,包括定时器、延时函数等,以满足实时性要求。
3.内存管理:FreeRTOS提供了动态内存分配和回收机制,支持堆内存管理,以满足不同任务的内存需求。
4.通信机制:FreeRTOS支持多种通信机制,如信号量、互斥量、消息队列等,用于任务间的同步和数据传递。
5.中断管理:FreeRTOS允许在中断服务程序中调用操作系统服务,提高了中断处理的实时性。
6.可扩展性:FreeRTOS支持多种硬件平台,用户可以根据需求添加或删除功能模块,实现高度定制化。
**三、FreeRTOS优势**1.开源免费:FreeRTOS遵循MIT协议,可以免费使用,降低了开发成本。
2.实时性:FreeRTOS具有优异的实时性能,能够满足各种实时性要求较高的应用场景。
3.跨平台:FreeRTOS支持多种硬件平台,方便开发者进行跨平台开发。
4.易用性:FreeRTOS提供了丰富的API接口,易于学习和使用。
5.社区支持:FreeRTOS拥有庞大的开发者社区,可以获得丰富的技术支持和资源。
**四、FreeRTOS应用场景**1.嵌入式系统:FreeRTOS广泛应用于嵌入式领域,如智能家居、工业控制、医疗设备等。
基于Cortex M3处理器的RTOS研究与设计

基于Cortex M3处理器的RTOS研究与设计随着科学技术的发展,越来越多的嵌入式产品开始融入到人们的生活中,多任务的要求使得嵌入式实时操作系统技术变成嵌入式研究焦点。
现在市面上知名的嵌入式实时操作系统几乎都是由国外公司开发的。
而且国外实时系统一般价格昂贵,各项特性也难以满足大众需求,因地域、语言原因,技术支持也多有不便。
因此,对嵌入式实时系统的研究有着重要的意义。
本文在研究国内外现有的嵌入式实时操作系统内核的基础上,结合CortexM3处理器的特性,设计了一款功能齐全的实时操作系统内核CoOS,具有如下特性:针对Cortex M3系列微控制器设计的实时系统内核;支持优先级抢占和时间片轮转两种调度方式;零中断延迟时间;高度可裁剪性;支持信号量、事件标志、互斥体、邮箱、队列五种同步与通信方式;支持堆栈溢出检测。
本设计从最核心的任务调度开始设计整个系统,包括底层实现、调度模块等,并进行单元测试。
测试通过后,再逐步添加时间管理、同步与通信方式以及存储管理到整个系统中,并进行单元测试和集成测试。
经过测试以及修改,目前系统能够稳定运行。
系统的任务调度和中断正常,达到了设计目标。
本文从处理器架构分类开始,首先简单介绍了Cortex M3处理器的特性和国内外的一些RTOS发展现状,并给出CoOS的设计目标。
其次介绍了Cortex M3处理器与RTOS密切相关的一些部件,包括寄存器、指令集、工作模式、特权等级、堆栈设置、嵌套向量中断控制器等模块,为后面CoOS的设计与实现奠定理论基础。
然后详细地介绍了实时系统内核的设计与实现,主要包括:任务管理、时间管理、同步与通信机制、存储管理等,并给出了各个模块测试方法以及集成测试方法,并分析了CoOS具备的几大特性,包括实时性、安全性、可移植性、可裁剪性等,给出了CoOS与目前两种主流RTOS 的性能对比。
最后给出了一个STM32设备上基于CoOS多任务应用程序设计的实例。
QNX 产品介绍 2012版

动力科技公司一览
1980 1984 1985 1990 1997
第一个商业化的真正微内核实时操作系统(Neutrino) 第一个(也是唯一)带有分布式处理的实时操作系统 第一个内存空间受保护的实时操作系统 第一个通过POSIX认证的微内核实时操作系统 第一个支持对称多重处理(多核)的实时操作系统
技术创新基地
Peripheral I/O • PCI / PCIe • I2C / I2S • SPI • GPIO • UART • USB
传统单片式内核架构
• 系统内核空间中运行了很多系统组件 • 任一模块或组件的出错都会导致整个系统出 错或崩溃
App
App
App
File system
Network stack
QNX软件系统公司
• 实时嵌入式技术的全球领军者 • 32年的操作系统创新设计 • 全球范围数以百万计的客户 • ISO9001:2000认证 • 大量通过验证的应用 • 技术领先性保证产品不仅适应现在的市场还可以适应未来的市场 • 高可靠性和高扩展性的市场声誉 • QNX 新的客户产品策略 –透明软件模式(Hybrid Software Model)
QNX 自适应分区技术
• 当CPU重载时根据分区预算进行调度 • 不同分区中的组件间的通信无需额外的IPC • 通过动态分配空闲时间片保证CPU的最大使用率 • 分区可以随时改变无需改变资源
Idle CPU cycles with fixed-time partitioning can’t be utilized
Without adaptive partitioning, a ‘hang’ in one process results in CPU starvation of other processes
实时系统中的实时操作系统选择与比较(七)

实时系统中的实时操作系统选择与比较引言:实时系统是指对时间要求非常严格的计算机系统,特别是对于任务的响应时间有严格要求的系统。
这些系统常见于航空航天、自动控制、工业控制等领域。
为了满足实时系统的需求,选择适合的实时操作系统是至关重要的。
本文将从实时性、可靠性、性能和适用环境四个方面进行分析和比较。
一、实时性:实时操作系统的核心特点就是保证任务的实时性。
硬实时是指对任务的响应时间有严格的时间限制,一旦错过了截止时间,可能会导致系统故障。
软实时是指对任务的响应时间有一定的限制,但是可以容忍一定的延迟。
1. 实时性要求高的系统:VxWorksVxWorks是一款被广泛应用于嵌入式实时系统的操作系统。
它具有高度可靠性和精确的任务调度机制,可以满足硬实时系统的要求。
VxWorks采用微内核架构,具有优秀的实时性能和可扩展性,适用于复杂实时任务的处理。
2. 实时性要求中等的系统:FreeRTOSFreeRTOS是一款开源的实时操作系统,适用于中小型嵌入式系统。
它具有较好的实时性能和低延迟,可以满足软实时系统的要求。
FreeRTOS采用可抢占式调度算法,支持多任务并发执行,适合处理简单的实时任务。
二、可靠性:实时系统对于任务的可靠性要求很高,要能够在各种不确定的环境下保证任务的正确性。
1. 可靠性要求高的系统:QNXQNX是一款广泛应用于工业控制和汽车电子领域的实时操作系统。
它具有高度的可靠性和容错能力,可以有效防止系统崩溃。
QNX采用微内核架构,通过进程间通信实现任务的隔离,从而保证系统的稳定性和可靠性。
2. 可靠性要求中等的系统:uC/OS-IIuC/OS-II是一款常用于嵌入式实时系统的实时操作系统。
它具有较好的可靠性和高可移植性,适用于中小型实时系统的开发。
uC/OS-II采用事件驱动的任务调度方式,可以方便地处理实时任务的同步与通信。
三、性能:实时系统对于性能的要求取决于任务的复杂度和响应时间限制。
嵌入式系统中的RTOS技术研究与应用

嵌入式系统中的RTOS技术研究与应用嵌入式系统是指嵌入到其他设备中的计算机系统,其应用范围非常广泛,例如汽车、家电、智能穿戴设备、医疗设备等。
要实现这些嵌入式系统,需要一种能够高效、可靠地管理硬件资源、处理任务的操作系统,这就是实时操作系统(RTOS)。
本文将从RTOS技术的起源、特点、应用场景以及常用的RTOS之一FreeRTOS的详细介绍等方面进行深入探究。
一、RTOS技术的起源RTOS起源于20世纪50-60年代,“实时”是指在特定的时间内,系统对输入做出反应,并且在此时间内必须完成处理任务。
1962年,世界首个RTOS Real-time executive (RTE)诞生,这个系统是由Masscomp公司的Michael Baraban所开发的。
1980年代开发出来的VxWorks,它可以用于高端工业应用,成为工控领域很多公司的选择。
之后又有uc/OS、FreeRTOS、微软CE、嵌入式Linux等RTOS出现。
二、RTOS技术的特点RTOS的特点主要体现在以下几个方面:1.实时型:RTOS能够提供真正实时性能。
2.多任务能力:RTOS能够在系统中执行多个任务,并且保证每个任务的执行时间和优先级。
3.资源管理:RTOS能够有效地管理硬件资源和各种外设。
4.可靠性:RTOS的稳定性和可靠性在嵌入式系统中非常重要。
三、RTOS技术的应用场景1.汽车嵌入式系统:现代汽车嵌入式系统需要实时处理数据,包括传感器数据、控制器信息、安全信号等,这就需要RTOS完成实时的处理和控制。
2.医疗嵌入式系统:嵌入式设备在医疗设备中的应用越来越广泛,例如医疗监测设备、手术机器人等,这些设备需要进行高速数据处理及实时控制等操作,这时就需要RTOS来保证设备的稳定性和实时性。
3.智能家居:智能家居需要实现各种功能,如自动化控制、防盗报警、可视化监控等,而这些功能需要通过嵌入式系统来实现,并通过RTOS来进行实时处理。
2024年度实时操作系统RTOS培训
对编写好的驱动进行测试和验证,确保其正 确性和稳定性。
25
设备驱动调试技巧
2024/2/2
调试工具介绍
01
介绍常用的RTOS设备驱动调试工具,如调试器、仿真器等。
调试方法
02
说明设备驱动调试的一般方法,包括断点设置、单步执行、变
量查看等。
问题定位与解决
03
针对常见的问题,如驱动崩溃、死锁等,给出定位和解决的方
制定补丁管理和更新策略,确保RTOS系统 及时获得最新的安全补丁和功能更新。
2024/2/2
安全漏洞应急响应机制
建立安全漏洞应急响应机制,对突发的安全 事件进行快速响应和处理。
37
08
RTOS发展趋势与未来挑战
2024/2/2
38
物联网时代对RTOS需求变化
连接性需求增加
物联网设备需要与其他 设备和云端进行高效、 稳定的连接,要求 RTOS提供强大的网络 通信功能。
中断分类
根据来源可分为硬件中断和软件中断;根据处理方式可分为可屏蔽中断和不可 屏蔽中断;根据优先级可分为高、中、低等级别。
2024/2/2
19
中断处理流程
中断响应
当CPU检测到中断请求信号时, 会暂停当前任务,保存现场信息 ,并跳转到相应的中断处理程序
。
2024/2/2
中断处理
中断处理程序会根据中断类型进行 相应的处理,如读取传感器数据、 发送数据到外设等。
优化策略
根据系统负载和任务特性,动态调整 调度策略和任务优先级,提高系统实 时性和响应速度。
12
03
RTOS内存管理机制
2024/2/2
13
内存分区与分配策略
2024版实时操作系统RTOS培训课件
动态内存分配策略实现
首次适应算法
从内存池起始位置开始查找,选 择第一个满足需求的空闲内存块。
实现简单,但可能导致内存碎片 问题。
最佳适应算法
搜索整个内存池,选择大小最接近 需求的空闲内存块。减少了内存浪 费,但可能导致过多的内存碎片。
最差适应算法
选择最大的空闲内存块进行分配。 减少了内存碎片的产生,但可能导 致较大的内存浪费。
RTOS在汽车电子领域应用
阐述RTOS在汽车电子领域的应用,如汽车控制系统、车载信息娱 乐系统等,并介绍相关案例。
其他领域应用
简要介绍RTOS在其他领域的应用,如工业自动化、医疗设备、航 空航天等。
挑战与机遇
技术挑战
分析未来嵌入式系统中RTOS面临的技术挑战,如多核处理器支 持、低功耗设计、安全性保障等。
一种进程间通信方式,允许不同进程将消息发送至队列,并由其他进程从队列中接收消 息,实现进程间的数据交换。
共享内存(Shared Memory)
允许多个进程访问同一块内存空间,通过读写共享内存实现进程间的数据交换和通信。
进程同步方法讲解
互斥锁(Mutex)
一种同步机制,用于保护共享资源,确保同一时间只有一个进程可以访问共享资源。
市场机遇
探讨RTOS在未来嵌入式系统中的市场机遇,如物联网、边缘计 算等新兴领域的发展带来的需求增长。
发展趋势预测
预测未来RTOS在嵌入式系统中的发展趋势,如微内核架构、虚 拟化技术、人工智能融合等方面的技术创新。
系统稳定性
不恰当的中断和异常处理可能 导致系统崩溃或数据丢失。
完善中断和异常处理,提升系统稳定性
优化中断和异常处理流程
减少不必要的上下文切换和内存访问,提高处理效率。
RTOS介绍
四、RTOS在UPS中的应用
1.RTOS kernel在程序系统中的位置
Task1 Inter- task com : Inter- message : sem ortask com sem or message queue( Event) queue( Event) Task3 Event Event and inter-and face inter- face
一、什么是RTOS
RTOS是实时多任务操作系统 Real-Time Operation System的缩写 RTOS是一个程序内核
典型的单片机程序在程序指针复位后,首先进行堆栈、中断、中断向量、定时器、串 行口等接口设置、初始化数据存储区和显示内容,然后就来到了一个监测、等待或空 循环,在这个循环中,CPU可以监视外设、响应中断或用户输入。 这段主程序可以看作是一个内核,内核负责系统的初始化和开放、调度其它任务,相 当于C语言中的主函数。 RTOS就是这样的一个标准内核,包括了各种片上外设初始化和数据结构的格式化,不 必、也不推荐用户再对硬件设备和资源进行直接操作,所有的硬件设置和资源访问都 要通过RTOS核心。硬件这样屏蔽起来以后,用户不必清楚硬件系统的每一个细节就可 以进行开发,这样就减少了开发前的学习量。 一般来说,对硬件的直接访问越少,系统的可靠性越高。RTOS是一个经过测试的内核, 与一般用户自行编写的主程序内核相比,更规范,效率和可靠性更高。 另外,高效率地进行多任务支持是RTOS设计从始至终的一条主线,采用RTOS管理系 统可以统一协调各个任务,优化CPU时间和系统资源的分配,使之不空闲、不拥塞。 针对某种具体应用,精细推敲的应用程序不采用RTOS可能比采用RTOS能达到更高的 效率;但是对于大多数一般用户和新手而言,采用RTOS是可以提高资源利用率的,尤 其是在片上资源不断增长、产品可靠性和进入市场时间更重要的今天。
VxWorks和QNX的多核处理器策略
VxWorks
VxWorks 是美国 Wind River System 公司( 以下简称风河 公司 ,即 WRS 公司)推出的一个实时操作系统。 VxWorks操作系统有以下部件组成: VxWorks操作系统有以下部件组成: 内核(wind): 内核(wind): 多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的 分时间片调度)任务间的同步 进程间通信机制 中断处理 定时器和内存管理机制 I/O 系统 VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包 括 UNIX 标准的Basic I/O(creat(), remove(), open(),close(), read(), write(), 标准的Basic I/O( and ioctl().),Buffer I/O (fopen(), fclose(), fread(), fwrite(), getc(), putc()) ioctl().),Buffer 以及POSIX 以及POSIX 标准的异步 I/O。VxWorks 包括以下驱动程序:网络驱动、 I/O。 管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、 管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、 并口驱动等
VxWorks6.8版本 VxWorks6.8版本
VxWorks是风河推出的高性能、高可靠性商用级实时操作系统,满 VxWorks是风河推出的高性能、高可靠性商用级实时操作系统,满 足了嵌入式系统的多样性需求,并且历经了市场的长期考验。全新推 出的VxWorks6.8具备增强的系统性能、更小的空间占用和更高的硬件 出的VxWorks6.8具备增强的系统性能、更小的空间占用和更高的硬件 平台灵活性。作为风河最新版本的VxWorks平台,VxWorks6.8还可提 平台灵活性。作为风河最新版本的VxWorks平台,VxWorks6.8还可提 供多种灵活的多核架构供用户选择,以便客户能够根据自己的需求选 用最适合的解决方案。此外,VxWorks6.8还提供了改进的操作系统原 用最适合的解决方案。此外,VxWorks6.8还提供了改进的操作系统原 语(OS primitive)、USB支持和文件系统性能等,可更加有效地帮助 语(OS primitive)、USB支持和文件系统性能等,可更加有效地帮助 客户提高产品质量、改善产品兼容性、提升产品性能。 风河VxWorks产品事业部市场与战略副总裁MarcBrown表示:“ 风河VxWorks产品事业部市场与战略副总裁MarcBrown表示:“风 河长期持续在VxWorks方面的研发投资,为各个行业市场提供了久经 河长期持续在VxWorks方面的研发投资,为各个行业市场提供了久经 验证、值得信赖的嵌入式系统解决方案,特别是提供了多核设备的支 持。在每个版本VxWorks的发布中,风河都持续不断地改进系统性能, 持。在每个版本VxWorks的发布中,风河都持续不断地改进系统性能, 扩展硬件支持,有力地支持了新一代设备软件的实现。VxWorks6.8进 扩展硬件支持,有力地支持了新一代设备软件的实现。VxWorks6.8进 一步展示了风河在提供领先嵌入式系统综合解决方案方面的成就。” 一步展示了风河在提供领先嵌入式系统综合解决方案方面的成就。”
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
支持多核处理器的RTOS的关键技术 1、体系结构 支持多核处理器的OS可能有几种结构:主从结构、粗加锁方式、细加锁方式。 (1)主从结构:修改一个OS内核使其支持多处理器系统的最简单的方法,是将整个OS视为一个不可分割的整体,并限定所有内核模式的操作均运行于同一个处理器(即主处理器)上,而另一个处理器(即从处理器)只用来执行用户模式的操作,这样得到的软件结构就不再是对称的。 系统维持两个队列:一个用来管理申请在主处理器上执行的任务,另一个用来管理申请在任意一个从处理器上执行的任务,都必须由旋转锁保护。只有大多数任务都以用户模式运行时,这种结构才能体现其优越性。 (2)粗加锁结构:是将整个OS当作一个由旋转锁保护的整体单片电路,但又不会将内核模式的操作局限在某一个特定的处理器上。 任何一个要求内核模式操作的任务都可以获得粗加锁,并且继续在它正在使用的处理器上运行。但在某个特定的时刻,这种内核模式的操作仍然只能在某一个处理器上运行。当某项任务占用着粗加锁时,其它所有等待获得内核服务的任务都只能空闲。 粗加锁的问题在于如果有几个任务都在等待获得内核服务,那么这些任务将像在单处理器系统中一样一个接一个地连续运行。 (3)内核细加锁:设计内核细加锁(fine-grained locking)结构的目的是为了让不同处理器上运行的任务能够同时执行内核模式操作,采用这种结构的内核叫做线程化内核(threaded kernel),这是通过对不同的内核子系统分别采用旋转锁来实现的,以便企图访问这些子系统的任务能够并发执行。 加锁机制的粒度(granularity)决定了最大可并发执行的内核线程数。 2、系统引导和初始化 OS的引导和初始化是指从系统加电到能够在多个处理器内核间平等地进行任务调度的过程,是建立平等调度实施的基础。虽然说SMP系统中,各处理器可以平等地并行工作,但这是建立在系统有多个可并行执行任务的基础上;而在引导和初始化过程中,由于很多工作只能串行执行,在这个阶段处理器内核是不平等的,有主次之分。系统加电后,受到硬件控制,只启动其中一个处理器,称为主CPU或引导处理器(Booting Processor,BP),而其它处理器称为次CPU或应用处理器(Application Processor,AP),处于停机等待状态。 加电启动后,主CPU跳转到特定的内存地址(复位地址),通常映射到只读存储器,保存着整个计算机的引导程序(Bootloader),其任务是进行简单的硬件检测、初始化环境参数、将OS内核装载到内存中,跳转到OS的起始地址(这是在哪里呢,类似于NiosII Boot中的_start,.text段的入口地址)开始并执行。这段引导过程完全由BP完成。 进入OS内核后,BP需要进行最初的草创性工作,完成运行环境准备、各种初识状态设置、基本读写数据段清零、Bootloader传递过来的各种环境参数保存、内存栈的开辟及栈指针、全局指针设置,前面这部分工作全部由底层汇编代码完成(_start至alt_main()之间的代码),之后BP跳转到由高级语言编写的函数,开始第二个阶段CPU本身的初始化(alt_main()函数)。 在CPU初始化过程中,BP首先自检,收集CPU相关的指令集、存储管理、高速缓存及协处理器等基本信息,接着为AP准备运行环境,同时为AP准备一个锁,之后唤醒AP,AP转入主CPU设置好的地址,开始锁测试而进入等待状态。唤醒AP后,BP输出自身信息后,继续进行内存等各种资源的初始化。 接下来的工作主要有BP进行开发板及外部设备初始化,之后准备用于所有CPU的空闲进程,这是一个不参与调度的进程。当某个CPU没有需要执行的任务,就转入这个进程。准备好空闲进程后,由BP解除对AP的锁,各AP逐个启动,进行各种关于各自CPU的初始化,将自身的状态填写到适当的数据结构,最后相继进入空闲状态。 所有的AP都完成初始化并进入空闲状态后,由BP来完成整个系统最后阶段的初始化,并执行系统的第一个进程,之后真正步入SMP环境,所有的CPU进入正常、平等的调度。 3、进程调度 在CMP结构中,调度机制的重点在于更好地满足多处理机并行性上,核心思想是通过降低CPU间调度竞争和选择下一个运行进程的开销,以及提高系统整体负载平衡的能力,从而大幅度提高多处理机系统的执行效率。 (1)调度算法:在支持CMP的OS中,每个CPU维护一个自己的就绪进程队列,称为局部任务队列。就绪进程按时间片是否用完分为active和expired两大类,active类包括那些时间片没用完、当前可被调度的就绪进程,expired类包括那些时间片已用完的就绪进程。同时,每类中的进程按照其优先级的不同处于不同的优先级链表中。 调度时,active队列中非空的最高优先级链表的第一项被作为候选进程,使得选择下一个运行进程的操作可在固定时间内完成;同时内核建立了位映射数组对应每一个优先级链表,使用标志位极大降低了寻找非空链表的时间。 当一个进程耗尽其时间片后,内核重新计算它的优先级,并把它放置在expired队列的相应优先级链表中。当active队列中没有可调度进程时,内核简单地对调active和expired队列,将原来的expired队列作为新的active队列后即可进行新一轮调度。 此调度算法选择下一个运行进程的时间复杂度是O(1)。 (2)系统负载平衡:支持CMP的OS内核的调度系统需要很好地解决进程与CPU间的“亲和”问题,尽量使得每个进程在固定CPU上执行,提高Cache命中率。无论当前CPU繁忙/空闲,时钟中断每隔一段时间都会启动以平衡负载。一旦当前CPU发现自己的就绪队列为空,也会主动进行负载平衡。 OS内核根据系统结构的特点,引入调度域的概念将全体CPU一层一层地划分成不同的区域,每个调度域中的CPU分成若干个CPU组,且满足任一CPU惟一存在于一个组中。每个CPU属于一个基本的调度域(该域至少包括本CPU),但是CPU同时还属于一个或多个更大的调度域。每个CPU的最高层调度域必须包括系统中的全部处理器。 对于CMP系统,每个芯片上的多个核天然地构成一层调度域。一个单芯片CMP系统和一个普通SMP系统的基本调度域的差别仅在于CMP基本调度域的CPU组包含的对象是一个“CPU核”,而SMP基本调度域的CPU组包含的是一个传统的物理CPU。 负载平衡时,从当前CPU的基本调度域出发,遍历所有的调度域。如果某个域有一段时间没有进行过负载平衡,先寻找域中负载最大的CPU组,再寻找组中最繁忙的CPU,更新双方的负载记录,确定需要迁移的进程数为源CPU负载与本CPU负载之差的一半,然后按照从expired队列到active队列、从低优先级进程到高优先级进程的顺序进行迁移。 4、中断处理 传统的单处理器通常都采用一个外部中断控制器来解决外部设备到CPU的通信。对多处理器系统,处理器之间也需要通过中断方式通信。对CMP而言,多处理器的本地中断控制器需要和处理器一起封装到芯片内部,还需要一个全局中断控制器负责各个处理器内核间的中断分配,也要设计在芯片内部。 (1)中断分配:全局中断控制器担负着把来自外部设备的中断请求提交和分配给片内各CPU的任务。对于每个中断向量,可采用静态和动态两种模式之一。如果某个中断向量是静态分配的,控制器把这种中断请求提交给预设的一个或多个CPU;动态模式则可以发送给所有CPU,或随机发送给某个处理器。本地中断控制器处理本地处理器内部产生的中断请求、来自外部中断控制器的中断请求及其它处理器发送过来的中断请求。 (2)处理期间中断:在CMP系统中,芯片内部一个处理器常常要有目标地向系统中的其它处理器发出中断请求,这种中断被称为处理期间中断(IPI,Inter Processor Interrupt)。IPI至少应该包含两种: 一、“重新调度”中断:当前CPU可以发送该中断来指示目标CPU可能需要一次进程调度,至于目标CPU在处理完该中断以后是否进行进程调度,得看事先或者在处理中断的过程中是否把当前进程设置为需要调度。 二、“请求执行”中断:这个中断被用来请求目标CPU执行一个指定的函数,因为这些函数必须由目标CPU才能完成,而不能由别的CPU代替。 (3)时钟中断:每个处理器都有自身的时钟发生器。在系统初始化阶段,系统先设置一个外部时钟中断源供所有CPU共享,并以此为基准测算各个CPU的运算速度,并校准自身的时钟中断发生间隔。所有CPU有基本相同的时钟脉冲周期,为了不让所有处理器都在同一时刻发生时钟中断,OS应该使各个CPU的时钟中断在相位上相互错开,把这些中断均匀地分布在时钟中断的周期中。 5、同步与互斥技术 同步与互斥机制需要底层硬件提供“读-修改-写”类型的访存原子操作,这样的操作能够让CPU从主存储器中读取一个值,修改之,再将修改过的值保存到存储器的相同位置中。整个过程是一次完整的总线交易,不能被其他CPU内核的访存操作所打断。“读-修改-写”类型的原子操作有多种实现方式,最常见的包括:test_and_set,swap,load-linked/store-conditional等方式。
典型的支持多核处理器的RTOS 1、 基于同步原语扩展的实时操作系统:在多核处理器的每一个处理器核上都运行一个完全相同的RTOS,然后提供扩展的组件库,这种组件库提供相应的同步原语以支持处理器核间的通信。Eg:VxWorks、RealOS。
通过MP Extended Library同步原语库扩展,运行在一个处理器核(Processor Element)上的任务不仅能和运行在同一PE上的任务通信,还能和运行在不同PE上的任务通信,这样任务间就可以协同通信而完成特定的应用。通过将应用划分成不同的可以并行运行的任务而运行在不同的PE核上就可以并行的处理数据,从而达到提高系统性能的目的。 在这样的架构中,运行在每个PE上的RealOS和运行在单核上的RealOS没有任何区别,主要扩展在于MP Extended Library的实现,它提供了一种跨核通信的手段,使运行在不同核上的任务能够同步和传输交换数据。 通过同步原语库的扩展来实现对多核处理器的支持,是一种常见的对RTOS的扩展,不需要对现行的RTOS做太大修改,只需要增加一个相对独立的扩展库,就可以实现对于多核处理器的支持;同时多核的机制对应用程序不透明,应用需要根据需求安排多任务在多核上运行。这样的机制使一份RTOS在系统存储器中