您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 与操作系统相关的概念lhx
与操作系统相关的概念1、前后台系统:早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备,在这种情况下,这种系统可称为前后台系统(foreground/background),或超循环系统(superloops),应用程序是一个无限的循环,循环中调用相应的函数完成相应的任务,这部分可看成后台行为,(background)。中断服务程序处理异步事件,这部分可以看成前台行为。(foreground),后台程序也可以叫做任务级程序,时间相关性很强的关键操作(criticaloperation)一定是靠中断服务程序实现的。2、代码临界段:也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。3、资源:任何为任务所占用的实体都可称为是资源。资源可以是输入输出设备,例如打印机,显示器:资源也可以是一个变量、一个结构体一个数组。4、共享资源:可以被一个以上的任务使用的资源叫共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时必须独占该资源。这叫做互斥(mutualexclusion)。5、多任务:多任务的实现实际上是靠CPU在多个任务之间转换和调度。CPU只有一个,轮番服务于一系列任务中的一个。多任务的运行使CPU的利用率达到很高,并使应用程序模块化。开发人员可以将复杂的应用程序层次化,应用程序将更加容易设计与维护。6、任务:也称为一个线程,是一个简单的程序,该程序可以认为CPU完全只属于该程序自己。每个任务都是应用程序的一部分,都被赋予一定的优先级,有自己一套CPU寄存器和栈空间。7、任务的状态:休眠态、就绪态、运行态、挂起态,及被中断态。休眠态:休眠态相当于任务驻留在内存中,但并不被多任务内核所调度。就绪态:就绪态意味着任务已经被准备好,可以运行,但由于该任务的优先级比正在运行的任务优先级低,还暂时不能运行。运行态:指任务掌握了CPU的使用权,正在运行中。挂起态:也可以叫做等待事件态(waiting),指任务在等待,等待某一事件的发生。被中断状态:发生中断时,CPU提供相应的中断服务,原来正在运行的任务暂时不能运行,就进入了被中断状态。8、任务的切换:当多个任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(context),即CPU寄存器中的全部内容。这些内容保存在任务的当前状况保存区(task’scontextstoragearea),也就是任务自己的栈区之中。入栈工作完成之后,就把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行,这一过程叫做任务切换。任务切换过程增加了运用程序的额外负荷,CPU的内部寄存器越多,额外的负荷就越重,任务切换所需的时间取决于CPU有多少寄存器要入栈。9、内核:多任务系统中,内核(kernel)负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务间通信。内核提供的基本服务是任务切换。使用实时内核可以大大简化应用系统设计,应用实时内核允许将应用分成若干个任务,由实时内核来管理它们。10、调度:调度(schedulers)是内核的主要职责之一,就是决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程度不同,被赋予一定的优先级。基于优先级的调度法是指,CPU总是处于就绪状态,优先级最高的任务先运行,然而,何时高优先级任务掌握CPU的使用权,由使用的内核的类型决定。基于优先级的内核有两种类型:不可剥夺型和可剥夺型。11、时间片轮番调度法:当有两个或两个以上任务有同样的优先级时,内核允许一个任务运行事先确定的一段代码时间,这段时间叫做时间额度,然后切换给另一个任务。这个过程叫做时间片轮番调度法。12、任务优先级:每个任务都有其优先级,任务越重要,赋予的优先级就越高。13、互斥条件:实现任务间通信最简便的方法就是使用共享的数据结构。但是必须保证每个任务在处理共享数据时的排它性,以避免竞争和数据的破坏。与共享数据打交道的时候,使之满足互斥条件最一般的方法有:关闭中断;使用测试并设计位指令;禁止任务切换;使用信号量。14、信号量:信号量实际上是一种约束机制,在多任务内核中普遍使用。运用于:控制贡献资源的使用权(满足互斥条件)标志某个事件的发生使两个任务行为同步信号量相当于一把,任务要同步下去,需要先拿到这把钥匙。15、死锁:也称为抱死,指两个任务无限地等待对方控制着的资源。在实际中一般设定一个等待时间,超时了,就不等待了。16、在任务间通信:消息邮箱:通过内核服务可以给任务发送消息。消息队列:是邮箱阵列,很多邮箱的组合而成的。编写UCOS-II操作系统的应用程序1、打开源程序应用程序的框架,一般由下列文件夹组成app:一般应用程序所在文件夹dsp(自定):开发板资源所在文件夹,开发板各个功能函数调用ucoscpu:与CPU操作有关系的函数的入口,如果想移植ucos操作系统的话就要移植这部分代码ostaskcreateext(指向任务函数的指针也就是任务的首地址,指向数组结构的指针用来向任务传递参数,任务的堆栈的栈顶,任务的优先级,任务的id,0,任务的属性:堆栈检测和堆栈清除)功能演示Main(){第一步:关闭所有中断;第二步:操作系统初始化;OSInit();第三步:建立任务;OSTaskCreate(指向任务函数的指针也就是任务的首地址,指向数组结构的指针用来向任务传递参数,任务的堆栈的栈顶,任务的优先级);第四步:开始执行任务。UcosII操作系统综合实验要点:UcosII综合程序设计多任务的建立任务间资源共享和同步多任务的建立:多任务的建立要用到ostaskcreateext()函数任务间资源共享和同步给调度器上锁和开锁Osschedlock()用于禁止任务调度——上锁Osschedunlock()开锁
本文标题:与操作系统相关的概念lhx
链接地址:https://www.777doc.com/doc-2786960 .html