




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深圳国微技术2005-07-11实时操作系统(RTOS)培训.实时系统概念实时系统是指在确定的时间内完成规定功能,并能对外部异步事件作出正确呼应的计算机系统实时系统分类硬实时系统:结果迟到产生灾难性结果FIRM实时系统:结果迟到会产生难以接受的质量上的降低软实时系统:结果迟到会引起质量下降,系统可以自行恢复衡量系统实时性的3个目的:呼应时间〔ResponseTime〕生存时间〔SurvivalTime〕吞吐量〔Throughput〕.嵌入式系统嵌入式系统通常都是实时系统,其特征为系统的正确性不但依赖于运转逻辑结果的正确性,而且依赖于得到结果所破费的时间系统对于各种外部输入在预定时间内能得到可以预测的结果嵌入式系统通常运用RTOS,其特征为在不同的系统负载下,行为可以预测支持基于优先级的调度MEMORY模型对于RTOS的性能非常重要通常都需求一个时钟来处置义务的同步HRTSRTNRT内存分配SD/SD虚存NNYS-STATICD-DYNAMIC比较.嵌入式系统〔续〕硬件特性体积小,集效果率高面向特定运用低功耗,能在恶劣环境下任务软件特性软件的研发与硬件严密相关软件代码要求高效率和高可靠性软件普通固化在FLASH或ROM中运用工业过程控制军事电子设备和现代武器网络通讯设备消费电子产品.嵌入式实时系统软件特征实时性:反响时间要快,按要求的间隔输出正确时间信号给实时的控制设备多义务并发性:利用适当的战略控制多义务的执行,提高资源的利用效率有处置异步事件的才干快速启动,并有出错处置和自动复位功能嵌入式实时软件是运用程序和操作系统两种软件的一体化程序嵌入式实时软件的开发需求独立的开发平台和交叉开发环境.主要的嵌入式实时操作系统VxWorks运用最广、市场占有率最高的嵌入式实时操作系统,美国WindRiver公司产品VRTX老牌嵌入式实时操作系统pSOSISI公司推出,现已被WindRiver公司收买WinCEMicrosoft公司推出,实时性不太好,主要用于掌上系统PalmOS3Com公司推出,在PDA市场占有很大份额嵌入式Linux源代码免费开放,eCOS是Redhat推出的一款嵌入式LINUX操作系统.前后台系统通常运用于不复杂的小型系统运用程序是一个无限的循环,这部分可以看成后台行为(background)中断效力程序处置异步事件,这部分可以看成前台行为〔foreground〕后台也可以叫做义务级,前台也叫中断级.前后台系统〔续〕.多义务系统CPU在许多义务之间转换、调度,轮番效力于一系列义务中的某一个优点:使CPU的利用率得到最大的发扬使运用程序模块化可以将很复杂的运用程序层次化运用程序将更容易设计与维护.RTOS组成操作系统是硬件与用户之间的一层系统软件,担任管理整个系统,同时将硬件细节与用户隔分开来为用户提供一个更容易了解和进展程序设计的接口操作系统的质量以它的体系构造为根底,确保系统的性能、可靠性、灵敏性、可移植性、可扩展性等,同时定义了硬件与软件的界面,操作系统内部各构件的组织关系系统与用户的接口RTOS资源分配必需思索到实时性要求合理分配优先级支持优先级抢占提供义务同步和互斥支持不同义务之间的数据共享支持外部事件(中断)呼应系统可剪裁,由于资源限制,所采用的操作系统应该有极强的针对性,因此操作系统功可以用即可易于扩展,由于嵌入式设备的功能多样化,要求嵌入式操作系统除提供根本的内核支持外,还需提供越来越多的可扩展功能模块(含用户扩展),如:针对特有运用提供的协议支持、协议扩展,功耗控制等等.RTOS组成(续)HALRTOS根本内核线程线程管理时钟管理中断设备驱动管理通讯管理存储管理RTOS扩展内核接口协议管理其它API.RTOS组成(续)根本内核:嵌入式RTOS中最中心最根底的部分义务〔线程/线程〕管理:担任系统中义务形状的变化中断〔包括时钟中断〕管理:开关中断,完成现场切换和坚持义务〔线程/线程〕通讯管理:信号量、事件、音讯队列等存储管理:分配存储器空间扩展内核:为方便用户运用而对RTOS进展的扩展根据详细运用不同所做的扩展不同CAM运用中表现为对CI接口协议进展管理设备驱动程序接口:RTOS内核与外部硬件之间的一个硬件笼统层定义软件与硬件的界限,方便RTOS的移植晋级运用编程接口:建立在RTOS编程接口之上的面向运用领域的编程接口方便用户编写特定领域的嵌入式运用程序.RTS的呼应时间及时性是实时系统最为重要的特性设计者应该能预测实时系统的行为同步义务由时钟来同步异步事件通常由中断驱动.一个多义务RTOS的事例Resourceallocation&mgmtTaskScheduling&DispatchRealtimeclockInterruptServiceroutinesI/OSubsystemFileMGMTSystemtasksApplicationtasksUserLevelOSLevelCommandprocessor.资源任何为义务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个构造或一个数组等可以被一个以上义务运用的资源叫做共享资源为了防止数据被破坏,每个义务在与共享资源打交道时,必需独占该资源,这叫做互斥〔mutualexclusion〕.义务一个义务也称作一个线程,是一个简单的程序,该程序可以以为CPU完全只属该程序本人每个义务都是整个运用的某一部分,被赋予一定的优先级,有本人的一套CPU存放器和栈空间多义务系统中,恣意时辰只需一个义务占有CPU资源一个义务通常是一个无限的循环,当义务完成以后,义务可以自我删除.TCB〔义务控制块〕TCB在义务建立时将被赋值〔初始化〕TCB是一个数据构造,用来保管该义务的形状:堆栈指针、堆栈大小、义务形状、义务优先级……义务重新得到CPU运用权时,义务控制块能确保义务从当时被中断的那一点丝毫不差地继续执行TCBs全部驻留在RAM中.义务形状每个义务都处在以下5种形状之一:休眠态,就绪态、运转态、挂起态和被中断态休眠态:该义务驻留在内存中,但并不被内核所调度就绪态:该义务曾经预备好运转,但由于优先级比正运转的义务优先级低,还暂时不能运转运转态:掌握了CPU的控制权,正在运转中挂起态:也叫等待态,在等待某一事件的发生中断态:发生中断时,进入相应的中断效力.义务形状变化图WAITINGDORMANTREADYRUNNINGISR.义务形状变化就绪-->运转调度程序选择一个新的线程运转运转-->就绪运转线程用完了时间片运转线程被高优先级线程抢占运转-->等待当一线程必需等待时等待某外设的I/O操作等待某共享资源由暂不能运用变成能运用形状等待定时脉冲的到来或等待超时信号的到来以终了目前的等待……等待-->就绪当所等待的事件发生时.义务切换也称为上下文切换〔ContextSwitch〕当多义务内核决议运转另外的义务时:保管正在运转义务的当前形状〔Context〕,即CPU存放器中的全部内容。这些内容保管在义务本人的栈区之中把下一个将要运转的义务的当前情况从该义务的栈中重新装入CPU的存放器,并开场下一个义务的运转义务切换过程添加了运用程序的额外负荷.义务调度义务调度就是按一定的调度算法从就绪义务中选中一个义务四处置器上运转主要任务:〔1〕记录当前义务形状〔如指令计数器、形状存放器、通用存放器等〕到TCB;〔2〕根据调度算法,在就绪义务中选一个义务;〔3〕回收处置机并分配给选中的义务。.义务调度方式非抢占式调度抢占式调度由于嵌入式操作系统对实时性的较强要求,因此根本上运用抢占式调度。调度算法FIFO:先来先效力短作业优先基于优先级:时间片轮转〔RoundRobin〕:固定时间片可变时间片多级队列算法多级反响队列算法其它组合战略调度算法.非抢占式调度.抢占式调度.可重入性〔Reentrancy〕可重入型函数可以被一个以上的义务调用,而不用担忧数据的破坏可重入型函数任何时候都可以被中断,一段时间以后又可以运转编写可重入型函数需遵照的规那么:运用部分变量,即变量保管在CPU存放器或堆栈中尽量不运用static或extern变量.义务优先级每个义务都有其优先级。义务越重要,赋予的优先级应越高.eCos义务及优先级优先级0~255,优先级的最低3bits忽略,因此0~7、8~15……各组内的优先级一样,组外数值越大,优先级越高eCos义务构造:roottask1task2task3task4task5idle.义务管理创建义务〔CreateTask〕删除义务〔DeleteTask〕挂起义务〔〕唤醒义务〔〕改动义务优先级〔〕获取义务优先级〔〕获取当前义务ID.义务管理(sidsaAPI)t_createULONGt_create(charname[4],ULONGprio,ULONGsstack,ULONGustack,ULONGflags,ULONG*tid)t_startULONGt_start(ULONGtid,ULONGmode,void*start_addr,ULONGtargs[])t_deleteULONGt_delete(ULONGtid)t_suspendULONGt_suspend(ULONGtid)t_resumeULONGt_resume(ULONGtid)t_wkafterULONGtm_wkafter(ULONGticks).义务管理(kernelAPI)cyg_thread_createcyg_thread_exitcyg_thread_killcyg_thread_deletecyg_thread_yieldcyg_thread_delaycyg_thread_suspendcyg_thread_resumecyg_thread_release.义务管理(kernelAPI续)cyg_thread_get_prioritycyg_thread_get_current_prioritycyg_thread_set_prioritycyg_thread_selfcyg_thread_idle_threadcyg_thread_get_stack_basecyg_thread_get_stack_sizecyg_thread_measure_stack_usagecyg_thread_get_nextcyg_thread_get_infocyg_thread_find.义务间通讯及同步共享内存〔ShareMemory〕信号量〔Semaphore〕互斥量〔Mutex〕事件标志〔EventFlag〕音讯邮箱〔MessageBox〕音讯队列〔MessageQueue〕.信号量〔Semaphore〕信号量用于:控制共享资源的运用权(满足互斥条件)标志某事件的发生使两个义务的行为同步一个信号量是一个16位变量,初值为0~65535,值为0表示资源处于锁住形状,非0表示有多个资源,供多个义务访问信号量表示符号:钥匙或旗帜.信号量的P、V操作等待信号量〔P操作〕:假设信号量值大于0,那么信号量值减1,义务得以继续运转假设信号量的值为0,等待信号量的义务被挂起并列入等待信号量义务表释放信号量〔V操作〕:假设没有义务在等待信号量,信号量的值仅仅是简单地加1假设有义务在等待该信号量,那么就会有一个义务进入就绪态,信号量的值也就不加1.P、V操作为原语操作,原语(primitiveoratomicaction):是由假设干多机器指令构成的完成某种特定功能的一段程序,具有不可分割性即原语的执行必需是延续的,在执行过程中不允许被中断实现:开关中断信号量的运用:必需置一次且只能置一次初值初值不能为负数只能执行P、V操作信号量的P、V操作〔续〕.用P、V操作处理线程间互斥问题P(mutex)V(mutex)P1P2P3互斥区P(mutex)P(mutex)V(mutex)V(mutex).优先级反转问题.优先级反转问题〔续〕设计中应留意防止产生优先级反转优先级承继(Priorityinheritance)可处理优先级反转问题.经典的消费者─消费者问题消费者消费者.经典的消费者─消费者问题〔续1〕同步问题: P线程不能往“满〞的缓冲区中放产品,设置信号量为S1Q线程不能从“空〞的缓冲区中取产品,设置信号量S2P:Q:while(true){while(true){消费一个产品;P(s2);P(s1);从缓冲区取产品;送产品到缓冲区;V(s1);V(s2);消费产品;};};S1初值为1,S2初值为0..多个缓冲区的消费者和消费者P:
i=0;
while(true){
消费产品;
P(S1);
往Buffer[i]放产品;
V(S2);
i=(i+1)%n;};Q:j=0;while(true){P(S2);从Buffer[j]取产品;V(S1);消费产品;j=(j+1)%n;};S1初值为n,S2初值为0.Q:j=0;while(true){P(S2);P(mutex2);从Buffer[j]取产品;V(mutex2);V(S1);消费产品;j=(j+1)%n;};n个缓冲区、m个消费者和k个消费者P:
i=0;
while(true){
消费产品;
P(S1);
P(mutex1);往Buffer[i]放产品;V(mutex1);
V(S2);
i=(i+1)%n;};错误S1初值为n,S2初值为0线程数为m线程数为k.Q:j=0;while(true){P(S2);P(mutex2);从Buffer[j]取产品;j=(j+1)%n;V(mutex2);V(S1);消费产品;};n个缓冲区、m个消费者和k个消费者P:
i=0;
while(true){
消费产品;
P(S1);
P(mutex1);往Buffer[i]放产品;i=(i+1)%n;V(mutex1);
V(S2);
};正确S1初值为n,S2初值为0线程数为m线程数为k.1)信号量的物理含义:S>0表示有S个资源可用S=0表示无资源可用S<0那么|S|表示S等待队列中的线程个数P(S):表示恳求一个资源V(S):表示释放一个资源。信号量的初值应该大于等于0信号量及P、V操作讨论.2)P.V操作必需成对出现,有一个P操作就一定有一个V操作当为互斥操作时,它们同处于同一线程当为同步操作时,那么不在同一线程中出现假设P(S1)和P(S2)两个操作在一同,那么P操作的顺序至关重要,一个同步P操作与一个互斥P操作在一同时同步P操作在互斥P操作前而两个V操作无关紧要信号量及P、V操作讨论〔续1〕.3〕P.V操作的优缺陷优点:简单,而且表达才干强〔用P.V操作可处理任何同步互斥问题〕缺陷:不够平安;P.V操作运用不当会出现死锁;遇到复杂同步互斥问题时实现复杂信号量及P、V操作讨论〔续2〕.【思索题】1.用P.V操作处理以下图之同步问题:getcopyputfstg.用P.V操作处理司机与售票员的问题司机线程:while(true){启动车辆正常驾驶到站停车}…售票员线程:while(true){关门售票开门}….信号量管理创建信号量〔SemCreate〕释放信号量〔SemPost〕等待信号量〔SemPend〕信号量为0时义务挂起,永久或有限等待无等待取信号量〔SemAccept〕信号量为0时义务不会挂起,前往0.eCos的信号量管理(sidsaAPI)sm_createULONGsm_create(charname[4],ULONGcount,ULONGflags,ULONG*smid)sm_deleteULONGsm_delete(ULONGsmid)sm_pULONGsm_p(ULONGsmid,ULONGflags,ULONGtimeout)sm_vULONGsm_v(ULONGsmid).eCos的信号量管理(kernelAPI)cyg_semaphore_initcyg_semaphore_destroycyg_semaphore_waitcyg_semaphore_timed_waitcyg_semaphore_trywaitcyg_semaphore_postcyg_semaphore_peek.互斥量〔Mutex〕一个互斥量就是一个同步对象,用于多义务串行访问共享数据只需一个义务可以获得和拥有一个互斥量,也只需这个义务随后才干释放这个互斥量互斥量是取值为0-1的二元信号量.互斥量管理创建互斥量〔MutexCreate〕删除互斥量〔MutexDelete〕等待互斥量〔MutexPend〕释放互斥量〔MutexPost〕无等待获取互斥量〔MutexAccept〕.互斥量管理(sidsaAPI)NA.互斥量管理(kernelAPI)cyg_mutex_initcyg_mutex_destroycyg_mutex_lockcyg_mutex_trylockcyg_mutex_unlockcyg_mutex_releasecyg_mutex_set_ceilingcyg_mutex_set_protocol.事件标志(EventFlags)事件标志用于义务与多个事件的同步独立型同步(即逻辑或关系):义务需求与任何事件之一发生同步关联型同步(逻辑与关系):义务需求与假设干事件都发生了同步事件标志通常为32位变量,每个事件占一位(bit),当一个标志处于设置形状〔1〕时,表示相关事件曾经发生.事件标志组管理创建事件标志组〔FLagCreate〕置位事件标志〔FlagPost〕等待事件标志位〔FlagPend〕无等待获取事件标志位〔FlagAccept〕去除事件标志位〔FlagClear〕在再次发送事件标志前,应先去除该标志.事件标志组管理(sidsaAPI)ev_sendULONGev_send(ULONGtid,ULONGevents)ev_receiveULONGev_receive(ULONGevents,ULONGflags,ULONGtimeout,ULONG*events_r).事件标志组管理(kernelAPI)cyg_flag_initcyg_flag_destroycyg_flag_setbitscyg_flag_maskbitscyg_flag_waitcyg_flag_timed_waitcyg_flag_pollcyg_flag_peekcyg_flag_waiting.音讯邮箱〔MessageBox〕音讯邮箱也称作交换音讯,是用一个指针型变量放到邮箱,该指针指向的内容就是那那么音讯音讯邮箱用于一个线程向另一个线程发送音讯,实现线程间通讯用一个I字表示邮箱符号.音讯邮箱管理创建邮箱〔MboxCreate〕发送音讯〔MboxPost〕音讯放入邮箱后,或者是把音讯传给等待音讯的义务表中优先级最高的那个义务(基于优先级),或者是将音讯传给最先开场等待音讯的义务(基于先进先出)邮箱只能保管一个音讯,试图向已存有音讯的邮箱发送音讯会导致“邮箱满〞错误等待音讯〔MboxPend〕等待音讯的义务会由于邮箱是空的而被挂起,且被记录到等待音讯的义务表中,直到收到音讯无等待取音讯〔MboxAccept〕假设邮箱是空的义务也不会挂起,此时前往值为NULL表示无音讯.音讯邮箱管理(sidsaAPI)NA.音讯邮箱管理(kernelAPI)cyg_mbox_createcyg_mbox_deletecyg_mbox_getcyg_mbox_timed_getcyg_mbox_trygetcyg_mbox_peekcyg_mbox_peek_itemcyg_mbox_putcyg_mbox_timed_putcyg_mbox_tryputcyg_mbox_waiting_to_getcyg_mbox_waiting_to_put.音讯队列〔MessageQueue〕音讯队列实践上是邮箱阵列义务先得到的是最先进入音讯队列的音讯,即先进先出原那么(FIFO)用2个I字表示邮箱队列符号.音讯队列管理创建音讯队列〔QCreate〕发送音讯〔QPost〕音讯放入音讯队列后,或者是把音讯传给等待音讯的义务表中优先级最高的那个义务(基于优先级),或者是将音讯传给最先开场等待音讯的义务(基于先进先出)假设音讯队列内的音讯已满,会导致“音讯满〞错误等待音讯〔QPend〕等待音讯的义务会由于音讯队列是空的而被挂起,直到收到音讯无等待取音讯〔QAccept〕假设邮箱是空的义务也不会挂起,此时前往值为NULL表示无音讯.音讯队列管理(sidsaAPI)q_createULONGq_create(charname[4],ULONGcount,ULONGflags,ULONG*qid)q_deleteULONGq_delete(ULONGqid)q_sendULONGq_send(ULONGqid,ULONGmsg_buf[4])q_receiveULONGq_receive(ULONGqid,ULONGflags,ULONGtimeout,ULONGmsg_buf[4]).音讯队列管理(kernelAPI)NA.设备驱动程序概述1、I/O的特点〔1〕I/O性能经常成为系统性能的瓶颈CPU性能不等于系统性能,呼应时间也是一个重要要素CPU性能越高,与I/O差距越大 弥补:更多的线程线程切换多,系统开销大〔2〕操作系统庞大复杂的缘由之一是:资源多、杂,并发,均来自I/O外设种类繁多,构造各异输入输出数据信号类型不同速度差别很大〔3〕了解I/O的任务过程与构造是了解操作系统的任务过程与构造的关键.〔1〕按照用户的恳求,控制设备的各种操作,完成I/O设备与内存之间的数据交换〔包括设备分配与回收;设备驱动程序;设备中断处置;缓冲区管理〕,最终完成用户的I/O恳求设备分配与回收记录设备的形状根据用户的恳求和设备的类型,采用一定的分配算法,选择一条数据通路建立一致的独立于设备的接口完成设备驱动程序,实现真正的I/O操作处置外部设备的中断处置管理I/O缓冲区设备管理的目的和义务.〔2〕向用户提供运用外部设备的方便接口,运用户摆脱繁琐的编程负担方便性友好界面透明性 屏蔽硬件细节〔设备的物理细节,错误处置,不同I/O的差别性〕〔3〕充分利用各种技术〔通道,中断,缓冲等〕提高CPU与设备、设备与设备之间的并行任务才干,充分利用资源,提高资源利用率并行性平衡性〔使设备充分忙碌〕设备管理的目的和义务(续).〔4〕保证多个线程竞争运用设备时,按一定战略分配和管理各种设备,使系统能有条不紊的任务〔5〕维护设备传送或管理的数据应该是平安的、不被破坏的、严密的〔6〕与设备无关性〔设备独立性〕用户在编制程序时,运用逻辑设备名,由系统实现逻辑设备到物理设备〔实践设备〕的转换,用户能独立于详细物理设备而方便的运用设备设备管理的目的和义务(续).用户恳求运用设备时,只需求指定设备类型,而无须指定详细物理设备,系统根据当前的恳
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度购房贷款金融科技应用合同
- 2025年度智能车间外包运营合同
- 计算机技术与软件职业资格试题及答案
- 2025年度电视广告联播合作协议合同
- 二零二五年度房地产代理加盟合同示范文本
- 二零二五年度个人对个人助学借款合同
- 二零二五年度企业核心高管聘用合同:战略合作伙伴关系协议
- 2025年度美容院加盟品牌形象推广合作协议
- 二零二五年度个人房屋租赁合同(含租赁合同签订及生效)
- 2025年度酒店客房预订及特色餐饮服务合同
- 江苏省连云港市七校2023-2024学年高一下学期期中联考英语试题
- 新人教小学三年级数学下册两位数乘两位数第1课时《口算乘法(一)》示范教学设计
- 高速船驾驶员题库
- 民俗文化彝族火把节文化介绍
- 天然植物药课件讲解
- 国际爱牙日课件
- (附答案)2024公需课《百县千镇万村高质量发展工程与城乡区域协调发展》试题广东公需科
- MOOC 网络技术与应用-南京邮电大学 中国大学慕课答案
- PCB高纯化学品行业相关项目实施计划
- 极兔速递分拣流程优化设计方案
- 农业科技科普活动方案策划
评论
0/150
提交评论