嵌入式系统1

操作系统:


操作系统是一种为应用程序提供服务的系统软件,是一个完整计算机系统的有机组成部分。
从层次来看,操作系统位于计算机硬件之上,应用软件之下。所以也把它叫做应用软件的运行平台


。从用户的角度来看,它就是一大堆函数(API和系统函数),用户可以调用(普通调用或系统调


用)它们来对系统资源进行操作。


操作系统的作用:它在计算机应用程序与计算机硬件之间,屏蔽了计算机硬件工作的一些细节,并


对系统中的资源进行有效的管理。
通过提供函数(应用程序接口(API)),从而使应用程序的设计人员得以在一个友好的平台上进


行应用程序的设计和开发,大大地提高了应用程序的开发效率。


操作系统:高级语言的接口、用汇编语言写的硬件抽象层


操作系统主要实现以下功能:
 为计算机用户和计算机硬件系统之间提供接口,使计算机系统更易使用。
 控制和管理计算机系统的硬件和软件资源,使之得以更有效地利用。
 合理组织系统中作业的工作流程,以改善系统性能,如响应时间,系统吞吐量等。








实时系统:


实时系统与非实时系统的本质区别就在于实时系统中的任务都有时间限制。


时间限制有两种:一种是任务的周期性,按一定周期启动执行的任务称为周期性任务。而随机启动


执行的任务称为非周期性任务。另一种时间限制为时限,即要求任务在规定时间内完成。




实时系统的特点:
总的来说实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。


实时系统强调的是实时性、可靠性和灵活性


从实时系统的应用特点来看实时操作系统可以分为两种:一般实时操作系统和嵌入式实时操作系统





一般实时操作系统:应用于实时处理系统的上位机和实时查询系统等实时性较弱的实时系统,并且


提供了开发、调试、运用一致的环境。


嵌入式实时操作系统:应用于实时性要求高的实时控制系统,而且应用程序的开发过程是通过交叉


开发来完成的。嵌入式实时操作系统具有规模小(一般在几K到几十K内)、可固化使用实时性强(在


毫秒或微秒数量级上)的特点 。




实时系统属性要求:
实时性要求一般有两层含义:时间上同时发生和过程上同时响应。
要求一:数据识别、数据建立和正确响应必须在规定时间内完成。
要求二:对外部事件处理的实时性,即实时系统必须能进行分布式或并行处理。




实时系统重要参数:
系统响应时间:系统发出处理要求到系统给出应答信号的时间
中断延迟时间:计算机接收到中断信号到操作系统做出响应,并完成转入中断服务程序的时间
生存时间:数据有效等待时间
任务切换时间:人物之间切换而使用的时间
吞吐量:在一定时间内,系统可以处理的事件总数




实时系统分类:
按外部过程的要求划分:
软实时系统:对于软实时系统来说,未能实时完成处理的结果,仅仅是带来了额外的代价,且通常


这种代价能够被接受
硬实时系统:对于硬实时系统来说,未能实时完成的处理是坚决不允许的,它往往导致致命危害。


如刹车系统、制导系统。


按系统响应时间划分:
强实时系统:响应时间在100ms、10ms、ms或ms级以下
一般实时系统:响应时间在s、10s以上
弱实时系统:响应时间在10s以上或更长,随负载变化


按软件结构划分:
轮循系统:循环。cpu开销大,适合较慢速的简单系统
事件驱动系统:前后台系统、多任务系统、多处理系统


前后台系统:
前台:中断服务程序处理异步事件,这部分可以看成前台行为,前台也叫中断级。时间相关性很强


的关键操作一定是靠中断服务程序来保证的。
后台:循环中调用相应的函数完成相应的操作,这部分可以看成后台行为,后台也可以叫做任务级


。这种系统在处理的及时性上比实际可以做到的要差。 
       后台是一个循环轮询系统一直在运行。
       前台是由一些中断处理过程组成的。
       当有一前台事件(外部事件)发生时,引起中断,
       进行前台处理, 处理完成后又回到后台(通常又称主程序)。


