当前位置:文档之家› 嵌入式实时操作系统_uCOSII

嵌入式实时操作系统_uCOSII

嵌入式实时操作系统_uCOSII
嵌入式实时操作系统_uCOSII

uC/OS-II
北京邮电大学计算机学院 邝 坚 2011年10月
教材及参考文献
《嵌入式实时操作系统 uC/OS-II(第2 版)》,Jean https://www.doczj.com/doc/823542628.html,brosse, 邵贝贝, 北航出版 社, 2003年1月

uC/OS-II的主要特点
实时性可确定:绝大多数系统服务的执行时间具有可确定 性,不依赖于用户应用程序Task数目的多少。 多任务、独立栈:最多64个Task,基于优先级抢占调度方 式。每个Task有自身独立的堆栈。 可裁减性:系统最小可裁减到几K到十几K,这种裁减还可 以做到基于函数级。 可移植性:与CPU体系结构相关部分用汇编编写,其他功 能组件CPU无关。 可靠、稳定性:由整个系统设计来保证,市场验证。美国 联邦航空管理局(FAA)认证。 开源代码:内核约5500行C代码。 可固化:面向嵌入式应用。
系统功能
实时内核 任务管理 时间管理 信号量、互斥信号量管理 事件标志组管理 消息邮箱管理 消息队列管理 内存管理 …

Targets x86 68k PPC CPU32 i960 SPARC ARM MIPS XScale …
Typical development configuration
Ethernet
RS-232
Development Host
Target
Typical scenario:
1. Boot target. 4. Download object module. 2. Attach target server. 5. Test & Debug. 3. Edit & compile. 6. Return to 3 or 1 as necessary

Multi-Tasking
Task是代码运行的一个映像,从系统的角 度看,Task是竞争系统资源的最小运行单 元。Task可以使用或者等待CPU、I/O设备 及内存空间等系统资源,并独立于其它的 Task,与它们一起并发运行。
Task Operation
Priority-base preemptive scheduling(基 于优先级的抢占式调度)

Task调度器上锁和开锁
给调度器上锁函数OSSchedlock() 用于临 时禁止任务调度,直到任务完成后调用给 调度器开锁函数OSSchedUnlock()为止。
须成对执行 时间尽量短 不会关闭中断 什么时候用:希望期间不被打扰 但…
空闲任务(Idle Task)
μC/OS-Ⅱ总是建立一个空闲任务,这个 任务在没有其它任务进入就绪态时投入运 行。 这个空闲任务[OSTaskIdle()]永远设为最低 优先级,即OS_LOWEST_PRI0 OSTaskIdle()什么也不做,只是在不停地 给一个32位的名叫OSIdleCtr的计数器加 1,统计任务使用这个计数器以确定现行应 用软件实际消耗的CPU时间。

统计任务
μC/OS-Ⅱ有一个提供运行时间统计的任 务。这个任务叫做OSTaskStat(),如果用户 将系统定义常数OS_TASK_STAT_EN设为 1,这个任务就会建立。 一旦得到了允许,OSTaskStat()每秒钟运 行一次,计算当前的CPU利用率。换句话 说,OSTaskStat()告诉用户应用程序使用 了多少CPU时间,用百分比表示,这个值 放在一个有符号8位整数OSCPUsage中, 精读度是1个百分点。
States of Task
状态 运行 就绪 等待 中断 睡眠
解 任务占用CPU,运行状态

任务已经得到了除CPU之外的所有资源,仅仅在等待 CPU资源 任务正在等待某些当前不可用的资源 任务运行中被中断服务程序打断,中断服务程序(ISR)运 行 任务尚未被创建或被删除,处于不可被执行状态。

States of Task
OS_TCB – 任务控制块
TCB是一个数据结构,驻留在RAM中,任务建立时TCB被初始化。当 任务的CPU使用权被剥夺时,TCB保存该任务的状态。当任务重新得 到CPU使用权时,TCB能确保任务从当时被中断的那一点丝毫不差地 继续执行。TCB全部。
OSTCBStkPtr:任务栈顶指针 OSTCBExtPtr:TCB扩展。用户可以扩展TCB而不必修改μC/OS-Ⅱ的源代码 OSTCBStkBottom:任务栈底的指针 OSTCBStkSize:栈中可容纳的指针元数目而不是用字节表示的栈容量总数 OSTCBNext、OSTCBPrev:用于任务控制块OS_TCBs的双重链接指针 OSTCBEventPtr:指向事件控制块的指针 OSTCBMsg:指向传给任务的消息的指针 OSTCBDly:当需要把任务延时若干时钟节拍时要用到这个变量 OSTCBStat:任务的状态字(uCOS_II.h) OSTCBPrio:任务优先级 OSTCBX、OSTCBY、 OSTCBBitX、OSTCBBitY:用于加速任务进入就绪态的过 程或进入等待事件发生状态的过程(避免在运行中去计算这些值) OSTCBDelReq:是一个布尔量,用于表示该任务是否需要删除

Task 相关
Task Task Task Task Task Task 创建(及扩展) 堆栈 删除(及请求删除) 优先级改变 挂起及恢复 信息获取
Task形态
任务可以是一个无限的循环,也可以是在 一次执行完毕后被删除掉(其代码并不是 被真正删除,而只是OS不再理会该任务代 码)。 任务看起来与任何C函数一样,具有一个 返回类型和一个参数,只是它从不返回。 任务的函数类型必须被定义成void型

Task形态(demo1)
void YourTask (void *pdata) { for (;;) { /* 用户代码 */ OSMboxPend(); OSTimeDly(); /* 用户代码 */ } }
Task形态(demo2)
void YourTask (void *pdata) { /* 用户代码 */ OSTaskDel(OS_PRIO_SELF); }

