嵌入式实时操作系统UCOSII(邵贝贝)--笔记之实时系统概念(第二章)

2、实时系统概念

实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统。有两种类型的
实时系统:软实时系统和硬实时系统。在软实时系统中系统的宗旨是使各个任务运行得越快
越好,并不要求限定某一任务必须在多长时间内完成。
  在硬实时系统中,各任务不仅要执行无误而且要做到准时。大多数实时系统是二者的结
合。实时系统的应用涵盖广泛的领域,而多数实时系统又是嵌入式的。这意味着计算机建在
系统内部,用户看不到有个计算机在系统里面。

实时应用软件的设计一般比非实时应用软件设计难一些

 

2.0  前后台系统  (Foreground/Background System)

应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,
这部分可以看成后台行为(background)。中断服务程序处理异步事件,这部分可以看成前台
行为(foreground)。后台也可以叫做任务级。前台也叫中断级。时间相关性很强的关键操作
(Critical operation)一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程
序走到该处理这个信息这一步时才能得到处理,这种系统在处理信息的及时性上,比实际可
以做到的要差。这个指标称作任务级响应时间。最坏情况下的任务级响应时间取决于整个循
环的执行时间。因为循环的执行时间不是常数,程序经过某一特定部分的准确时间也是不能
确定的。进而,如果程序修改了,循环的时序也会受到影响
  很多基于微处理器的产品采用前后台系统设计,例如微波炉、电话机、玩具等。在另外
一些基于微处理器的应用中,从省电的角度出发,平时微处理器处在停机状态(halt),所有
的事都靠中断服务来完成。

2.1  代码的临界段

  代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则
不允许任何中断打入
。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代
码执行完以后要立即开中断。(也就是一段只要开始执行就必须执行完的代码,中间不可停止)

2.2   资源

  任何为任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、
显示器,资源也可以是一个变量,一个结构或一个数组等

2.3  共享资源

  可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共
享资源打交道时,必须独占该资源。这叫做互斥
(mutual exclusion)。在2.18节“互斥”中,
将对技术上如何保证互斥条件做进一步讨论。

2.4  多任务

多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU

只有一个,轮番服务于一系列任务中的某一个(CPU在某一时间使能执行一个程序)。

多任务运行很像前后台系统,但后台任务有
多个。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实时应用中,
多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。使用多任务,应用程序
将更容易设计与维护。

2.5  任务

一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPU完全只属该程
序自己(这个意思是从任务角度出发,任务的每次执行都是独占CPU的)。
实时应用

程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应
用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空
(如图2.2 所示)。

  典型地、每个任务都是一个无限的循环。每个任务都处在以下5种状态之一的状态下,