多任务系统:简单地说,就是能用一个处理器并发(注意,不是同时!)地运行多个程序的计算机


管理系统
并发:由同一个处理器轮换地运行多个程序。或者说是由多个程序轮班地占用处理器这个资源。且


在占用这个资源期间,并不一定能够把程序运行完毕。
处理器如何进行程序的切换?
系统是通过把待运行程序的地址赋予程序计数器PC来实现程序切换的。


多处理器系统
       整个系统内包含多个处理器,各处理器可以同时并发工作。多个处理器通过共享内存空间


来交换信息的系统为紧耦合系统(如分布式系统),多个处理器通过链路来连接及交换信息的的为


松耦合系统(如计算机网络)。


使用实时操作系统的必要性:
1、嵌入式实时操作系统提高了系统的可靠性
2、提高了开发效率
3、嵌入式实时操作系统充分发挥了CPU的多任务潜力


实时操作系统的优缺点:
优点:在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的


改动就可以增加新的功能。通过将应用程序分割成若干独立任务模块,使应用程序的设计过程大为


简化;而且对实时性要求苛刻的时间都得到了快速、可靠地处理。通过有效的系统服务,嵌入式实


时操作系统使得系统资源得到更好的利用。
缺点:但是,使用嵌入式实时操作系统还需要额外的ROM/RAM开销,2%~5%的CPU额外负荷,以及内


核的费用。




常见的嵌入式操作系统
uClinux:它保留了Linux的大部分优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文


件系统的支持、以及标准丰富的API等。 


Windows CE:使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。 


VxWorks:良好的可靠性和卓越的实时性。良好的持续发展能力、高性能的内核以及友好的用户开


发环境,在嵌入式实时操作系统领域占据一席之地。


Nucleus PLUS


eCos:RedHat公司开发的源代码开放的嵌入式RTOS产品


μC/OS-II:一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部


分源码是用ANSI C写的,使其可以方便的移植并支持大多数类型的处理器。


TRON:实时操作系统内核


uITRON:TRON的一个子方案,它具有标准的实时内核,适用于任何小规模的嵌入式系统,日本国内


现有很多基于该内核的产品,其中消费电器较多。目前已成为日本事实上的工业标准。 






嵌入式操作系统(embedded operating system),是一个特殊的嵌入式系统软件,是构造基于嵌


入式操作系统嵌入式应用软件的基础。它实际上是嵌入式系统复位后首先执行的程序,主要负责嵌


入式系统全部软硬资源的分配、调度,控制并协调任务(或进程)的并发活动。嵌入式操作系统将


CPU、时钟、中断、存储器以及I/O设备等都封装起来,为应用程序提供一个标准的API接口。


与通用计算机系统相比,嵌入式系统具有多样化的特点,为了使得嵌入式操作系统具有通用性,一


般会引入一个板级支持包BSP,其功能是在嵌入式操作系统与目标机之间加入一个适应层,对于一


些不同的嵌入式硬件平台,只需改动BSP,这使得嵌入式操作系统具有一定程度的通用性。对于通


用计算机系统来说,因为硬件平台已经标准化了,无需BSP层。


嵌入式操作系统与通用平台操作系统的异同:嵌入式操作系统是在通用(PC或服务器)操作系统基


础上发展起来的,所以两者在概念以及体系结构上是相似的。两者的差别主要是构建的目标不同,


通用操作系统在为各个应用程序或用户进程服务时,更多地注重的是服务的公平性,而嵌入式操作


系统主要关注的是任务的实时性,另外因为应用环境的限制,一般要求嵌入式操作系统不能太庞大







操作系统常用的数据结构:
数组
位图
结构
链表:特点:同数据类型数据的集合;不占用连续内存空间。
      使用上的特点:1。分类存放,但空间上不连续(不需要大量的连续存储空间);
   2。检索速度慢,且耗费的时间不固定;
      应用:存放大量的较大的表,类似档案柜
队列
堆栈