Task创建
INT8U OSTaskCreate ( void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT8U prio, )
/* 任务函数的入口的地址 */ /* 任务的入口参数指针 */ /* 任务堆栈栈顶指针 */ /* 任务的优先级 */
每个优先级只允许1个Task存在 优先级取值范围0-63(4-59)/0 -255 值越小,优先级越高 当前Task优先级:OS_PRIO_SELF
Task创建(扩展)
INT8U OSTaskCreateExt ( void (*task)(void *pd), /* 任务函数的入口的地址 */ void *p_arg, /* 任务的入口参数指针 */ OS_STK *ptos, /* 任务堆栈栈顶指针 */ INT8U prio, /* 任务的优先级 */ INT16U id, /* 任务的ID(保留) */ OS_STK *pbos, /* 任务栈底指针 */ INT32U stk_size, /* 任务堆栈大小(指针元数目) */ void *pext, /* 附加的数据域指针 */ INT16U opt /* 选项(堆栈检查、堆栈清零等) */ )

Task堆栈
每个任务都有自己的堆栈空间。堆栈必须声明为 OS_STK类型,并且由连续的内存空间组成。 静态:
static OS_STK MyTaskStack[stack_size]; 或 OS_STK MyTaskStack[stack_size];
动态:
OS_STK *pstk; pstk = (OS_STK *)malloc(stack_size); if (pstk != (OS_STK *)0) { /* 确认malloc()能得到足 够地内存空间 */ Create the task; }
Task删除
被删除的任务将返回并处于休眠状态 INT8U OSTaskDel ( INT8U prio /* Task的优先级 */ ) 不允许中断服务程序(ISR)删除Task 不能删除系统Idle Task(OS_IDLE_PRIO) Task可以删除自己

请求删除Task
有时候,如果任务A拥有内存缓冲区或信 号量之类的资源,而任务B想删除A,这些 资源就可能由于没被释放而丢失。在这种 情况下,用户可以想办法让拥有这些资源 的任务在使用完资源后,先释放资源,再 删除自己。用户可以通过OSTaskDelReq() 函数来完成该功能。
改变Task优先级
在程序运行期间,用户可以动态改变任务 的优先级。 INT8U OSTaskChangePrio ( INT8U oldprio, /* 原优先级 */ INT8U newprio /* 新优先级 */ ) 不能改变idle task的优先级 可以改变自己或其他Task优先级

Task挂起和恢复
挂起任务可通过调用OSTaskSuspend()函 数来完成。被挂起的任务只能通过调用 OSTaskResume()函数来恢复
INT8U OSTaskSuspend (INT8U prio) INT8U OSTaskResume (INT8U prio)
Task信息获取
通过调用OSTaskQuery()来获得自身或其它应用任务的信 息。实际上,OSTaskQuery()获得的是对应任务OS_TCB 中内容的拷贝
OS_TCB MyTaskData; void MyTask (void *pdata){ pdata = pdata; for (;;) { /* 用户代码 */ err = OSTaskQuery(10, &MyTaskData); /* Examine error code .. */ /* 用户代码 */ } }

时间管理
μC/OS-Ⅱ(其它内核也一样)要求系统提供 定时中断来实现延时与超时控制等功能。 这个定时中断叫做时钟节拍(Tick),它 应该每秒发生10至100次。时钟节拍的实 际频率是由用户的应用程序决定的。时钟 节拍的频率越高,系统的负荷就越重。 实质:
定时器中断ISR -> OSTimeTick()
时间管理相关
Task延时: OSTimeDly() 按时、分、秒延时:OSTimeDlyHMSM() 恢复被延时Task:OSTimeDlyResume() 系统时间管理: OSTimeGet() OSTimeSet()

Task延时
申请该服务的任务可以延时一段时间,这 段时间的长短是用时钟节拍(Tick)的数 目来确定的。 void OSTimeDly (INT16U ticks)
Tick = n (n>0), delay n个Tick, 之后Task状 态?有没有误差? Tick = 0, 函数立即返回
按时、分、秒延时
INT8U OSTimeDlyHMSM ( INT8U hours, INT8U minutes, INT8U seconds, INT16U milli ) 有最长延时限制:65535个Tick

恢复被延时的Task
INT8U OSTimeDlyResume (INT8U prio) 谁能发起这个唤醒动作? 不建议使用?
被唤醒的Task同样认为是超时被唤醒
系统时间管理
INT32U OSTimeGet (void)
返回系统当前的Tick计数值(32位: 04,294,967,295)
void OSTimeSet (INT32U ticks)
设置系统的Tick计数值

Intertask Communication
Task间通信的主要目的:
保护共享的数据、信息. 通知Task数据已经准备好,可以读写 Task之间同步,防止相互干扰
Communication Methods
信号量( Semaphores )- 用于最基本的互斥、同步操 作 互斥信号量(Mutual Exclusion Semaphores ) – 专 门用于互斥 消息邮箱(Message Box) - 单消息 消息队列( Message Queues )- 用于消息通信 事件标志组(Event Flag)- 一组标志 Others –
Shared Memory(共享内存)- 用于数据的简单共享 Pipes(管道)- 用于支持标准I/O操作的消息通信 Signals(信号)- 用于处理异常 Network(Sockets), …

信号量相关
信号量创建:OSSemCreate() 信号量删除:OSSemDel() 信号量等待:OSSemPend() 信号量发出:OSSemPost() 信号量请求(无等待): OSSemAccept() 信号量状态查询: OSSemQuery()
信号量创建
μC/OS-II中的信号量由两部分组成:一个是信 号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任 务组成的等待任务表。 OS_EVENT *OSSemCreate (INT16U cnt)
返回信号量指针(句柄、ID) 对信号量的初始计数值赋值。该初始值为0到65,535 之间的一个数。如果信号量是用来表示一个或者多个 事件的发生,那么该信号量的初始值应设为0。如果 信号量是用于对共享资源的访问,那么该信号量的初 始值应设为1(例如,把它当作二值信号量使用)。 最后,如果该信号量是用来表示允许任务访问n个相 同的资源,那么该初始值显然应该是n,并把该信号 量作为一个可计数的信号量使用。

