实时操作系统.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:76 大小:1.7MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

实时操作系统.ppt

实时操作系统.ppt

预览

免费试读已结束,剩余 66 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统介绍嵌入式操作系统的基本概念嵌入式操作系统及其特点典型嵌入式操作系统介绍嵌入式操作系统选型操作系统是一段核心程序作为软硬件资源的控制中心,它以尽量合理有效的方法组织多个用户共享计算机的各种资源。作为一台功能强大的虚拟机,给用户一个方便、有效、安全的工作环境。CPU资源管理存储器管理(内存和外存)设备管理(输入输出设备)实时多任务操作系统(RealTimeOperatingSystem)具有实时性,能支持实时控制系统的工作首要任务:完成实时控制任务次要任务:提高计算机系统的使用效率2.1任务(Task)2.2任务上下文(TaskContext)2.3调度(Scheduler)2.4调度延迟(SchedulerLatency)2.5优先级(Priority)2.6优先级倒置(PriorityInversion)2.7优先级继承(PriorityInheritance)2.8代码临界区(CriticalSection)2.9信号量(Semaphore)2.10任务间通信(intertaskcom)2.11互斥(mutualexclusion)2.12抢占(Preemptive)2.1任务任务举例:voidtask(…){/*变量说明*/while(1){语句;…}}就绪任务获得执行优先级后等待操作系统安排开始执行(等待开始死循环)运行任务执行过程中(资源已获得,死循环中)挂起任务结束(跳出死循环,资源释放)动态性:任务有一定的生命期任务由“创建”而产生,由“撤消”而消亡,因拥有处理器而得到运行。并发性:多个任务同时运行单处理器上的交替、多处理器上的同时性独立性:任务是系统中独立存在的实体只有任务有资格向系统申请资源并有权获得系统提供的服务(任务是资源分配基本单位)。异步性:任务按异步方式运行,各自独立。2.2任务上下文2.3调度先来先服务(FCFS)最短周期优先(SBF)优先级法(Priority)轮转法(Round-Robin)多级队列法(multi-levelqueues)多级反馈队列(multi-levelfeedbackqueues)早就绪的任务排在就绪队列的前面,迟就绪的进程排在就绪队列的后面CPU先运行处于就绪队列之首的任务特点:算法简单易行,但性能较差在就绪队列里,谁执行周期最短就先执行谁在就绪队列里挑选优先级最高的执行非抢占式优先级法和抢占式优先级法最常用、最有效调度方法轮转调度是每次从有序队列头部选出一任务,并给它分配定长运行时间片。若任务在分配的时间片结束之前执行完毕,它就从处理机撤离;若分配的时间片到期,任务还未执行完毕(还需另外的时间片),则它被重新送入队列尾部以等待下次调度。凡新到达的任务被排到队列尾部。系统中设置多个就绪队列,每个队列对应一个优先级第一个队列的优先级最高,第二个队列次之,CPU先执行高优先级队列中的任务各就绪队列中进程的运行时间片不同,高优先级队列的时间片小,低优先级队列的时间片大例如:UNIX、WindowsNT调度延迟是指当一个事件从引起更高优先级的任务就绪到这个任务开始运行之间的时间。简而言之,是一个任务被触发后,由就绪到开始运行的时间。2.5优先级有A、B两个应用程序,A的优先级比B高,但是A在挂起,而B在运行。B需要进行文件操作,发请求给文件服务进程,自己进入挂起,等待文件操作完成。本来在挂起的文件服务进程接受到B的请求后开始为B服务。此时A因某外部事件而变成就绪。发生调度时,A与文件服务进程都是就绪状态。文件服务进程由于优先级高而更为优先。可是文件服务进程代表的是B,因此发生优先级倒置。2.7优先级继承2.8代码临界区2.9信号量利用信号量管理临界资源2.10任务间通信信箱例:利用信箱通信队列例:利用队列进行通信例:利用队列进行通信2.11互斥2.12抢占#include"STC89C51RC_RD_PLUS.H"#include“OSCore.H“//操作系统内核#include“os_Switch.H“//任务切换—调度:抢占式/////////////////////////////主函数main(){OS_InitTick();//时钟节拍初始化………….//其它初始化,根据不同应用程序而不同OS_CreateTask(Run_Time,1);OS_CreateTask(Task1,2);//用户自己的任务,任务创建OS_CreateTask(Task2,3);OS_CreateTask(Task3,4);OS_CreateTask(Task4,5);OS_CreateTask(Task