uocs实时操作系统学习笔记 2

  • 陌路绝途
  • LV5工程师
  • |      2014-06-18 18:01:45
  • 浏览量 1116
  • 回复:5
前后台系统一般有前台和后台两部分程序组成。后台是一个无限循环的应用程序,循环中调用响应的任务函数完成相应的操作,各个任务依次运行,没有调度,运行的次序不能改变。前台是中断服务程序,处理异步事件,后台一般称作任务级,前台也叫中断级。时间相关性要求很强的关键操作一定要靠中断服务来保证,但是中断服务提供的信息并不能马上得到处理,必须要一直等到后台程序运行到响应的处理相应的处理任务时才能处理,这种系统对处理信息的及时性表较差,最坏的情况取决于正给循环的 执行时间。这个指标称作任务级响应时间。
前台系统也称为超循环系统。
一般不复杂且实时性要求不高的小系统很适合采用前后台系统,例如微波炉,电话机、玩具等等;
调度:
调度室内核的主要职责之一,它为任务分配资源和时间,决定任务运行的次序,从而是系统满足特定的性能要求。
基本的调度算法有先来先服务,最短周期优先,优先级法,轮转法等;
调度的方式分为:可剥夺和不可剥夺。多数实时内核是基于优先级调度的多种方法的复合。
临界区:
嵌入式系统中的资源是指为任务所占用的任何实体,它可以是硬件设备,如打印机,显示器等等;也可以是软件,如变量、结构和数组等。
共享资源是指被两个或更多任务使用的资源。
任何时候都允许一个任务访问的资源成为临界资源,用于访问临界资源的代码段称为临界区或临界段。这部分代码不允许多个并发任务交叉执行,否则会产生严重后果。
进程:行为的一个规则叫做程序,程序在处理器上执行时所发生的活动叫做进程。 
进程是操作系统中可以独立运行的单位,通常由三部分组成,即程序、数据集合和进程控制块。
进程具有两种属性:一是:可拥有资源的独立单元;二是:可以独立调度和分配的基本单元。进程才能成为独立运行的基本单元,从而构造进程并发执行的基础。
线程:是进程中的一个实体,是cpu调度和分配的基本单位,它基本上不拥有资源,只拥有维持运行的最少资源。进程可以独立运行,同一进程可以拥有多个线程,每个线程都可以共享同一进程中的所有资源,线程可以在进程中并发执行,但不能脱离进程独立运行。又称轻量级进行,或进程元。

任务与多任务:
多任务的并发执行通常依赖于一个多任务操作系统,多任务操作系统的核心是系统调度器,它使用任务控块(TCB)用来保存任务的当前状态、优先级、要等待的事件或资源、任务程序代码的起始地址、初始堆栈指针等信息。一旦任务建立,TCB就被赋值,当任务的CPU使用权被剥夺时,TCB用来保存该任务的状态;当任务重新得到cpu使用权时,该任务的信息将从它的TCB中取出,放入各个寄存器中,TCB能确保任务从当时被中孤单的那一点丝毫不差的继续执行。
 实时应用程序设计的关键就是确定如何把问题分割成多个任务,以及如何确定每个任务的优先级和任务之间的通信。
休眠态是指任务驻留在内存中,还没有交给内核管理,不被多任务内核所调度。
就绪态是指任务已经做好了运行的准备,可以运行,但由于有更高优先级的任务正控制着cpu的受用权因此该任务暂时还不能运行。
挂起态也叫做等待事件态,指任务在某一事件的发生
被中断态是指发生中断时,CPU转入相应的中断服务,原来正在运行的任务暂时放弃CPU的使用权,就进入了被中断状态。
任务切换:
实际上是模拟一次中断过程,从而实现CPU使用权的转移。每个任务都有自己独立的堆栈,称之为任务栈,用于保存任务的当前状态和所有寄存器内容。当内核决定运行另一个任务时,首先要入栈,将当前任务用到的所有寄存器内容以及当前状态保存到自己的任务栈中去,然后向中断返回一样,将下一将要运行的任务的所有寄存器内容和状态从该任务的任务栈中弹出,重新装入CPU的寄存器,任务即恢复到挂起前的状态,并开始执行。这个过程称之为任务切换。
任务切换所需要的时间叫任务切换时间,它取决于cpu有多少个寄存器要进出堆栈。
死锁:
又称死抱,是指两个或者更多的任务相互等待对方占用的资源而无限期地僵持下去的局面。
死锁条件:
互斥条件
非抢占条件
占有并等待条件
循环等待(看门狗解决)
预防死锁的策略:
资源预先分配策略
资源有序分配策略
一旦发生死锁,可用资源剥夺或任务撤销的呢过方法解除死锁。
大多数内核提供等待超时功能,以此化解死锁。
不可剥夺型内核:
的特点是运行的任务占有cpu的绝对使用权,若不自我放弃,准备就绪的高优先级任务不能抢占cpu的使用权。也成做合作型多任务,各个任务彼此合作共享一个cpu。可以允许中断,但是中断过后还是得把使用权还给原先被中断了的任务,知道该任务主动释放cpu。
优点:中断响应时间快
      由于采用优先级调度法,因此任务级比前后台系统快的多
      正在运行的任务占用cpu,而不必担心被别的任务抢占。
缺点:
      响应时间慢,准备就绪的高优先级任务也许要的等很久,知道当前运行着的任务释放cpu才能运行。商业软件几乎没有不可剥夺型内核。

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:5
我在164 2015-02-11
谢谢分享!
0   回复
举报
发布
凤凰息梧桐 2014-09-14
顶起来 
0   回复
举报
发布
小宝 2014-06-19
谢谢分享
0   回复
举报
发布
空中翱翔的老虎 2014-06-19
看看 顶顶
0   回复
举报
发布
冰山一角 2014-06-19
顶起。。。。
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子