信号量删除
OS_EVENT *OSSemDel( OS_EVENT *prevent, /* 信号量指针(句柄,ID) */ INT8U opt, /* 选项 */ INT8U *err /* 错误码缓冲指针 */ ) 删除成功返回空指针(NULL); ISR不能调用 opt :OS_DEL_NO_PEND ->若有Task在等, 返回err=OS_ERR_TASK_WAITING; OS_DEL_ALWAYS -> 强制删除。 等待信号量的Task进入Ready。 err:操作成功返回OS_NO_ERR
等待信号量
void OSSemPend (
OS_EVENT *pevent, /* 信号量指针(句柄,ID) */ INT16U timeout, /* 等待时间(Tick数) */ INT8U *err /* 错误码缓冲指针 */
) ISR不能调用 如果得到信号量,内部计数-1返回OS_NO_ERR,否则进 Pend timeout: >0 -> 最长等待时间 =0 -> 永远等待 如果timeout后仍未得到信号量,返回OS_TIMEOUT 可能产生任务切换

发出信号量
INT8U OSSemPost (OS_EVENT *pevent) 操作成功,内部计数+1,返回 OS_NO_ERR 可能产生任务切换 内部计数溢出,返回OS_SEM_OVF
信号量请求(无等待)
当一个任务请求一个信号量时,如果该信 号量暂时无效,也可以让该任务简单地返 回,而不是进入睡眠等待状态。 INT16U OSSemAccept (OS_EVENT *pevent) ISR可以使用,但不推荐使用 返回内部计数值(减1之前的),调用者用 于判断是否成功(成功时应>0,否则=0)

实时操作系统UCOS-II,学会RTOS给你的身价增值

实时操作系统UCOS-II,学会RTOS给你的身价增值 如果,你最近关注一些嵌入式招聘职位描述,你可能会经常看到看到使用过uCOS、Vxworks、QNX等RTOS者优先。 随便打开一个20K的嵌入式开发工作职责: 你会发现熟悉RTOS的开发、移植、剪裁真的很吃香! 今天,我们就来介绍一下实时操作系统UCOS-II。 一、嵌入式操作系统概览 嵌入式操作系统的主要好处就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。并且可以充分利用硬件资源,如在单任务时(大循环结构,如大部分51程序)遇到delay函数时,CPU在空转。而在多任务系统,遇到delay或需等待资源时系统会自动运行下一个任务,等条件满足再回来运行先前的任务,这样就充分利用了CPU,提高了效率。 uC/OS操作系统与裸机程序的最大不同点就在于uC/OS有任务调度,可以根据任务的重要程度(优先级)优先执行重要的任务,从而确保能及时处理最重要的数据。(所以对于一个系统有必要使用OS的判断是能否划分一个个的任务,并且各任务间的耦合很小)可以思考下裸机程序中断的时候发生的过程。利用堆栈可以很自由的在A、B中切换,如果切换足够快,A、B看以来好像同时在执行,这就是并行,A、B就是任务。如果这个切换操作放到定时器函数中来做,就可以严格按照时间来切换。另外,各个任务之间有存在一定的关系,有逻辑上的先后等,必须引进全局的结构体、变量来标记一些信息,全局的这些数据是不会被释放的,所以所有的任务可以去通过读、写这些数据来实现各个程序块交流信息,实现所谓的同步、互斥。这就是操作系统的原理,而这些不同的通信方式按功能细分就成事件管理、内存管理等。

实时操作系统报告

实时操作系统课程实验报告 专业:通信1001 学号:3100601025 姓名:陈治州 完成时间:2013年6月11日

实验简易电饭煲的模拟 一.实验目的: 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。 二.实验要求: 1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”; 2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择; 3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间; 4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式; 5.按“X”退出系统,时间区域不显示。 6.煮饭时长为30,煮粥时长为50,煮面时长为40. 三.实验设计: 1.设计思路: 以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。 本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。 2.模块划分图: (1)界面显示: Main() Taskstart() Taskstartdispinit() 在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。

(2)按键查询与响应: Main() Taskstart() 在TaskStart()函数中,用if (PC_GetKey(&key) == TRUE)判断是否有按键输入。然后根据key 的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。 (3)切换功能: l计数“C”按 键的次数 M=l%3 Switch(m) M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“”以“擦出”之前画下的“@”,注意l自增。 四.主要代码: #include "stdio.h" #include "includes.h" #include "time.h" #include "dos.h" #include "sys/types.h" #include "stdlib.h" #define TASK_STK_SIZE 512 #define N_TASKS 2 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; INT8U TaskData[N_TASKS];

嵌入式实时操作系统

嵌入式实时操作系统 嵌入式实时操作系统(Embedded Real-time Operation System,RTOS)。 1 嵌入式实时操作系统概念 当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。 2 嵌入式实时操作系统特点 1)多任务; 2)有线程优先级 3)多种中断级别 3 嵌入式实时操作系统应用 在工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。 采用嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。

4 实时操作系统的必要性: 首先,嵌入式实时操作系统提高了系统的可靠性。 其次,提高了开发效率,缩短了开发周期。 实时操作系统的优缺点: 在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。但是,使用嵌入式实时操作系统还需要额外的ROM/RAM 开销,2~5% 的CPU 额外负荷,以及内核的费用。 5 实时系统与非实时系统的根本区别 实时系统与非实时系统的根本区别在于:实时系统具有与外部环境及时交互作用的能力。也就是说实时系统从外部获取信息以及系统得出结论要在很短的限制时间内完成。 它具有嵌入式软件共有的可裁剪、低资源占用、低功耗等特点;实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等。 实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求,也就是说,实时操作系统注重的是个体表现。

实时操作系统 期末报告

实时操作系统期末总结报告 一、实时操作系统的概述 实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。 1.1.实时操作系统的相关概念 (1)实时操作系统的定义 实时操作系统是保证在一定时间限制内完成特定功能的操作系统。例如人驾驶的汽车中的系统,需要一个比较稳定的实时操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,比如汽车不能很快的识别人的操作指令,那么它可能造成严重的事故(如:汽车的瞬时刹车;公交车,它能准确的报站,这其实就是一个实时操作系统的具体体现;其次,车上的GPS导航仪,其实质也是一个比较精确实时操作系统的产物,如果不能实时,那么导航仪将失效,结果不能正确的指导司机驾驶的方向,同时这种实时操作系统的及时性必须达到一定的程度:ms级)。一些实时操作系统是为特定的应用