这5种状态是休眠态,就绪态、运行态、挂起态(等待某一事件发生)和被中断态(参见图2.3)  
休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
经典的书哦多年以前,我设计了一个基于Intel 80C188的产品,需要一个实时内核。在前一家雇主那里工作时,我一直在使用一个知名的内核(以下我称为内核 A),但该内核对我当时设计的产品来说是太贵了。我找到了一个廉价的内核(当时大约1000美元以下我称为内核 B),并且开始了我的设计工作。为了让我那几个很简单的任务运行起来,竟花了我两个月时间。我一天到晚给该厂商打电话求援。该厂商声称内核B是用C语言写的,可我还得用汇编语言给程序中每个对象除实话,虽然该厂商很耐心,而我实在是烦透了!产品的开发也耽误了。我真是不想再花时间去调试那个廉价的内核了。后来得知我是该厂商的第一个客户,这个内核实际上没有完全测试和调试过。 还是回到正路上来,我决定使用内核A。五个用户的价格是5000美元,此外,我的每个产品还要付200美元的内核使用费。在当时,那可是一笔很大的开支。就算是花钱买个心里踏实吧。花了两天时间,内核转起来了。项目进展到3个月上,我的一个工程师发现内核好像有毛病(bug)。当内核中的这个毛病确认无疑以后,我把我的代码寄给了该厂商。此时,厂商提供的90天的担保已经过期了。为了得到答复,我还得支付每年500美元的维护费。我和销售商争辩了好几个月,他们应该尽快纠正这一处毛病才是。我实际是在为他们做好事。可是,他们不予理睬。最后,我只好认了,又签了程序维护合同。而该厂商6个月以后才改正了那个毛病。是的,6个月以后!我简直气坏了,最要紧的是,我的产品开发耽误了。花了将近一年的时间,内核A才在我的产品中稳定运行。然而,我得承认,从此以后,内核A再没有什么问题了。 渐渐的,我自然会想到,写个实时内核有那么难吗?不就是不断地保存、恢复CPU的那些寄存器嘛。于是我决定试试写一个自己的实时内核,主要用业余时间、晚上和周末。也花了大约一年的时间才使内核转起来,它在某些方面还比内核A好。我并不想开公司去卖这个内核,因为当时市场上已经有大约50个实时内核的产品。 我想到给杂志写篇文章,打算投《C语言用户杂志》(《C User’s Journal 》)因为内和是用C写的,我听说该杂志每页给100美元的稿费,而其他杂志一般是每页75美元。我的文章大约有70页。这笔稿费对我写内核所花时间是不错的补偿。很不幸,文章拒载了。有两个原因,一个是文章太长,杂志不愿意连载。另一个原因是,他们也不愿意“又登一篇关于内核的文章”。 我决定转向《嵌入式系统编程》(《Embedded System Programming》)杂志,因为我的内核是为嵌入式应用设计的。我和该杂志的编辑Mr.Tyler Sperry联系,告诉他我的实时内核想在他的杂志上发表,得到的答复和《C语言用户杂志》是一样的,我们不要“又是一篇关于内核的文章”。我告诉他们,我的实时内核和他们的不一样,是占先式的,可以和许多商业上出售的内核产品竞争,源代码可以放在《嵌入式系统编程》杂志网站的留言板(BBS)上。我每周要给Mr.Tyler打两三个电话,几乎是求他发表我的文章。他终于同意了,大概是我的电话打得他烦了。我的文章从70页压缩到30页,连载在1992年5月期和6月期杂志上。该文章几乎是1992年最热门的文章。头一个月,就有500多人从《嵌入式系统编程》杂志的网站留言板上下载我的源程序。Tyler先生真怕实时内核的商家们会要了他的命,因为在他的杂志上刊登了实时内核的源码,这使商家们感到不安。我猜测,商家们一定已经认识到μC/OS(当时称作μCOS)的质量和功能。该文章实际上是第一次把实时内核的内在工作原理曝光,一些过去的秘密公开了。几乎是文章在《嵌入式系统编程》杂志上刊登出来的同时,R&D出版社的Bernard (昵称Berny)Williams杂志来电话了。《C语言用户杂志》就是这家出版社出的,此时距我最初与该杂志联系已有6个月了。 我留言给我的妻子,说他对我的文章感兴趣。我回电话给他,“你不觉得你有点太晚了吗?我的文章已经在《嵌入式系统编程》杂志上发表了”。Berny只是说,“不,不,你没明白我的意思,因为文章那么长,我打算出一本书”。起初,Berny只是想简单地把我手上已有的那些出成一本大约80页的书。我告诉他,如果写成一本书的话,我打算写得更好一些。以后,我又花了大约6个月的时间增加书的内容,就成了本书第一版的那个样子。书大约有250页。我把实时内核的名字由μCOS改成μC/OS,因为《嵌入式系统编程》杂志的读者一直称为“mucus”,那个自发音像英语的“痰”,让人听起来不舒服。回想起来,这可能是第一次给实时内核起名字。总之,实时内核μC/OS就这样诞生了。开始时,书销售的很慢,Berny和我计划在书的适用期内能售出4000到5000册,可是照开始时的销售速率,能卖出去2000册就不错了。Berny坚持说,让人知道这本书需要时间。于是他连续在《C语言用户杂志》杂志上刊登广告,一直持续了一年。约在书正式出版一个月之前,我第一次参加了在加利弗尼亚州圣克拉拉(Santa Clara)举行的嵌入式系统会议,那是1992年的9月,我第一次见到Tyler Sperry先生,我给他看了即将出版的书的草稿。他很快地翻了翻,问我愿不愿意在下一届嵌入式系统会议上做个讲演。下届会议在亚特兰大召开。那再好不过了,我说我愿意。但我讲些什么呢?他建议我讲怎样使用“小实时内核”。路上,我想,我这是怎么了?我从来没有在那么多人面前讲过话,到时候我自己就蒙了怎么办?如果我讲的都是些很平常的知识……人们可都是花了不少钱来听会的。以后的6个月中,我准备了讲稿。后来的会上,听我课的有70多人。起初的20多分钟里,我出的汗至少有1磅多。课后,约有15人上前来表示非常喜欢我的课,也喜欢我那本书。我得到了1993年在圣克拉拉举行的会议的邀请,可我没能参加,我参加了1994年波士顿举行的会议。从那以后,每次嵌入式系统会议上都有我的例行演讲。过去几年中,我进了会议的顾问委员会(Advisory Committee),最近的几次会上,每次的会议我都要做至少三次讲演,每次的听众都在200到300人之间。会议对我的讲演的评价总是在前10%。 至今,μC/OS的书已售出了15,000多册。我收到并答复的来自世界各地的电子邮件超过1000份。1995年,《μC/OS The Real Time Kernel 》被翻译成日语在《接口》(《Interface》)杂志上刊登。μC/OS已经被移植到以下一些CPU上。 Analog 设备公司 AD21xx ARM公司 ARM6,ARM7 日立公司 64180,H8/3xx, SH 系列 Intel公司 80x86 (Real and PM), Pentium , Pentium Ⅱ, 8051, 8052, MCS-251, 80196, 8096 三菱公司 M16和M32 摩托罗拉公司 PowerPC, 68K, CPU32, CPU32+, 68HC11, 68HC16 飞利浦公司 XA 西门子公司 80C166和TriCore TI公司 TMS320 Zilog公司 Z-80 and Z-180 1994年,我决定写第二本书,《Embedded System Building Blocks, Complete and Ready-to-use Modules in C》。由于某些原因,此书不如μC/OS那么流行,虽然书中很多信息在其他地方是找不到的。我始终认为,对于刚刚步入嵌入式世界的人们来说,这是一本理想的书。 1998年,我开通了μC/OS的正式网站:www.μCOS-Ⅱ.com,打算在该网站上放进移植、应用短文、相关网站、常见问题解答(FAQ)、μC/OS和μCOS-Ⅱ的版本更新等。只是这都要花时间去做。 回到1992年,我绝没有想到写篇文章会改变我的生活方式,实际上确实是这样,我遇到了很多非常有趣的人,交了很多好朋友。我还是回答收到的每一个电子邮件。我确信,如果你写给我什么的话,回应你是我的责任。
### 回答1: 嵌入式实时操作系统μC/OS是一款由美国UCOS-II开发的实时操作系统。该操作系统主要用于嵌入式系统中,具有可裁剪、高性能和可移植性的特点。 μC/OS是基于优先级调度算法的实时操作系统,支持多任务并发执行。它提供了丰富的任务管理功能,包括任务创建、任务删除、任务切换等。系统中的任务可以根据优先级进行调度,优先级高的任务可以抢占优先级低的任务,从而确保高优先级任务的及时响应。 μC/OS还提供了丰富的同步和通信机制,包括信号量、消息队列、事件标志等。这些机制使得多个任务之间可以进行有效的协作,实现任务间的同步和通信。 此外,μC/OS还支持硬实时任务和软实时任务的混合调度。硬实时任务具有严格的时限要求,需要在特定的时刻完成,而软实时任务则没有时限要求。μC/OS可以根据任务的时间要求进行动态调度,保证硬实时任务的及时响应,同时尽可能充分利用系统资源执行软实时任务。 μC/OS具有良好的可移植性,可以在不同的硬件平台上运行。同时,它也支持多种编译器,如C语言和汇编语言等。 总的来说,μC/OS是一款功能强大的嵌入式实时操作系统,能够满足嵌入式系统实时性和可靠性的要求,同时也具有灵活的任务管理和通信机制,方便开发人员进行系统设计和应用开发。 ### 回答2: 嵌入式实时操作系统ucos是一种小型、高效、可靠的实时操作系统,在嵌入式系统开发中得到广泛应用。它由美国嵌入式专家Jean J. Labrosse开发并于1992年发布。 ucos具有可移植性强、可裁剪性高的特点。它支持多种处理器架构,如ARM、MIPS、PowerPC等,适用于不同的嵌入式系统。同时,ucos的内核占用资源较小,可以根据应用需求进行裁剪和定制,满足各种嵌入式系统对资源的限制。 ucos提供了一套完整的实时操作系统功能,包括任务管理、时间管理、内存管理和通信管理等。任务管理模块可以管理多个任务,通过优先级和时间片轮转的调度算法,实现多任务并发运行。时间管理模块提供了精确的时钟服务,可以进行实时时钟、定时器和延时等操作。内存管理模块提供了动态内存分配和释放功能,通过内存池管理方式避免了碎片问题。通信管理模块支持任务间的消息传递和同步操作,保证数据的可靠传输和任务之间的协同工作。 由于ucos的可靠性和实时性,它广泛应用于各种嵌入式系统,如工业控制、汽车电子、医疗设备等领域。它在实时性能和资源利用上具有优势,为开发人员提供了一个强大而灵活的开发平台。同时,ucos在应用层编程接口上也提供了丰富的功能库和协议栈,为系统开发提供了更多的支持。 总而言之,嵌入式实时操作系统ucos是一款高效、可靠、可移植的实时操作系统,具有广泛的应用领域和良好的生态系统。它为嵌入式系统开发者提供了一个稳定的开发平台,可以根据实际需求进行裁剪和定制,满足不同应用场景的需求。 ### 回答3: 嵌入式实时操作系统μC/OS是一种创建和管理实时任务的操作系统。它由美国工程师Jean Labrosse开发,并由其公司Micrium Inc.发布。μC/OS提供了许多功能和特性,使其成为嵌入式系统的理想选择。 μC/OS是一个可裁剪的操作系统,可以根据应用程序的需求选择性地启用或禁用功能。它具有小内核和低的内存占用,适用于资源有限的嵌入式系统。此外,μC/OS提供了一套全面的API,包括任务管理、时间管理、内存管理、信号量、消息队列和事件标志等,为开发人员提供了丰富的功能来实现复杂的嵌入式应用程序。 μC/OS具有轻量级实时调度算法,可以实现任务的优先级和时间片调度。它通过任务优先级来处理紧急的任务,确保系统能够及时响应重要事件。此外,μC/OS还提供了高精度的时钟管理功能,可以实现微秒级的时间精度。 μC/OS还具有可靠的内存管理功能,包括静态和动态内存分配。开发人员可以灵活地管理内存,并通过内存池和内存分区机制来提高系统的效率和可靠性。 总而言之,嵌入式实时操作系统μC/OS是一款强大而灵活的操作系统,适用于各种嵌入式系统的开发。它提供了丰富的功能和特性,满足了实时任务管理、时间管理和内存管理等要求。使用μC/OS可以提高系统的效率和可靠性,加快开发周期,使嵌入式系统更加稳定和可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值