1基本操作系统现代时实操作系统主要的补充了多任务处理和.docVIP

1基本操作系统现代时实操作系统主要的补充了多任务处理和.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
 1.基本操作系统现代时实操作系统主要的补充了多任务处理和任务间通讯两个概念。多任务环境意味着允许在一个时实应用程序中构架一组独立的任务。每一个都有自己独立的执行路线和自己的系统资源。任务间通讯的机制(facility)则允许任务间的同步和通讯,以调整系统的行为。VxWorks中,任务间通讯的机制包括从快速信号量到消息队列,管道,网络传输套接口。另一个时实系统的关键机制是硬件中断处理。因为中断常常是构成系统外部事件的机制。为了达到中断的快速响应。中断处理程序(ISR)使用一种特殊的上下文,不同与任务的上下文。以下将讨论多任务内核,任务机制,任务间通讯,和中断处理机制。这些是VxWorks运行时环境的核心。 Wind特征和POSIX特征: POSIX的时实扩展标准(1003.1b)定义了一组特殊的内核机制。为了提高应用程序性,Wind,Vxworks的内核,同时包括了POSIX接口和VxWorks的特殊接口。在本文中“Wind”特指VxWorks的wind内核机制所有的特性。 Vxworks中,任务能直接共享所有的系统资源,当然各个独立的线程控制所需要的各自的上下文是必需保留的。 WXWORKS的时实内核,提供了基本的多任务环境。多任务机制从表面上看起来是创建了许多同时运行的线程,但实际上是内核在按照一定的数学法则对它们的执行进行调度。每一个显然是独立的程序都叫做一个任务。每个任务都有自己的上下文。(所谓上下文是指:有系统内核运行调度的任务可能会在任何时刻访问的CPU环境和系统资源。)在一次上下文切换中,一个任务的上下文将保存在任务控制块中(TCB)。一个任务的上下文包括以下内容: CPU寄存器和浮点寄存器。 标准输入,输出和错误的I/O分配。 时间片定时器。 内核控制结构。 信号句柄。 调试和运行监视值。  在VxWorks中,一个不属于上下文的重要资源是内存和地址空间。所有的Wind内核任务调度: CPU准备运行的任务进行分配。对于wind内核来说需共享处理器时,一个任务如果不阻塞的话,就可能会独占CPU,导致其它所有的任务都无法运行。轮转调度实现在同级任务中公平分配CPU资源的方法一般是时间片轮转。一组任务中的每个任务执行指定的时间间隔或时间片;然后另一个任务执行相同的时间间隔,依次类推。这种调度方法的公平之处在于,只有所有的任务都获得过依次时间间隔运行后,才能有任务获得第二个时间片运行的机会。系统中使用函数kernelTimeSlice()允许系统实现轮转调度。更精确地,每个任务有一个运行时间记数器(run-time counter)记录增加的始终TICK数。当一个特定的时间片结束时。计数器将清空,并且将任务挂到同级任务的队尾。当一个新任务加入优先级组时,本任务将挂到队尾,并且将运行时间计数器初始化为0。如果一个任务在自己的运行时间间隔中被高优先级的任务抢占,它的运行时间计数器将被保存,直到任务重新运行时再恢复。下图是轮转调度系统的示例:T1,T2,T3是同级任务,T2被高优先级的T4任务抢占,当T4运行完后,T2继续运行至结束。 Wind 内核调度器可以在一个任务中通过taskLock()和taskUnLock()函数,明确地禁止或使能。当一个任务通过调用taskLock()函数禁止内核调度时,这个任务将运行在不被其它任务中断的方式下。但是,如果此任务明确地阻塞或挂起,调度器将选择一个优先级最高的合格任务执行。不过,当关闭了调度器的任务阻塞解除再次执行时,抢占式调度将再次被关闭。注意:抢占调度关闭只是禁止任务上下文的切换,但是并不禁止中断处理的发生。抢占禁止可以用于实现互斥(mutual exclusion)。不过最好让调度禁止的时间尽量短。 VxWorks与任务有关的系统调用的基本情况。它们存在与VxWorks的库文件taskLib中。这些系统调用包括任务创建,控制,和信息获取。   任务名和ID号: ASCII字符串作为任务的任务名。VxWorks系统将返回一个四字节的任务ID号作为任务数据结构的句柄。所有的任务程序获得一个ID作为不同任务的标识。VxWorks系统中约定ID=0表示正在调度的任务。一个任务的名字不得和任何已经存在的任务名字相冲突。此外,在使用Tornado开发工具进行开发时,最好不要让任务名和任何全局变量名以及全局函数名相冲突。为了避免冲突,VxWorks中约定使用前缀“t“作为运行在目标机上任务名的首字母,而运行在主机上任务名的首字母为“u”。如果你不想给所有的任务命名,NULL指针也是允许使用的,此时系统分配一个唯一的名字“tN“给你的任务,其中N是一个依次排列的整数。注:在shell中,任务名由与之相关的任务ID号决定,以简化现有任务的交互工作。 VX_FP_TASK。 VxWor

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档