设计的,另一些是通用的。一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。 (2)实时操作系统中的一些重要的概念 代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入; 资源:任何为任务所占用的实体; 共享资源:可以被一个以上任务使用的资源; 任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任 务都是一个无限的循环,每个任务都处在以下五个状态下:休眠 态,就绪态,运行态,挂起态,被中断态; 任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任 务的栈中重新装入CPU的寄存器,并开始下一个任务的运行; 内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核和可剥夺型内核; 调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法; (3)及时性 关于实时操作系统的及时性,我将从如下两个方面进行介绍:实时操作系统的时间限和实时操作系统的应用相关。 时间限:对一些实时性要求较高的系统,它们要求的时间限一般是毫秒级(ms),但是通常的实时操作系统,一般是秒级(s)或是在

计算机操作系统简单介绍

计算机操作系统简单介绍 操作系统的种类繁多,依其功能和特性分为分批处理操作系统、分时操作系统和实时操作系统等;依同时管理用户数的多少分为单用户操作系统和多用户操作系统;适合管理计算机网络环境的网络操作系统。 1)微机操作系统随着微机硬件技术的发展而发展,从简单到复杂。Microsoft 公司开发的DOS是一单用户单任务系统,而Windows操作系统则是一多户多任务系统,经过十几年的发展,已从Windows 3.1发展Windows NT、Windows 2000、Windows XP、Windows vista、Windows 7和Windows 8等等。它是当前微机中广泛使用的操作系统之一。Linux是一个源码公开的操作系统,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大,已被越来越多的用户所采用,是Windows操作系统强有力的竞争对手。 2)语言处理系统 人和计算机交流信息使用的语言称为计算机语言或称程序设计语言。计算机语言通常分为机器语言、汇编语言和高级语言三类。如果要在计算机上运行高级语言程序就必须配备程序语言翻译程序(下简称翻译程序)。翻译程序本身是一组程序,不同的高级语言都有相应的翻译程序。翻译的方法有两种:一种称为“解释”。早期的BASIC源程序的执行都采用这种方式。它调用机器配备的BASIC“解释程序”,在运行BASIC源程序时,逐条把BASIC的源程序语句进行解释和执行,它不保留目标程序代码,即不产生可执行文件。这种方式速度较慢,每次运行都要经过“解释”,边解释边执行。 另一种称为“编译”,它调用相应语言的编译程序,把源程序变成目标程序(以.OBJ为扩展名),然后再用连接程序,把目标程序与库文件相连接形成可执行文件。尽管编译的过程复杂一些,但它形成的可执行文件(以.exe为扩展名)可以反复执行,速度较快。运行程序时只要键入可执行程序的文件名,再按Enter键即可。 对源程序进行解释和编译任务的程序,分别叫作编译程序和解释程序。如FORTRAN、COBOL、PASCAL和C等高级语言,使用时需有相应的编译程序;BASIC、LISP等高级语言,使用时需用相应的解释程序。

ucos-ii操作系统复习大纲

ucos-ii操作系统复习大纲 一.填空题 1.uC/OS-II是一个简洁、易用的基于优先级的嵌入式【抢占式】多任务实时内核。 2.任务是一个无返回的无穷循环。uc/os-ii总是运行进入就绪状态的【最高优先级】的任务。 3.因为uc/os-ii总是运行进入就绪状态的最高优先级的任务。所以,确定哪 个任务优先级最高,下面该哪个任务运行,这个工作就是由【调度器(scheduler)】来完成的。 4.【任务级】的调度是由函数OSSched()完成的,而【中断级】的调度 是由函数OSIntExt() 完成。对于OSSched(),它内部调用的是【OS_TASK_SW()】完成实际的调度;OSIntExt()内部调用的是【 OSCtxSw() 】实现调度。 5.任务切换其实很简单,由如下2步完成: (1)将被挂起任务的处理器寄存器推入自己的【任务堆栈】。 (2)然后将进入就绪状态的最高优先级的任务的寄存器值从堆栈中恢复到【寄存器】中。 6.任务的5种状态。 【睡眠态(task dormat) 】:任务驻留于程序空间(rom或ram)中,暂时没交给ucos-ii处理。 【就绪态(task ready)】:任务一旦建立,这个任务就进入了就绪态。 【运行态(task running)】:调用OSStart()可以启动多任务。OSStart()函数只能调用一次,一旦调用,系统将运行进入就绪态并且优先级最高的任务。 【等待状态(task waiting)】:正在运行的任务,通过延迟函数或pend(挂起)相关函数后,将进入等待状态。

【中断状态(ISR running)】:正在运行的任务是可以被中断的,除非该任务将中断关闭或者ucos-ii将中断关闭。 7.【不可剥夺型】内核要求每个任务自我放弃CPU的所有权。不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。 8.当系统响应时间很重要时,要使用【可剥夺型】内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。 9.使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件,这一点可以用【互斥型信号量】来实现。 10.【可重入型】函数可以被一个以上的任务调用,而不必担心数据的破坏。 11.可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用【局部变量】,即变量保存在CPU寄存器中或堆栈中。如果使用全局变量,则要对全局变量予以【保护】。 12.每个任务都有其优先级。任务越重要,赋予的优先级应【越高】。 13.μC/OS-Ⅱ初始化是通过调用系统函数【OSIint()】实现的,完成μC/OS-Ⅱ所有的变量和数据结构的初始化。 14.多任务的启动是用户通过调用【OSStart()】实现的。然而,启动μC/OS-Ⅱ之前,用户至少要建立一个应用【任务】。 15. μC/OS-Ⅱ的参数配置文件名为【】。 16.删除任务,是说任务将返回并处于【休眠状态】,并不是说任务的代码被删除了,只是任务的代码不再被μC/OS-Ⅱ调用。 17.μC/OS-Ⅱ要求用户提供【定时中断】来实现延时与超时控制等功能。 18.定时中断也叫做【时钟节拍】,它应该每秒发生10至100次。 19. 时钟节拍的实际频率是由用户的应用程序决定的。时钟节拍的频率越高,系统的负荷就【越重】。 20.μC/OS-II中的信号量由两部分组成:一个是信号量的【计数值】,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的【等待任务表】。用户要在中将OS_SEM_EN开关量常数置成【1 】,这样μC/OS-II 才能支持信号量。 21. μC/OS-II中表示当前已经创建的任务数全局变量名为:【 OSTaskCtr 】。

