精华内容
下载资源
问答
  • VxWorks实时操作系统下BSP.pdf
  • VxWorks实时操作系统的USB.pdf
  •  vxWorks操作系统是美国风和系统公司(Wind River System公司,WRS)推出的高性能实时操作系统。  WRS公司始建于1981年,是专门从事实时操作系统开发与生产的软件公司,其在实时操作系统领域具有世界公认的领导...
  • VxWorks实时操作系统的Bsp开发.pdf
  • vxworks实时操作系统下bsd的实现.pdf
  •  vxWorks操作系统是美国风和系统公司(Wind River System公司,WRS)推出的高性能实时操作系统。  WRS公司始建于1981年,是专门从事实时操作系统开发与生产的软件公司,其在实时操作系统领域具有世界公认的领导地
  • 摘 要:本文介绍了PowerPC MPC8260工作在ATM模式的原理,给出了在VxWorks实时操作系统下的END模式的ATM驱动程序设计及实现,实验证实该驱动通过Mux层在IP层与链路层之间建立了数据传输通道。关键词:MPC8260;ATM;...
  • VxWorks实时操作系统中的中断处理机制分析.pdf
  • 第一章:嵌入实时式操作系统发展简介 第二章:嵌入式实时操作系统开发基础 第三章:vxWorks操作系统基本概念(1) 第四章:vxWorks操作系统基本概念(2) 第五章:vxWorks操作系统开发调试工具 第六章:vxWorks操作系统...
  • VxWorks实时操作系统在无线通信设备中的应用.pdf
  • VxWorks实时操作系统在HT-7极向场控制系统中的应用.pdf
  • vxworks 实时操作系统

    2016-04-09 16:02:00
    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即WRS公司)推出的一个实时操作系统。Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似MicrosoftVisualC,但是提供了更丰富的调试、仿真环境和...

     

    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即  WRS 公司)推出的一个 实时操作系统。Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似 Microsoft Visual C,但是提供了更丰富的调试、仿真环境和工具。
    外文名
    VxWorks
    公    司
    Wind River System(风河公司 )
    产品类型
    实时操作系统
    开发时间
    1983年
    产    地
    美国
    开发环境
    Tornado/Wind River Workbench

    简介

    编辑
    VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式 实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、 天等高精尖技术及实时性要求极高的领域中,如卫星通讯、 军事演习、弹道制导、飞机导航等。在美国的  F-16、FA-18战斗机、 B-2 隐形轰炸机和 爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器、2008年5月登陆的凤凰号,和2012年8月登陆的好奇号也都使用到了VxWorks上。

    组成

    编辑
    VxWorks操作系统有以下部件组成:

    内核

    多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的分 时间片调度)
    任务间的同步
    定时器和内存管理机制

    I/O 系统

    VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包括 UNIX 标准的Basic I/O(creat(),remove(),open(),close(),read(),write(),and ioctl().),Buffer I/O (fopen(),fclose(),fread(),fwrite(),getc(),putc()) 以及POSIX 标准的异步 I/O。VxWorks 包括以下 驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、 键盘驱动、显示驱动、 磁盘驱动、并口驱动等 。

    文件系统

    支持四种文件系统:dosFs,rt11Fs,rawFs 和 tapeFs
    支持在一个单独的 VxWorks 系统上同时并存几个不同的文件系统。
    板级支持包 BSP(Board Support Package)
    板级支持包向VxWorks操作系统提供了对各种板子的硬件功能操作的统一的 软件接口,它是保证VxWorks操作系统可移植性的关键,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线 内存地址映射、 内存分配等等。每个板级支持包包括一个 ROM 启动(Boot ROM)或其它启动机制。

    网络支持

    它提供了对其它VxWorks系统和 TCP/IP网络系统的"透明"访问,包括与BSD 套接字兼容的 编程接口远程过程调用(RPC),SNMP(可选项),远程文件访问(包括客户端和服务端的NFS机制以及使用RSH,FTP 或 TFTP的非NFS机制)以及BOOTP 和代理ARP、DHCP、DNS、OSPF、RIP。无论是 松耦合的串行线路、标准的以太网连接还是 紧耦合的利用 共享内存的背板总线,所有的 VxWorks 网络机制都遵循标准的  Internet 协议。

    工具

    编辑
    在 Tornado 开发系统中,开发工具是驻留在 主机上的。但是也可以根据需要将基于目标机的Shell 和装载 卸载模块加入 VxWorks。
    嵌入式Vxworks系统的主要应用领域主要有以下几方面:
    1.数据网络:如:以太网交换机、 路由器、远程接入服务器等
    2.远程通讯:如:电信用的专用分组交换机和自动呼叫分配器, 蜂窝电话系统
    3.医疗设备:如:放射理疗设备
    4.消费电子:如: 个人数字助理
    5.交通运输:如:导航系统、高速火车 控制系统
    6.工业:如:机器人
    7.航空航天:如:卫星跟踪系统
    8.多媒体:如:电视会议设备
    9.计算机外围设备:如:X终端、I/O 系统等
    总之,VxWorks的系统结构是一个相当小的 微内核的层次结构。 内核仅提供多任务环境、 进程间通信和同步功能。这些功能模块足够支持VxWorks在较高层次所提供的丰富的性能的要求。
    VxWorks6.0版本新增功能:
    风河通用平台VxWorks版(GPP)是所有设备软件应用程序的首要基础平台。此通用平台基于全球应用最广泛的运行时操作系统--VxWorks而构建。最新版本(VxWorks 6.1)中的各运行时组件可 向后兼容VxWorks的早期版本。此最新版本包含了增强的内存保护、容错管理,并支持最新的网络和安全协议以及设备与企业间的连通性。
    通用平台组合了最为严格和确定性的 实时操作系统,其产品完全集成了现有的产品开发解决方案,从而能够满足贵企业的各种苛刻需求。它无缝集成了业界标准的RTOS(VxWorks 6.1)、功能强大的开发套件(Workbench 2.3)、网络和安全协议、用于工程人员 快速启动项目的培训以及迅速扩展您开发团队综合技能的各种专业服务。
    新增功能:
    通用平台VxWorks 3.1版扩展了的3.0功能:它扩展了架构支持、多处理器消息处理(基于业界标准的开源式TIPC协议)、增强了网络 堆栈以及支持风河Workbench的最新版本。

    新架构

    编辑
    ARM 9,ARM 11
    - Intel Pentium M
    - Intel XScale
    - MIPS
    - PowerPC
    - Renesas SuperH-4,SuperH-4a
    * 支持通用平台VxWorks 3.0版中的所有架构和BSP
    * 多处理器消息通道(基于TIPC协议)
    * 网络堆栈包括PPP、PPPoE以及多链路PPP
    * 风河Workbench 2.3

    产品

    编辑
    WindNet SNMP
    WindNet STREAMS
    WindNet 第三方产品,包括 OSI、SS7、ATM、Frame Relay、CORBA、ISDN、X.25、
    CMIP/ GDMO、分布式网络管理等。
    这些产品扩展了VxWorks的网络特性,并增强了 嵌入式处理器的网络特性
    虚拟内存( VxVMI)与 共享内存(VxMP)
    VxVMI 为带有 MMU 的 目标板提供了虚拟内存机制。
    VxMP 提供了共享 信号量消息队列和在不同处理器之间的共享内存区域。
    目标代理(Target Agent)
    目标代理遵循 WBD(Wind Debug)协议,允许目标机与主机上的 Tornado 开发工具相连。在目标代理的缺省设置中,目标代理是以 VxWorks 的一个任务tWdbTask 的形式运行的。
    Tornado 目标服务器(Target Server)向目标代理发送调试请求。调试请求通常决定目标代理对系统中其它任务的控制和处理。缺省状态下,目标服务器与目标代理通过网络进行通信,但是用户也可以改变通信方式。
    实用库
    VxWorks 提供了一个实用例程的扩展集,包括 中断处理看门狗定时器、消息登录、  内存分配、字符扫描、线缓冲和环缓冲管理、链表管理和 ANSI C 标准。
    是一个实时操作系统。

    转载于:https://www.cnblogs.com/lvdongjie/p/5371864.html

    展开全文
  • 基于 VxWorks 实时操作系统的双主机计算机系统的设计与实现 基于 VxWorks 实时操作系统的双主机计算机系统的设计与实 1 概述 某侦查设备原计算机系统采用的多总线三主机加固机结构体系结构复杂成本造价 高系统稳定性...
  • VxWorks实时操作系统的Bsp开发,比较好的BSP开发例子!转的其他网站的!
  • VXWORKS实时操作系统中信号量用于多任务同步与互斥的讨论.pdf
  • VxWorks实时操作系统特点介绍

    千次阅读 2018-11-25 16:12:13
    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似MicrosoftVisual C,但是提供了更丰富的调试、仿真...

    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似MicrosoftVisual C,但是提供了更丰富的调试、仿真环境和工具。

    VxWorks的特点

     

    1、VXWORKS既是一个操作系统、又是一个可以运行的最小基本程序

    2、VXWORKS有BSP(可以认为是一种低层驱动),可以减小驱动程序的编写过程

    3、VXWORKS具有强大的调试能力,可以在没有仿真器的情况下,通过串口调试。

    4、VXWORKS具有软件DEBUG功能,可以对软件部分进行模拟调试。

    5、VXWORKS具有丰富的函数库。

    6、同时VXWORKS自带TCP/IP协议栈。

    最大可能的减小开发者系统软硬件开发的难度,缩小开发周期,提高开发效率。 可以部分的保证软硬件开发的同步进行。 一个好的操作系统的几大特点:

    ● 多任务和可抢占的

    ● 任务具有优先级

    ● 操作系统具备支持可预测的任务同步机制

    ● 支持多任务间的通信

    ● 操作系统具备消除优先级转置的机制

    ● 存储器优化管理

    ● 操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。

    ● 实时时钟服务 ● 中断管理服务

    vxworks的特点介绍

    可靠性

    操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。而稳定、可靠一直是VxWorks的一个突出优点。自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。

    实时性

    实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。

    VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。VxWorks 提供的多任务机制中对任务的控制采用了优先级抢占(PreempTIve Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。

    可裁减性

    用户在使用操作系统时,并不是操作系统中的每一个部件都要用到。例如图形显示、文件系统以及一些设备驱动在某些嵌入系统中往往并不使用。

    VxWorks 由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks 内核最小为 8kB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。

    对一个实时内核的要求

    一个实时操作系统内核需满足许多特定的实时环境所提出的基本要求,这些包括:

    多任务:由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。系统内核分配CPU给这些任务来获得并发性。

    抢占调度:真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。

    任务间的通讯与同步:在一个实时系统中,可能有许多任务作为一个应用的一部分执行。系统必须提供这些任务间的快速且功能强大的通信机制。内核也要提供为了有效地共享不可抢占的资源或临界区所需的同步机制。

    任务与中断之间的通信:尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先化和减少中断延时,我们通常希望在任务级处理相应的工作。所以需要杂任务级和中断级之间存在通信。

     

    VxWorks系统编程方法

    实时系统主要包括:多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制。

    一个多任务环境允许实时应用程序以一套独立任务的方式构筑,每个任务拥有独立的执行线程和它自己的一套系统资源。进程间通信机制使得这些任务的行为同步、协调。 wind使用中断驱动和优先级的方式。它缩短了上下文转换的时间开销和中断的时延。在 VxWorks 中,任何例程都可以被启动为一个单独的任务,拥有它自己的上下文和堆栈。还有一些其它的任务机制可以使任务挂起、继续、删除、延时或改变优先级。

    另一个重要内容是:硬件中断处理。硬件产生中断,统治系统调用相应的中断历程(ISR),位是系统得到尽快的响应,ISR在它自己独立的上下文和堆栈中运行。它的优先级高于任何任务优先级。

    中断延迟(Interrupt Latency) 中断延迟是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。

    优先级驱动(Priority-Driven) 优先级驱动是指多任务系统中,当前运行任务总是具有最高优先级的就绪任务。

    多任务调度

    两种方式: 优先抢占和轮转调度(PreempTIve Priority,Round-Robin Scheduling)。

    优先抢占(PreempTIve Priority): 每一个任务都有一个优先级,系统核心保证优先级最高的任务运行于CPU.如果有任务优先级高于当前的任务优先级,系统立刻保存当前任务的上下文,切换到优先级高的上下文。

    抢占(PreempTIve): 抢占是指当系统处于核心态运行时, 允许任务的重新调度。换句话说就是指正在执行的任务可以被打断,让另一个任务运行。抢占提高了应用对异步事件的响应性能力。操作系统内核可抢占,并不是说任务调度在任何时候都可以发生。例如当一个任务正在通过一个系统调用访问共享数据时,重新调度和中断都被禁止。

    任务上下文(Task CONtext): 任务上下文是指任务运行的环境。例如,针对x86的CPU,任务上下文可包括程序计数器、堆栈指针、通用寄存器的内容。

    上下文切换(Context Switching): 多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件,当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。上下文的内容依赖于具体的CPU.

    轮转调度(Round-Robin Scheduling):使所有相同优先级,状态为ready的任务公平分享CPU(分配一定的时间间隔,使个任务轮流享有CPU)。

    系统由256个优先级,从0到255,0为最高,255为最低。 任务在被创建时设定了优先级。也可用taskPrioritySet ( ) 来改变任务优先级。

    任务的主要状态: READY,PEND,DELAY,SUSPEND.。。

    ready--------》pended -----------semTake( )/msgQReceive( )-其他任务

    ready--------》delayed-----------taskDelay( )

    ready--------》suspended---------taskSuspend( )

    pended-------》ready-------------semaGive( )/msgQSend( )-其他任务

    pended-------》suspended---------taskSuspend( )

    delayed------》ready-------------expired delay

    delayed------》suspended---------taskSuspend( )

    suspended----》ready-------------taskResume( )/taskActivate( )

    suspended----》pended------------taskResume( )

    suspended----》delayed-----------taskResume( )

    轮转调度 (Round-Robin): 轮转调度可以扩充到优先抢占方式中,当多个任务优先级相同的情况下,轮转调度算法使任务按平等的时间片运行于CPU,共享CPU.避免一个任务长时间占用CPU,而导致其他任务不能运行。可以用 kernelTimeSlice( ) 来定义时间长度。

    taskLock ( )和 taskUnlock ( ) 用来取消优先抢占方式 和恢复优先抢占方式。

    注意: 一个任务可以调用taskDelete ( ) 删除另一个任务,但是如果一个当前正在运行的任务被删除后,该任务的内存没有释放,而其他任务不知道,依然在等待,结果导致系统STop.用 taskSafe ( ) 和 taskUnsafe ( ) 来保证正在运行的任务不被删除。

    用法如下:

    taskSafe ();

    semTake (semId, WAIT_FOREVER);

    /* Block until semaphore available */

    。 。 。 。 critical region 。

    semGive (semId); semGive (semId);

    /* Release semaphore */

    taskUnsafe ();

    任务间的同步和进程间协调

    信号量作为任务间同步和互斥的机制。在 wind 核中有几种类型的信号量,它们分别针对不同的应用需求:二进制信号量、计数信号量、互斥信号量和 POSIX 信号量。所有的这些信号量是快速和高效的,它们除了被应用在开发设计过程中外,还被广泛地应用在VxWorks 高层应用系统中。对于进程间通信,wind 核也提供了诸如消息队列、管道、套接字和信号等机制。

    任务间的同步和进程间协调的几种方式:

    内存共享(Shared Memory),对简单的数据共享而言。

    信号量(Semaphore),基本的互斥和同步。

    消息队列(Message queues)和管道(Pipe),单个CPU中,任务间的信息传递。

    套结字(Socket)和远程调用(Remote procedure calls),相对于网络任务间的通信。

    信号(Signals),出错处理(Exception handling)。

    互斥(Mutual Exclusion)

    互斥是用来控制多任务对共享数据进行串行访问的同步机制。在多任务应用中,当两个或多个任务同时访问共享数据时,可能会造成数据破坏。互斥使它们串行地访问数据,从而达到保护数据的目的。

     

    解决互斥的几种方法:

    1. 关闭中断的方法(intLock): 能解决任务和中断ISR之间产生的互斥。

    funcA ()

    { int lock = intLock();

    。 。 critical region that cannot be interrupted 。

    intUnlock (lock); }

    但在实时系统中采取这个办法会影响系统对外部中断及时响应和处理的能力。

    2. 关闭系统优先级(taskLock): 关闭系统优先级,这样在当前任务执行时,除了中断外,不会有其他优先级高的任务来抢占CPU,影响当前程序运行。

    funcA ()

    { taskLock ();

    。 。 critical region that cannot be interrupted 。

    taskUnlock (); }

    这种方法阻止了高优先级的任务抢先运行,在实时系统中也是不适合的,除非关闭优先级的时间特别短。

    3. 信号量(Semaphore): 信号量是解决互斥和同步协调进程最好的方法

    当一个Semaphore创建时,指定了任务队列的种类

    semBCreat( SEM_Q_PRIORITY, SEM_FULL), SEM_Q_PRIORITY 指明处于等待状态的任务在等待队列中以优先级的顺序排列

    semBCreat(SEM_Q_FIFO,SEM_FULL), SEM_Q_FIFO指明 处于等待状态的任务在等待队列中以先进先出的顺序排列

    当一个Semaphore创建时,指定了这个semaphore是用在解决互斥还是用来同步任务

    semBCreat( SEM_Q_FIFO, SEM_FULL) , SEM_FULL 指明用于任务间互斥。

    SEM_ID semMutex;

    semMutex = semBCreate (SEM_Q_PRIORITY, SEM_FULL);

    。。.。。.。。.

    semTake (semMutex, WAIT_FOREVER);

    。 。 critical region, only accessible by a single task at a time 。

    semGive (semMutex);

    semBCreat(SEM_Q_FIFO,SEM_EMPTY), SEM_EMPTY 指明用于任务间同步。

    /* includes */

    #include “vxWorks.h”

    #include “semLib.h”

    SEM_ID syncSem;

    /* ID of sync semaphore */

    init ( int someIntNum )

    { /* connect interrupt service routine */

    intConnect (INUM_TO_IVEC (someIntNum), eventInterruptSvcRout, 0);

    /* create semaphore */

    syncSem = semBCreate (SEM_Q_FIFO, SEM_EMPTY);

    /* spawn task used for synchronization. */

    taskSpawn (“sample”, 100, 0, 20000, task1, 0,0,0,0,0,0,0,0,0,0);

    }

    task1 (void)

    { 。。.

    semTake (syncSem, WAIT_FOREVER);

    /* wait for event to occur */

    printf (“task 1 got the semaphore\n”);

    。。.

    /* process event */

    }

    eventInterruptSvcRout (void)

    { 。。.

    semGive (syncSem);

    /* let task 1 process event */

    。。.

    }

    函数介绍:

    semTake(semID,time out)--------有Semaphore空闲,就Take, 如果没有,由time out 定,超时则向下执行

    优先级反转(Priority INVErsion)

    优先级反转是指一个任务等待比它优先级低的任务释放资源而被阻塞,如果这时有中等优先级的就绪任务,阻塞会进一步恶化。优先级继承技术可用来解决优先级反转问题。

    Priority inversion arises when a higher-priority task is forced to wait an indefinite period of time for a lower-priority task to complete.

    优先级继承(Priority Inheritance)

    优先级继承可用来解决优先级反转问题。当优先级反转发生时,优先级较低的任务被暂时地提高它的优先级,使得该任务能尽快执行,释放出优先级较高的任务所需要的资源。

    The mutual-exclusion semaphore has the option SEM_INVERSION_SAFE, which enables a priority-inheritance algorithm. The priority-inheritance protocol assures that a task that owns a resource executes at the priority of the highest-priority task blocked on that resource. Once the task priority has been elevated, it remains at the higher level until all mutual-exclusion semaphores that the task owns are released; then the task returns to its normal, or standard, priority. Hence, the “inheriting” task is protected from preemption by any intermediate-priority tasks. This option must be used in conjunction with a priority queue (SEM_Q_PRIORITY)。

    本文转载自:http://www.elecfans.com/emb/xitong/20171219605227_a.html

    展开全文
  • 本文提出了一种不同于传统通信机制的模块间通信模型。将用于网络通信的UDP方式引入到程序内的模块间通信中,避免了传统方式可能引起的降低效率与资源耗费过多问题。通过送耦合的连接方式增强了程序的灵活性。
  • 基于VxWorks实时操作系统的嵌入式无线监控系统研究与实现.nh。 caj格式
  • 嵌入式实时操作系统——Vxworks操作系统;天嵌ARM开发板配套资料
  • 软件设计中模块化的思想已日益普遍,模块...在模块数量多,通信业务大的情况下VxWorks提供的任务间通信机制不能很好的满足实时性与资源利用的要求。本文提出了一种任务间的通信模型,将用于网络通信的UDP方式引进到任务
  • vxWorks实时程序设计

    2021-06-29 21:43:48
    本课程侧重讲解实时操作系统编程原理,其中的原理不拘限于vxWorks系统,同时强化操作系统编程的技术要点。课程从基本概念与工具使用入手,并深入讲解实时嵌入式系统编程的同步、互斥、通信、信号等概念及编程方法,...
  • 风河修复了 VxWorks 实时操作系统的 11 个重大安全漏洞.pdf
  • VxWorks实时操作系统下END的实现.pdf
  • VxWorks实时性能探究

    2021-04-25 21:34:37
    本篇文章就是将VxWorks操作系统和市面上几种其他实时操作系统实时性能进行对比。 1、前期知识准备 实时性能和响应时间有关,为此,先对计算机操作系统中的时间概念和时间尺度进行一下介绍。 1 s = 1000 ms = ...

    VxWorks实时性能探究

    笔者最近在使用VxWorks操作系统,由大名鼎鼎的风河(WindRiver)开发。VxWorks操作系统是一款硬实时操作系统,一直听闻其实时性能非常优秀,但是一直没有一个直观地概念。本篇文章就是将VxWorks操作系统和市面上几种其他实时操作系统的实时性能进行对比。

    1、前期知识准备

    实时性能和响应时间有关,为此,先对计算机操作系统中的时间概念和时间尺度进行一下介绍。

    1 s = 1000 ms = 1000000 us = 1000000000 ns,看不出来1 s时间还是很长的嘛(捂脸

    • 时钟周期:主频为4 GHz的CPU的时钟周期为1/4G = 0.25 ns,时钟周期是计算机中最基本的、最小的[时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作

    • CPU周期:CPU周期亦称机器周期,一条指令执行过程被划分为若干阶段,每一阶段完成所需时间。完成一个基本操作所需要的时间称为机器周期。通常用内存中读取一个指令字的最短时间来规定CPU周期。

    • 指令周期:取出并执行一条指令的时间。想要详细了解可以看这篇文章【浅析】CPU中的指令周期、CPU周期和时钟周期

    • 内存时钟周期:相比CPU,一般的DDR内存芯片速率仅为400 MHz,时钟周期达2.5 ns, 再加上总线延时,导致内存访问时间达到几十纳秒。CPU运行速率与内存访问速率比大致为100:1

    • 硬盘读取时间:硬盘的读写速度就更慢了,一般的机械硬盘的完成一次读写所需要的时间,主要取决寻道时间+旋转时间,完成一次读或者写的时间量级大致为ms级别,因此内存访问速率与磁盘存取速度比大致为1000:1

    上面是有关硬件方面的时间周期情况,对于操作系统或者应用程序来说,我们一般关注的是算法的时间复杂度和空间复杂度,这是从整理理想的情况来衡量一个算法的优劣。如果想要详细了解每条代码的执行所耗时间,我们需要更深入了解代码是怎么在计算机上执行的。

    C语言代码都是经过预处理、编译,产生汇编代码(汇编代码几乎已经接近机器码了),一句高级语言代码相当于汇编语言的几行甚至几十行。而学过汇编语言的都应该知道,不同的汇编代码指令执行所耗费的时间也是不同的。一般来说,移位,加法,取反这种指令只需要一个时钟周期,而乘法,除法等指令需要几个乃至几十个时钟周期执行。

    2、实时操作系统(RTOS)的实时性能评价指标

    实时操作系统的实时性能评价指标一般有两个:

    • 任务切换时间

      当多任务应用程序运行在操作系统上时,它把正在运行的任务的状态保存到任务自己的栈区之中,然后把下一个将要运行的任务的当前状态从该任务的栈区装入CPU的寄存器,并开始这个任务的执行,这个过程就叫做任务切换。

    • 中断响应时间

      计算机接收到中断信号到操作系统做出响应,并完成切换转入中断服务程序的时间。

    下图是几种实时操作系统的实时性能对比:

    在这里插入图片描述

    参考文献:《4种实时操作系统实时性的分析对比》

    可以看出不管是任务切换时间还是中断响应,VxWorks都是最好的,当然VxWorks也是最贵的。

    此外我们还可以看出不管是任务切换还是中断响应,时间尺度都是在几个us,根据CPU主频的不同,大概是几千个时钟周期的样子。
    下面代码是测试执行100万次简单循环语句所耗费的时间:

    “”“

    int i = 1000000;
    int j = 0;
    while(i){
    j += 0;
    i--;
    }
    timer = 2033 us //执行100万次该循环所耗时间,可以将执行每次的时间和任务切换的时间进行对比
    

    “”“

    展开全文
  • 对于研究实时系统vxworks的人应该会有帮助啊。 多谢支持
  • 本文提出了一种不同于传统通信机制的模块间通信模型。将用于网络通信的UDP方式引入到程序...在实验中,这种基于UDP方式的虚拟设备绑定的通信模型取得了较好效果,在对实时性要求较高的嵌入式系统开发中有着较高的价值。
  • 结 合 嵌 入 式 实 时 操 作 系 统 VxWorks 实 现 风 洞 测 控 系 统 的 实 际 应 用,以 其 中 的 串 口 通 信 为 例 , 讨 论 了 在 VxWorks 下 实 现 串 口 通 信 的 关 键 技 术 , 给 出 了 基 本 原 理 、 环 境...
  • 实时操作系统VxWorks

    2020-10-19 17:52:39
    VxWorks组成部分VxWorks操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,934
精华内容 5,973
关键字:

vxworks实时系统