VxWorks+SMP内核调度、信号量和中断机制的设计与实现
- 格式:pdf
- 大小:3.31 MB
- 文档页数:69
VxWorks操作系统简介VxWorks操作系统简介VxWorks操作系统是一种广泛应用于嵌入式系统开发的实时操作系统。
本文将详细介绍VxWorks操作系统的架构、特性、应用领域以及相关的法律名词注释。
一、VxWorks操作系统架构VxWorks操作系统采用分层架构,包括内核层、中间层以及外围应用层。
具体架构如下:⒈内核层:提供底层的操作系统服务,包括任务管理、内存管理、中断处理、设备驱动等。
内核层使用高度模块化的设计,可以根据需求选择性地加载不同的内核服务。
⒉中间层:提供更高层次的功能,如文件系统、网络协议栈、图形用户界面等。
中间层通过对内核接口的封装,提供更便捷的应用开发接口。
⒊外围应用层:包括用户应用程序和系统管理工具。
用户应用程序可以基于VxWorks操作系统的开发环境进行开发,并且通过内核和中间层提供的接口与系统进行交互。
二、VxWorks操作系统特性VxWorks操作系统有以下特点:⒈实时性:VxWorks操作系统被广泛应用于实时系统开发,具有快速响应、低延迟和可预测性等特性。
它使用了优化的调度算法和中断处理机制,确保系统对实时任务的及时响应。
⒉可靠性:VxWorks操作系统采用了可靠性设计和故障恢复机制,例如内存保护、任务隔离和异常处理等。
这些机制可最大限度地减少系统崩溃和错误的影响。
⒊可扩展性:VxWorks操作系统具有高度可扩展性,可以根据应用的需要进行灵活配置。
开发人员可以根据系统需求选择性地加载所需的内核服务和中间层模块,以达到最佳性能和资源利用。
⒋安全性:VxWorks操作系统提供了多层次的安全机制,包括权限控制、数据加密和访问控制等。
这些机制可以在网络和物理环境中保护系统不受未经授权的访问和攻击。
三、VxWorks操作系统的应用领域VxWorks操作系统在各行各业都有广泛的应用,特别适用于对实时性和可靠性要求较高的领域。
以下是一些典型的应用领域:⒈工业自动化:VxWorks操作系统被广泛用于控制系统和工业领域,如汽车制造、航空航天和机械制造等。
科技与创新┃Science and Technology&Innovation ·76·2023年第15期文章编号:2095-6835(2023)15-0076-03VxWorks下多核编程研究赵昶宇1,胡平2(1.天津津航计算技术研究所,天津300308;2.海军工程大学舰船与海洋学院,湖北武汉430033)摘要:介绍了VxWorks支持对称多处理的特性,讨论了SMP(Symmetric Multi Processing,对称多处理)配置特有的特性,重点介绍了单处理器配置和SMP配置在编程实践时在“互斥/同步机制”上的差异,并列举了实现SMP性能优化的方法。
关键词:VxWorks系统;SMP编程;对称多处理;互斥/同步机制中图分类号:TP332文献标志码:A DOI:10.15913/ki.kjycx.2023.15.022多核系统在一个系统中包含2个或2个以上处理器。
对称多处理是多核技术的一种变体,在这种技术中,一个操作系统运行在多个处理器上,并且共享内存。
VxWorks SMP是一种用于对称多处理的系统。
它与单处理器一样,具备实时操作系统的特性。
SMP和单处理器配置之间的差异是有限的,并且与对多处理的支持密切相关[1]。
SMP系统中的全部CPU(Central Processing Unit/Processor,中央处理器)不仅可以共同享用系统的全部物理内存,即系统中的所有CPU均可对所有物理内存进行读、写及运行操作。
用户可指定VxWorks 系统的内核任务和用户任务运行在任意的CPU中。
大多数API(Application Program Interface,应用程序接口)在VxWorks的SMP和单处理器是通用的,单处理器中的少数API不适合SMP系统。
同样的,SMP 系统中的部分API在单处理器中执行时无法体现在SMP中执行时的效果,有的API甚至无法在单处理器中执行。
VxWorks信号量是提供任务间通信、同步和互斥的最优选择,提供任务间最快速的通信。
也是提供任务间同步和互斥的主要手段。
VxWorks提供3种信号量来解决不同的问题。
二进制信号量是最快的最常用的信号量,可用于同步或互斥。
互斥为了解决内在的互斥问题、优先级继承、删除安全和递归等情况而最优化的特殊的二进制信号量。
计数器类似于二进制信号量,但是随信号量释放的次数改变而改变。
二进制信号量semBCreate (SEM_Q_FIFO/SEM_Q_PRIORITY , SEM_EMPTY/SEM_F ULL)有两个作用:(1)任务间的互斥--同一个任务获取和释放信号量,防止两个任务同时存取一个资源(2)任务间的同步--一个任务获取信号量,另一个任务(或者中断)释放信号量二进制信号量实现互斥使用二进制信号量可以很方便的实现互斥,互斥是指多任务在访问临界资源时具有排他性。
为了使多个任务互斥访问临界资源,只需要为该资源设置一个信号量,相当于一个令牌,那个任务拿到令牌即有权使用该资源。
把信号量设置为可用,然后把需要的资源的任务的临界代码置于semTake()和semGive()之间即可。
注明:1、互斥中的信号量与任务优先级的关系:任务的调度还是按照任务优先级进行,但是在使用临界资源的时候只有一个任务获得信号量,也就是说还是按照任务优先级获得信号量从而访问资源。
只是当前使用资源的任务释放信号量semGive(),其它任务按照优先级获得信号量。
2、信号量属性中的参数为:SEM_Q_PRIORITY。
而且在创建信号量的时候必须把信号量置为满SEM_FULL。
即信号量可用。
基本实现互斥模型:SEM_ID semMutex;semMutex = semBCreate(SEM_Q_PRIORITY, SEM_FULL);task(void){semTake(semMutex, W AIT_FOREVER);//得到信号量,即相当于得到使用资源的令牌//临界区,某一个时刻只能由一个任务访问semGive(semMutex);}二进制信号量实现同步同步即任务按照一定的顺序先后执行,为了实现任务A和B同步,只需要让任务A和B共享一个信号量,并设置初始值为空,即不可用,将semGive()置于任务A之后,而在任务B 之前插入semTake()即可。
VxWorks SMP多核编程指南本文摘自 vxworks_kernel_programmers_guide_6.8 第24章1.介绍VxWorks SMP是风河公司为VxWorks设计的symmetric multiprocessing(SMP)系统.它与风河公司的uniporcessor(UP)系统一样,具备实时操作系统的特性.本章节介绍了风河VxWorks SMP系统的特点。
介绍了VxWorks SMP的配置过程、它与UP编程的区别,还有就是如何将UP代码移植为SMP代码。
2.关于VxWorks SMP多核系统指的是一个系统中包含两个或两个以上的处理单元。
SMP是多核技巧中的一个,它的主要特点是一个OS运行在多个处理单元上,并且内存是共享的。
另一种多核技巧是asymmetric multiprocessing(AMP)系统,即多个处理单元上运行多个OS。
(1)技术特点关于CPU与处理器的概念在很多计算机相关书籍里有所介绍。
但是,在此我们仍要对这二者在SMP系统中的区别进行详细说明.CPU:一个CPU通常使用CPU ID、物理CPU索引、逻辑CPU索引进行标示。
一个CPU ID通常由系统固件和硬件决定.物理CPU索引从0开始,系统从CPU0开始启动,随着CPU个数的增加,物理CPU索引也会增加。
逻辑CPU索引指的是OS实例.例如,UP系统中逻辑CPU的索引永远是0;对于一个4个CPU的SMP系统而言,它的CPU逻辑索引永远是0到3,无论硬件系统中CPU的个数。
处理器(processor):是一个包含一个CPU或多个CPU的硅晶体单元。
多处理器(multiprocessor):在一个独立的硬件环境中包含两个以上的处理器。
单核处理器(uniprocessor):一个包含了一个CPU的硅晶体单元。
例如:a dual-core MPC8641D指的是一个处理器上有两个CPU;a quad-core Broadcom 1480指的是一个处理器上有四个CPU.在SMP系统上运行UP代码总会遇到问题,即使将UP代码进行了更新,也很难保证代码很好的利用了SMP 系统的特性。