嵌入式实时操作系统之我见

嵌入式实时操作系统之我见 -ARM7TDMI-S 王士莹 -----从基本概念、基本原理、基本常识、基本思维入手阐述嵌入式实时操作系统在单片机开发中,嵌入式实时操作系统的使用近几年比较流行,在具体应用中也有比较好的表现。那么对于一个应用来讲,应该选择那种操作系统呢?目前,可供选择的有uLinux、VxWorks、uCOS-II等。我们当然可以选择其中的一个根据需要移植到自己的设计中。但对于一个工程师来说,能够在设计中使用自己编写的嵌入式实时操作系统岂不是一件“很酷”的事情吗?而且,我认为,若要较好的理解一个嵌入式实时操作系统,首先要能够自己编写,哪怕是一个最简单的。否则,不知道核心原理是怎么回事,仅仅依样画葫芦做做移植,只是隔靴搔痒,只会是门外汉。 这篇文章就是根据我所理解的嵌入式操作系统,就几个问题做一个阐述,以期抛砖引玉。 1、为什么要用嵌入式实时操作系统,嵌入式实时操作系统较前后台结构有什么优势 单片机程序结构发展 任务的驱动方式有两种:时间和事件,所以对一个单片机程序来说它要等待的量也是只有两个:延迟时间到或事件发生。故操作系统只要安排任务等待着这两个标志就好。那么如何产生这两个标志呢,标志产生在中断中,然后在中断中发给需要的任务。 多功能块任务:在一个任务中有等待的时间或事件,等到后再执行后面程序的任务。在任务等待的时候单片机可以离开该任务去执行其他任务,该任务等待

完成后再回来继续运行。这样使用操作系统就提高了系统整体的运行效率。 单片机执行全局的东西,操作系统通过把全局的资源赋值成局部的任务让单片机执行了看似全局的实则是局部的东西,这样就实现了任务的调度和切换对于单功能块任务,即一个任务中没有需要等待的时间或事件,程序连续地从头执行到尾,对于这样的任务操作系统的作用不大。 2、单片机编程有哪些特点、会有哪些问题和需求、操作系统如何根据特点解决问题满足需求 一般单片机系统中不会只运行一个单一的任务,往往有多个方面的工作要做,如对一个仪器仪表来讲,它要做的工作有:测量、显示、存储、通讯、控制等。这些工作需要同一个单片机来完成,那如何对他们进行安排才能使一个单片机执行多个任务呢? 打个比方:单片机就像一支建筑队,在这个建筑队里面有管理、财务、技术、工人、后勤等,他们各司其职、共同协作完成一个建筑工程。正常情况下,一支建筑队在一个时间段只能做一个工程,若再有工程要做,只能等这次的工程完成后才能去。现在的情况是:建筑市场异常火爆,有大量的工程要做,而该地区的建筑队数量只有这1支。那怎么办呢?一般的做法是:给每个工程排好顺序定好工期,做完第一个再做第二个再做第三个及其他。如果这样安排,顺利还好,如果不顺利就会发生这样的事:第三个工程所有的东西都已准备好,而且这个工程的建筑物急等着用,但建筑队却由于第二个工程的资金短缺或其它原因耽误了工期而迟迟不能到来。出现这样的事情是不应该的,那怎样安排工作才能避免这样的事情呢?我们可以这样做:1支建筑队同时承包多个工程,并同建筑单位定好协议:当一个工程由于资金或其他原因不能继续时,建筑队可以暂时离开去其他工地。这样当2号工程资金不到位时,建筑队把该工程的必要信息记录下来并保存起来,然后离开2号工程的工地去3号工程的工地;如果3号工程已经开始了,则建筑队把之前保存的信息取出来按照信息上的说明继续下面的工作,若3号工程也有其他事情需要等待了,则建筑队保存好记录后再去其他工地。这样,建筑队就总是在做工程而不会出现空闲,实现了效率的最大化!这种安排工作的方法就是建筑队版的“嵌入式实时操作系统”!

嵌入式实时操作系统UCOS 2优劣势分析

嵌入式实时操作系统ucos ii的优劣势分析 引言 早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领域所曰益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如VxWorks、PSOS等。这些商业内核性能优越,但价格昂贵,主要用于16位和32位处理器中,针对国内大部分用户使用的51系列8位单片机,可以选择免费的ucos ii。 ucos ii的特点 1.ucos ii是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。 2.ucos ii是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常我们都是在中断服务程序中使高优先级任务进入就绪态(例如发信号),这样退出中断服务程序后,将进行任务切换,高优先级任务将被执行。拿51单片机为例,比较一下就可以发现这样做的好处。假如需要用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,因为这会使得关中断时间过长。所以经常采用的方法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数据处理程序中去。但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间无法确定,系统的实时性不强。如果使用μC/OS-II的话,只要把数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但应该指出的是如果数据处理程序简单,这样做就未必合适。因为ucos ii要求在中断服务程序末尾使用OSINTEXIT函数以判断是否进行任务切换,这需要花费一定的时间。 3.ucos ii和大家所熟知的Linux等分时操作系统不同,它不支持时间片轮转法。ucos ii是一个基于优先级的实时操作系统,每个任务的优先级必须不同,分析它的源码会发现,ucos ii把任务的优先级当做任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。例如,用单

嵌入式实时操作系统中实时调度算法综述