操作系统的基本概念:
代码的临界段:
代码的临界段也称为临界区,指处理时不可分割的代码,运行这些代码不允许被打断。一


旦这部分代码开始执行,则不允许任何中断打入。为确保临界区代码的执行,在进入临界区之前要


关中断,而临界区代码执行完成以后要立即开中断。但这不是绝对的,如果中断不调用任何包含临


界区的代码,也不访问任何临界区使用的共享资源,这个中断可能可以执行


共享资源:
可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享


资源打交道时,必须独占该资源,这叫做互斥。


任务的优先级:
每个任务都有其优先级(任务执行时的顺序),分为静态优先级和动态优先级两种。
应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸


任务以及它们的时间约束在程序编译时是已知的。
应用程序执行过程中,如果任务的优先级是可变的,则称之为动态优先级。


调度:
调度就是决定该轮到哪个任务运行了


调度的时间及方式:
不可抢占(non-preemptive)调度方式:一个进程若被选中就一直运行下去,直到它被阻


塞(I/O,或正在等待其他进程),或主动地交出CPU。
可抢占(preemptive)调度方式:当一个进程在运行时,调度程序可以打断它。另外,在


其他一些情形下,如就绪队列中有新进程的优先级高于当前正运行的进程,也可能立即进行调度。


非占先式(不可剥夺型):任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿


到CPU的控制权,完全取决于应用程序什么时候释放CPU。
ISR(中断服务程序)只是使高优先级任务就绪而不中断低优先级任务,使得高优先级任


务在低优先级任务释放CPU使用权后再执行


占先式(可剥夺型):最高优先级的任务什么时候可以执行
ISR让高优先级任务就绪并中断低优先级任务使高优先级任务获得CPU使用权,待高优先级


任务执行完毕后再让低优先级任务接着执行


可重入函数:
可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中


断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数最好只使用局部变量,即变量


保存在CPU寄存器中或堆栈中。


死锁:
指两个任务无限期地互相等待对方控制着的资源。设任务T1正独享资源R1 ,任务T2正独


享资源R2,此时任务T1又要使用资源R2,任务T2也要使用资源R1,于是两个任务都无法继续执行了



防止死锁的方法
  1)先得到全部需要的资源,再做下一步的工作;
  2)用同样的顺序申请多个资源;
  3)释放资源时,使用相反的顺序;
  4)使用等待超时。


中断:
中断是一种硬件机制,通知CPU有个异步事件发生了。
中断一旦被识别,CPU保存部分或全部现场(context)后跳转到中断服务子程序(ISR) ,ISR结束后


可返回到:
      • 在前/后台系统中,返回到后台程序;
• 对不可剥夺型内核,返回到被中断了的任务;
• 对可剥夺型内核,返回到就绪状态优先级最高的任务。
中断使得CPU可以在事件发生时才进行处理,而不必让CPU不断地查询是否有事件发生。
通过开/关中断可以让CPU响应或不响应中断。
在实时环境应注意不要使关中断时间过长。


时钟节拍:
时钟节拍(clock tick)是特定的周期性中断,是实时内核的心脏。
中断之间的时间间隔取决于系统实时性要求,一般为10---200ms。
时钟节拍率越快,系统的额外开销就越大。




任务运行的基本要素:
运行环境包括了两部分:处理器中的运行环境和内存中的运行环境
处理器通过两个指针寄存器(PC和SP)来与任务代码和任务堆栈建立联系并运行它


任务的切换是任务运行环境的切换


其实,程序切换的关键是把程序的私有堆栈指针赋予处理器的堆栈指针SP


实质上系统是通过SP的切换来实现程序的切换的。


要建立一个概念:具有控制块的程序才是一个可以被系统所运行的任务。程序代码、私有堆栈、任


务控制块是任务的三要件。任务控制块提供了运行环境的存储位置。




一个完整的任务应该有如下三部分:
任务代码(程序)
任务的私有堆栈(用以保护运行环境)
任务控制块(提供私有堆栈也是虚拟处理器的位置)


这些都是任务方应该提供的基本信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值