嵌入式实时操作系统中实时调度算法综述 摘要:实时调度是指在有限的系统资源下,为一系列任务决定何时运行,并分配任务运 行除CPU之外的资源,以保证其时间约束、时序约束和资源约束得到满足。一个实时系统可以由单处理器系统来实现,也可以用多处理器系统来实现。实时调度算法是保障实时系统时限性和高可靠性的最重要手段之一。 关键词:嵌入式;实时操作系统;实时调度算法;RTOS;RMS 引言 嵌入式系统在当今的生产和生活中得到了广泛的应用,鉴于嵌入式实时系统的特点,要求任务调度等实时内核功能精简和高效。综合了EDF 和RM调度策略的CSD 调度策略,更加适合嵌入式系统的特点,满足其内核的要求。任务调度策略是实时系统内核的关键部分,如何进行任务调度,使得各个任务能在其期限之内得以完成是实时操作系统的一个重要的研究领域。它的精简和高效,对提高低处理能力,小内存系统整体性能具有重大的意义。 RTOS概述 RTOS,即:实时系统(Real-time operating system),实时系统能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统。它的正确性不仅依赖系统计算的逻辑结果,还依赖于产生这个结果的时间。因此实时系统应该在事先先定义的时间范围内识别和处理离散事件的能力;系统能够处理和储存控制系统所需要的大量数据。对一般的程序来说,大多数是考虑指令执行的逻辑顺序,指令何时执行并不重要。而对实时应用系统的程序就不一样,当外部某激励出现时,系统必须以一定的方式和在限定的时间内响应它,如果已超时,那怕执行结果是正确的,系统也认为是失效的。实时操作系统通常被分为软实时操作系统和硬实时操作系统。前者意味着偶尔错过时限是可以容忍的;后者意味着执行过程不但必须正确而且必须准时。在实时操作系统中,系统将程序分成许多任务(或进程),而每个任务的行为都预先可知,或者是有明确的功能,系统根据一定的调度原则,决定谁可取得执行权,这就是RTOS的核心所在。 实时调度算法 实时调度算法可以分为4类:单处理器静态调度算法、多处理器静态调度算法、单处理器动态调度算法、多处理器动态调度算法。下面分别分析嵌入式操作系统中采用的各种调度方法,以及这些调度方法是如何满足实时性应用的实时要求的。 1 速率单调算法 速率单调算法是一个经典的算法,它是针对那些响应和处理周期性事件的实时任务的,它事先为每个这样的实时任务分配一个与事件频率成正比的优先级。 实现时,就绪队列中的所有任务按照优先级Priority排队,优先级最高的任务排在队首,当处于运行态的任务,由于某种原因挂起时,只要把就绪队列的首元素从就绪队列中取下,使运行任务指针pRunTask指向该元素即可,如果是处于其他状态的任务变为就绪状态,而挂

DSP实时操作系统简介

ENEA公司与OSE实时操作系统简介 一.公司简介 OSE RTOS主要是由瑞典ENEA公司负责开发和技术服务的,一直以来都充当着实时操作系统以及分布式和容错性应用的先锋。公司建立于1968年,由大约700名雇员专门从事实时应用的技术研发和支持工作。ENEA是现今市场上一个飞速发展的RTOS供应商,在过去三年中,该公司的税收以每年70﹪的速度递增。 该公司开发的OSE RTOS支持容错,适用于可从硬件和软件错误中恢复的应用,它的独特的消息传输方式使它能方便地支持多处理机之间的通信。它的客户深入到电信,数据,工控,航空等领域,尤其在电信、军方等方面,该公司已经有了二十多年的开发经验,ENEA 现在已经成为日趋成熟,功能强大,经营灵活的RTOS供应商,也同诸如爱立信,诺西,华为,中兴,诺基亚,波音,NASA,空客等知名公司确定了良好的关系。 二.OSE操作系统的特点 1. 高处理能力 内核中实时性严格的部分都由优化的汇编来实现,特别是使用消息传递机制,使数据处理非常快。 2. 真正适合开发复杂(包括多CPU和多DSP,已经多核DSP)的分布式系统 随着科技发展,嵌入式实时操作系统已经变得越来越复杂,经常会面临两大困难: 不间断的运行(NonStop) 多CPU的分布式系统 (Distribution over many CPUS) 传统的RTOS如果要做到这些,必然会增大消耗,增长开发周期。OSE就是应运而生的新生代的RTOS,解决了这些需求,它支持多种CPU和DSP,为开发商开发不同种处理器组成的分布式系统提供了最快捷的方式。 传统的RTOS是基于单CPU,它虽然可以改进成分布式系统,但用户需要在应用程序中做很多工作。而OSE不同于传统的RTOS,首先是因为它的结构体系有了很大改变,它以消息传递作为主要手段完成CPU/DSP间的通信,还把传统的RTOS必须在应用程序中完成的工作,做到了核心系统中。对于复杂的并行系统来说,OSE提供了一种简单的通信方式,简化了多CPU/DSP的处理。

操作系统简介

1.计算机软件 计算机软件(Computer Software,也称软件,软体)是指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。 计算机软件(Computer Software)是指计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。 软件是用户与硬件之间的接口界面。用户主要是通过软件与计算机进行交流。软件是计算机系统设计的重要依据。为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须通盘考虑软件与硬件的结合,以及用户的要求和软件的要求。 软件的含义 (1)运行时,能够提供所要求功能和性能的指令或计算机程序集合。 (2)程序能够满意地处理信息的数据结构。 (3)描述程序功能需求以及程序如何操作和使用所要求的文档。 编辑本段软件与硬件的不同点 表现形式不同 硬件有形,有色,有味,看得见,摸得着,闻得到。而软件无形,无色,无味,看不见,摸不着,闻不到。软件大多存在人们的脑袋里或纸面上,它的正确与否,是好是坏,一直要到程序在机器上运行才能知道。这就给设计、生产和管理带来许多困难。 生产方式不同 软件是开发,是人的智力的高度发挥,不是传统意义上的硬件制造。尽管软件开发与硬件制造之间有许多共同点,但这两种活动是根本不同的。 要求不同 硬件产品允许有误差,而软件产品却不允许有误差。 维护不同

硬件是要用旧用坏的,在理论上,软件是不会用旧用坏的,但在实际上,软件也会变旧变坏。因为在软件的整个生存期中,一直处于改变(维护)状态。 编辑本段计算机软件的分类 总述 计算机软件总体分为系统软件和应用软件两大类: 系统软件是各类操作系统,如windows、Linux、UNIX等,还包括操作系统的补丁程序及硬件驱动程序,都是系统软件类。 应用软件可以细分的种类就更多了,如工具软件、游戏软件、管理软件等都属于应用软件类。 系统软件 系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。 一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。 应用软件 应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。 较常见的有: 文字处理软件如WPS、Word等 信息管理软件 辅助设计软件如AutoCAD 实时控制软件 教育与娱乐软件 2.操作系统(OS) 操作系统(Operating System,简称OS)是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、

嵌入式实时操作系统报告

学号:1325260453 《嵌入式实时操作系统》课程报告 学院:信息与控制工程学院 专业班级:控制科学与工程 姓名:X X X 成绩:

目次 第一章绪论 (1) 1.1研究背景 (1) 1.2智能手机概述 (1) 1.3L INUX概述 (2) 1.4L INUX主要特性 (3) 1.4.1 开放性 (3) 1.4.2 多用户 (3) 1.4.3 多任务 (3) 1.4.4 良好的用户界面 (3) 1.4.5 设备独立性 (3) 1.4.6 供了丰富的网络功能 (4) 1.4.7 可靠的系统安全 (4) 1.4.8 良好的可移植性 (4) 第二章智能手机操作系统 (5) 2.1智能手机操作系统介绍 (5) 2.2智能手机操作系统比较 (5) 2.2.1 Symbian (5) 2.2.2 Windows Phone (5) 2.2.3 Palm OS (6) 2.2.4 Blackberry (6) 2.2.5 Android (7) 第三章LINUX在智能手机操作系统中的应用 (8) 3.1L INUX的应用 (8) 3.2智能手机系统体系结构 (9) 3.3A NDROID体系结构 (9) 3.3.1 应用层 (10) 3.3.2 应用框架层 (10) 3.3.3 Android运行环境和系统运行库层 (11) 3.3.4 Linux 内核层 (11)

第一章绪论 1.1 研究背景 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。嵌入式系统过去主要应用于工业控制领域。随着以计算机技术和通讯技术为主的信息技术的快速发展,以及Internet的广泛应用,嵌入式系统除了可以在传统的计算机上运行外,还可以广泛应用于PDA(Personal Digital Assistant,个人数字助理)、机顶盒、VCD、DVD、车载PC、手机等众多电子设备。利用嵌入式软件,人们可以使用手持计算机或移动电话收发Email,或者通过Web TV访问Internet,用Web Phone拨打国际长途电话12I。嵌入式系统将广泛应用于信息家电、工业控制、军事应用、POS(Primary Operating System,主操作系统)网络及电子商务和环境工程等各个领域。业界分析家认为在Internet电话、游戏装置和手持通讯装置的推动下,嵌入式系统将会有突飞猛进的发展。它与Internet紧密结合,支持强大的移动性和智能性,并且具备强大的通讯能力。嵌入式系统发展形式逐步多样化,将为用户提供更多的选择。 嵌入式系统和智能手机密不可分。随着嵌入式系统的发展,智能手机也在不断地进化。今天的智能手机已经向话音、数据、图像综合的方向演变。昔日外形笨重、功能单一的智能手机已是明日黄花。2005年,智能手机发展迅猛,不断推出新的产品,可以说是智能手机发展迅猛的一年。智能手机以其强大的功能和便捷的操作等特点得到人们的青睐。 智能手机作为集语音通信、多媒体和掌上电脑功能于一体的移动通信终端产品,其最初源于掌上电脑,智能手机最早于1999年现身,当时摩托罗拉推出天拓A6188手机,是全球第一部具有触摸屏和中文手写识别输入功能的移动电话,被称为PDA手机的鼻祖。这种新颖的功能整合手机面世后,因为价格一直居高不下,所以未能进入广大普通手机消费者的视野,直到2002年,包括摩托罗拉、爱立信、诺基亚等在内的手机业巨头一连推出了9款PDA手机,这时智能手机才渐成气候,逐渐走进平常人的视野。 与传统手机相比,智能手机的优势非常明显,不但内容丰富,还具有可以无限扩展的强大功能以及硬件的可升级性,这使得智能手机能够真正实现通信、电脑和互联网的融合,而要实现智能手机的这些功能,必须依靠移动互联网。正是因为移动互联网所提供的丰富数据业务,智能手机的发展才如此迅速。 1.2智能手机概述 现代经济的飞速发展,人民生活水平大幅度提高,智能手机已逐渐成为人们日常生活的一部分。从外观看,智能手机更像个PDA,它能在手机上欣赏MP3、下载游戏和MTV、

RedHawk Linux实时操作系统简介

RedHawk Linux 实时操作系统简介 美国并行计算机公司的Redhawk Linux 实时操作系统是iHawk 系统的核心。美国并行计算机公司的RedHawk™ Linux® 是符合标准、POSIX 兼容且源代码开放的Red Hat® Linux 操作系统的实时版本。RedHawk Linux 不仅涵盖了流行的Red Hat® Linux 发行版本,更提供了包括:高速I/O 吞吐、对外部事件快速响应的时间确定性,以及进程间通讯优化 等实时特性。对于实时仿真、数据采集和工业控制系统等复杂实时应用,RedHawk 是一个理想的实时Linux 运行环境。RedHawk Linux 采用标准的Red Hat 的用户级命令、实用工具和系统管理工具,并用改进的多线程、全程核心抢占式的低延时实时内核将Red Hat 内核替换,从而获得了实时性能。RedHawk 支持真正的对称多重处理技术,包括:负载平衡和CPU 屏蔽等,并 确保在时间关键型应用中系统的确定性和实时性能最优。譬如,在一个被屏蔽 的处理器内,中断响应时间可保证短于30 微秒。RedHawk 基于多线程、全程抢占式Linux 内核,经过了低延时改进;其对称多处理支持技术包括:负载平衡和CPU 屏蔽等,并确保在时间关键型应用中系统的确定性和实时性能。 真正的实时Linux RedHawk 是标准Linux 操作系统真正的实时变体。RedHawk 提供了单一内核编程环境,可以直接调用所有系统操作,包括:文件I/O、网 络和图形。通常,在复杂的实时应用程序它们经常需要和实时任务一起确定地 控制。只有RedHawk 的单一内核设计才能够保证这一特性。可扩展的SMP 和处理器屏蔽美国并行计算机公司的iHawk 是一个紧耦合对称多重处理实时系统,RedHawk Linux 允许单个CPU 被屏蔽,不受中断、后台进程、bottom halve 和其它Linux 任务的影响。处理器屏蔽提供了具有高确定性的执行环境,保证了对中断的响应。多线程抢占RedHawk Linux 内核允许在内核里同时执

操作系统概述

操作系统概述 组织教学:清点人数,开始上课。 复习: 多媒体系统的组成 授新: 一、操作系统的基本概念 操作系统是为了方便用户和提高计算机的利用率,而对计算机系统资源进行组织和管理的程序集合。用户是一个广义的概念,包括一般用户和软件开发人员等;资源包括处理器、存储器、输入/输出设备等硬件资源,以及程序、数据等软件资源。 二、操作系统的主要特性 1.并发(concurrence) 并行性与并发性这两个概念是既相似又区别的两个概念。并行性是指两个或者多个事件在同一时刻发生,这是一个具有微观意义的概念,即在物理上这些事件是同时发生的;而并发性是指两个或者多个事件在同一时间的间隔内发生,它是一个较为宏观的概念。在多道程序环境下,并发性是指在一段时间内有多道程序在同时运行,但在单处理机的系统中,每一时刻仅能执行一道程序,故微观上这些程序是在交替执行的。 2.共享(sharing) 所谓共享是指,系统中的资源可供内存中多个并发执行的进程共同使用。由于资源的属性不同,故多个进程对资源的共享方式也不同,可以分为:互斥共享方式和同时访问方式 3.虚拟(virtual)

它是指通过技术把一个物理实体变成若干个逻辑上的对应物。在操作系统中虚拟的实现主要是通过分时的使用方法。 4.异步(asynchronism) 在多道程序设计环境下,允许多个进程并发执行,由于资源等因素的限制,通常,进程的执行并非“一气呵成”,而是以“走走停停”的方式运行。 三、操作系统的分类 操作系统有各种分类方法,通常按其系统功能、运行环境及服务对象来分类。尽管分类方法不同,迄今为止的各种操作系统均属于这些操作系统之一或它们的组合:单用户操作系统、批量处理系统、分时系统、实时系统、网络操作系统、分布式操作系统和并行操作系统等。 1.批处理操作系统 批处理操作系统中,用户的作业分批提交并处理,即系统将作业成批输入系统并暂存在外存中,组成后备作业队列,每次按一定的调度原则从后备作业中选择一个或多个装入主存进行处理,作业完成后退出。这些操作由系统自动实现,在系统中形成了一个自动转接的作业流,当一批作业运行完毕,输出结果后,系统便接收下一批作业。 在批处理系统中,用户不能直接干预作业的运行过程,而是将其对作业的控制意图在作业提交前用作业控制语言编制成作业说明书或作业控制卡,这些控制意图可以是作业运行时的资源请求,或是对可能产生的运行错误的相应处理等。作业说明书或作业控制卡在提交作业时,与程序和数据一起提交给系统,由作业控制程序或命令解释程序解释执行,并且提供相应的服务。 批处理操作系统,又分单道批处理系统和多道批处理系统。单道批处理系统比较简单,相当于单用户操作系统。在批处理系统中引入多道程序设计技术后,具有以下的特征。

常见的四种嵌入式操作系统

(一)VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。 VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 (二)Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200KB的ROM。由于嵌入式产品的体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。系统的可用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。 (三)嵌入式Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。 由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从GPL,是开放源代

实时操作系统基本概念

第一章实时操作系统基本概念 操作系统是管理计算机硬件、软件资源,提高资源利用率,方便用户应用计算机的最基本的系统软件。 操作系统一般具有存储管理、进程管理、设备管理、文件管理、作业管理等五项基本功能,表现出并发、共享、虚拟等特征。按追求的目标和所适应的环境,操作系统分为多道批处理系统、分时系统和实时系统。 实时系统是指计算机对特定的输入作出快速反应,以控制发出实时信号的对象。 实时控制系统应用的操作系统是典型的实时操作系统,它要求系统可靠性高,反应速度快,响应速度在ms级甚至ns级。 实时系统大都是具有特殊用途的专用系统,只允许访问有限的专用程序及实现通用操作系统的部分功能,以换起可靠性和实时性。 实时系统有软实时系统和硬实时系统之分。软实时系统要求各任务尽快地执行,在规定的时间内都执行完,而不要求某一具体任务在特定时间内完成。硬实时系统不仅要求各任务在规定的时间内必须完成,而且每个任务必须准时执行。 多数实时系统都是嵌入式的,计算机建在系统内部,用户看不到。 应用程序是一个无限的循环,循环中调用有关函数以完成相应的操作,这部分看成后台行为(background);中断复合程序处理异步事件,这部分看成前台行为(foreground)。后台叫作任务级,前台叫作中断级。

时间相关性很强的操作一般靠中断服务来保存(前台操作),但中断服务产生的信息要交给后方应用程序处理。当后方运行到处理该信息时,才能得到处理。从前台中断到后台任务处理所产生的时差称作任务级响应时间。 多任务运行的实现靠的是CPU(中央处理单元)在许多任务之间转换和调度。CPU只有一个,轮番服务于一系列任务中的某一个。在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。使用多任务,应用程序将更容易设计与维护。 一个任务,也称作一个线程,是一个简单的程序,该程序认为CPU完全只属于自己。实时应用程序的设计包括如何把问题分割成多个任务。每个任务都是整个应用程序的一部分,都被赋予一定的优先级,有自己的一套CPU寄存器和伐空间(如图F2.2所示)。 典型的实时应用程序,每个任务都是一个无限的循环,都可能处在以下5种状态之一——休眠态、就绪态、运行态、挂起态(等待某一事件发生)及被中断态(参见图F2.3)。 休眠态相当于任务驻留在内存中,但不被多任务内核所调度;就绪态意味着任务已经准备好,可以运行,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行;运行态是指任务掌握了CPU的使用权,正在运行中;挂起态也叫做等待事件态(waiting),指任务在等待某一事件的发生(例如等待某外设的I/O操作,等待某共享资源由暂不能使用变成使用状态,等待定时脉冲的到来,或等待超时信号的到来,以结束目前的等待,等等);发生中断时,CPU提供相应的中断服务,原来正在运行的任务不能运行,就进入了被中断状态。 当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(constorage area)(保存到正在运行任务自己的栈区之中,见图(F2.2)。入栈工作完成之后,就把下一个

相关主题
文本预览
相关文档 最新文档