![[7]嵌入式操作系统原理_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/22/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee1.gif)
![[7]嵌入式操作系统原理_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/22/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee2.gif)
![[7]嵌入式操作系统原理_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/22/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee3.gif)
![[7]嵌入式操作系统原理_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/22/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee4.gif)
![[7]嵌入式操作系统原理_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/22/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee/b3e844a6-e2f9-409a-8d94-8c4fde7f1fee5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三讲第三讲嵌入式操作系统原理嵌入式操作系统原理操作系统概念任务/进程内核进程间同步与通信中断管理1.操作系统概念1.1操作系统基本功能控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。UNIX DOS Linux Windows 98 Windows NT扩充机器功能,方便用户使用;提高系统效率。存储器管理、处理机管理、设备管理、文件管理、用户接口1.2 操作系统的形成和发展操作系统的形成和发展手工阶段批处理多道程序设计技术和多道成批系统分时 操作系统实时操作系统网络操作系统分布式系统1.2.1多道程序设计技术和多道成批系统多
2、道程序设计技术和多道成批系统n多道程序设计技术:在计算机内存中同时存放几道相互独立的程序,它们在管理程序的控制下相互穿插地运行。n多道 宏观上并行 微观上串行n批量操作系统:该系统把用户提交的作业成批地送入计算机内存,然后由作业调度程序自动地选择作业运行。n优点:缩短作业之间的交接时间,减少处理机的空闲等待时间,提高系统的吞吐量。缺点:用户响应时间较长。用户既不能了解自己程序的运行情况,也不能控制计算机。1.2.2 分时分时 操作系统操作系统由于中断技术的使用,使得一台计算机能连接多个用户终端,用户可通过各自的终端使用和控制计算机,我们把一台计算机连接多个终端的计算机系统称为分时计算机系统,或
3、称分时系统。把处理机的响应时间分成若于个大小相等(或不相等)的时间单位,称为时间片(如100毫秒),每个终端用户获得CPU,就等于获得一个时间片,该用户程序开始运行,当时间片到(用完),用户程序暂停运行,等待下一次运行。2. 任务/进程操作系统的特性之一是并发与共享,即在系统中(内存)同时存在几个相互独立的程序,这些程序在系统中既交叉地运行,又要共享系统中的资源,这就会引起一系列的问题,包括:对资源的竞争、运行程序之间的通信、程序之间的合作与协同等符。要解决这些问题,用程序的概念已经不能描述程序在内存中运行的状态,必须引人新的概念进程。2.1 任务/进程概念行为的一个规则叫做程序,程序在处理机
4、上执行时所发生的活动称为进程(Dijkstra)。进程是这样的计算部分,它是可以和其它计算并行的一个计算。(Donovan)进程(有时称为任务)是一个程序与其数据一道通过处理机的执行所发生的活动。(Alan.C. Shaw)进程是执行中的程序。(Ken Thompson and Dennis Ritchie )进程,即是程序在并发环境中的执行过程 。2.1 进程与程序的区别进程是动态概念;程序是静态概念进程具有并发性,宏观上同时运行;程序本身具有顺序性,程序的并发执行是通过进程实现的进程具有独立性,是一个能独立运行的单位,是系统资源分配的基本单位,是运行调度的基本单位;程序本身没有此特性进程和
5、程序无一一对应关系,一个进程可顺序执行多个程序;一个程序可由多个进程共用进程异步前进,会相互制约;程序不具备此特性进程实体具有一定结构,组成进程映象;程序没有这种结构2.2 任务/进程特点一个任务也可以称为一个进程。每个任务都是整个应用系统的一个部分。每个任务都赋予一定的优先级,有自己一套CPU寄存器和自己的栈空间。典型的每个任务都是一个无限循环,每个任务都存在某种状态下:休眠态、运行态、挂起态(等待某一个事件发生)和被中断态。任务 多任务2.3进程描述在系统中一个进程存在: 进程控制块(数据结构) 进程的执行程序(一个可执行文件) 进程总是位于某个队列(就绪、等待某事件队列) 处于某种状态(
6、运行、就绪、等待) 占用某些系统资源(内存,打开某些文件、处理机、外设)进程描述进程控制块 PCB (Process Control Block)存放进程的管理和控制信息的数据结构称为进程控制块。它是进程管理和控制的最重要的数据结构,在创建时,建立PCB,并伴随进程运行的全过程,直到进程撤消而撤消。PCB就象我们的户口。2.4 任务状态休眠态 - 该任务驻留在内存中,但并不被多任务内核所调度。就绪态 - 任务已经准备好,但由于该任务的优先级比正在运行的任务的优先级低,暂时不能运行。运行态 - 该任务掌握了CPU的控制权,正在运行中。挂起态 - 也称为等待事件态,指该任务正在等待某一个或一些事件
7、的发生。被中断态 - 由于CPU开始处理中断请求,使该任务的执行被打断。2022-4-14任务的运行状态l每个任务都有确定的状态,而同时只能是一个任务占有CPU;l拥有运行权的任务一定是就绪任务中优先级最高的。睡眠状态就绪状态运行状态等待状态ISR被删除的任务退出中断调度程序启动就绪的最高优先级任务被更高优先级的任务抢夺运行权刚创建的任务等待某个事件事件发生或超时进入中断3. 内核内核负责为每个任务分配CPU时间。内核负责任务间通信。内核负责任务切换工作。负责任务调度,按照一定的策略,在就绪态的任务中选择一个任务执行。实时内核调度算法基于优先级调度,总是让处于就绪态的优先级最高的任务先运行。3
8、.1 非占先式内核 非占先式内核 non-preemptive - 内核要求每个任务自我放弃CPU的所有权。 - 中断可以使一个高优先级的任务由挂起状态变为就绪态,但中断服务以后控制权还是回到原来被中断的那个任务,直到该任务主动放弃CPU的使用权。 - 更高优先权的任务不能打断正在执行的较低优先权的任务,直到较低优先权任务主动放弃CPU的控制权。非占先式内核3.2 占先式内核 占先式内核 preemptive - 最高优先级的任务一旦就绪,总能得到CPU的控制权。 - 高优先级的就绪任务可以打断正在执行的较低优先级的任务,进入执行态;被抢占的较低优先级任务进入就绪任务队列,等待下一次调度。 -
9、 商业上销售的实时内核都是抢占式内核。占先式内核3.3 可重入性 可重入性 reentrancy -可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。 - 可重入型函数任何时候可以被中断,一段时间后又可以执行,而相应的数据不会丢失。 - 可重入型函数只使用局部变量,即变量保存在CPU寄存器中或堆栈中。可重入型函数不可重入型函数3.4 时间片轮转调度时间片轮转调度 round-robin scheduling当两个或两个以上的任务具有同样的优先级,内核运行一个任务运行事先确定的一段时间,叫做时间额度(quantum),然后切换给另一个任务。满足下列条件时,把CPU控制权交给下一个就绪任
10、务 - 当前任务无事可作。 - 当前任务的时间片还没有用完任务就结束了。 - 当前任务的时间片用完了。3.5 基于优先级调度根据任务的优先级和状态决定任务的调度。基于优先级抢占式调度。基于优先级非抢占式调度。任务优先级静态优先级 - 任务在执行过程中优先级不改变,各个任务的优先级在编译时就确定了。动态优先级 - 任务在执行过程中,优先级是可变的。3.6 优先级反转高优先级的任务在申请已经被低优先级任务占据的资源时,高优先级被迫进入等待态,如果有一个中优先级的任务一直在执行,则高优先级将无法执行。优先级反转问题实例优先级反转的解决方法 优先级继承 - 拥有资源的低优先级任务被高优先级抢占。 -
11、高优先级任务开始申请被低优先级占据的资源。 - 此时,拥有该资源的低优先级任务的优先级上升到高于高优先级的任务。 - 拥有资源的任务得到运行机会,就有机会尽快释放资源。 - 释放资源,该任务回到原来的优先级。 - 高优先级任务得到运行机会,占有资源。4. 进程间同步与通信在多道程序的环境中,系统中的多个进程可以并发执行,同时它们又要共享系统中的资源,这些资源有些是可共享使用的,如磁盘,有些是以独占方式使用的,如打印机。由此将会引起一系列的矛盾,产生错综复杂的相互制约的关系。 产生这种错综复杂的相互制约关系的原因有二: 资源共享 进程合作4.1 临界与互斥临界与互斥1. 临界资源:一次仅允许一个
12、进程使用的资源称为临界资源。2、临界区:每个进程中访问临界资源的那段程序段称为临界区(临界段)。互斥:在操作系统中,当某一进程正在访问某临界区时,就不允许其它进程进入,否则就会发生(后果)无法估计的错误。我们把进程之间的这种相互制约的关系称为互斥。4.2 信号量信号量信号量 semaphore - 控制共享资源的使用权 - 标志某个事件发生 - 使两个任务的行为同步二进制信号量 - 信号只有两个值0和1计数式信号量 - 信号有一个取值范围,例如0-255信号量信号量的操作创建 Create - 初始化二进制或计数式信号量的信号值等待 Wait - 如果信号量值非0,则得到信号,信号量值减1给信
13、号 Signal - 信号量值加133互斥型信号量:通常表现为一个二值型信号,用一位二进制位来表示(1/0),可以实现共享资源的独占式占用。计数信号量:通常表现为一个递减的计数器信号,可以实现若干个同类资源的共享,提高资源使用效率。二进制信号量计数式信号量364.3 消息邮箱消息邮箱 指向保存任务间传递信息的存储空间(缓存区)的指针结构称为消息邮箱。374.4 消息队列消息队列 若消息邮箱被定义成拥有若干个元素的数组,用来传递多个消息的地址指针,这样消息的数据结构称为消息队列。4.5死锁死锁死锁 dead lock - 指两个任务无限期地互相等待对方控制的资源。防止死锁的方法 - 先得到全部的
14、资源再做下一步工作。 - 所有任务用同样的顺序去申请多个资源。 - 释放资源时使用相反的顺序。 - 定义任务等待资源的时间,如果一段时间内没有等到资源就产生超时,化解死锁。4.6事件标志事件标志应用于任务和多个事件同步的场合。独立型事件标志 - 任何等待的一个事件发生,则唤醒任务关联型事件标志 - 所有等待的事件同时发生,则唤醒任务事件标志42消息邮箱及其操作一、消息邮箱 任务与任务间要传递一个数据,为了适应不同数据的需要,最好在存储中建立一个数据缓冲区,把要传递的数据放在该缓冲区中,从而实现任务间的数据通信。消息邮箱消息邮箱 message mail box - 通过内核一个任务或一个中断服
15、务程序可以把一则消息(一个指针)放到邮箱中。 - 通过内核一个或多个任务可以通过内核接收这则消息。 - 每个邮箱有相应的等待消息的任务列表,如果邮箱为空,则等待消息的任务将被挂起。 - 每个邮箱也应该有相应的发送消息的任务列表,如果邮箱满,则发送消息的任务将被挂起。44二、消息邮箱的操作OS_EVENT *OSMboxCreate (void *msg) OS_EVENT *pevent; OS_ENTER_CRITICAL(); pevent = OSEventFreeList; if (OSEventFreeList != (OS_EVENT *)0) OSEventFreeList =
16、(OS_EVENT *)OSEventFreeList-OSEventPtr; OS_EXIT_CRITICAL(); if (pevent != (OS_EVENT *)0) pevent-OSEventType = OS_EVENT_TYPE_MBOX; (1) pevent-OSEventPtr = msg; (2) OSEventWaitListInit(pevent); return (pevent); (3)创建邮箱1.邮箱的创建452.发送一个消息到邮箱中:OSMboxPost()/ OSMboxPostOpt() INT8U OSMboxPost ( OS_EVENT *pev
17、ent, void *msg ) INT8U OSMboxPostOpt ( OS_EVENT *pevent, void *msg, INT8U opt ) 463.等待一个邮箱中的消息: OSMboxPend()/OSMboxAccept() void *OSMboxPend( OS_EVENT *pevent, INT16U timeout, INT8U *err ) void *OSMboxAccept( OS_EVENT *pevent ) 474.查询一个邮箱的状态查询一个邮箱的状态, OSMboxQuery(), OSMboxQuery() INT8U OSMboxQuery (
18、 OS_EVENT*pevent, OS_MBOX_DATA *pdata ) Typedef structvoid *OSMsg;INTU8U OSEvenTb1OS_EVENT_TBL_SIZE;INT8U OSEventGrp;OS_MBOX_DATA;5.删除删除邮箱邮箱, OSMboxDel(), OSMboxDel() OS_EVENT *OSMboxDel ( OS_EVENT*pevent, INT8U opt INT8U *err ) 48消息队列及其操作一、消息队列 消息队列可以传递多条消息,通常由三部分组成:事件控制块、消息对列和消息.消息队列消息队列 message q
19、ueue - 消息队列实际上是邮箱阵列。 - 通过内核一个任务或一个中断服务程序可以把一则消息(一个指针)放到消息队列中。 - 通过内核一个或多个任务可以通过内核接收这则消息。 - 每个消息队列有相应的等待消息的任务列表,如果消息队列为空,则等待消息的任务将被挂起。 - 每个消息队列也应该有相应的发送消息的任务列表,如果消息队列满,则发送消息的任务将被挂起。501.消息指针数组 消息指针数组结构51 OSQPtr在空闲队列控制块中链接所有的队列控制块。一旦建立了消息队列,该域就不再有用了。 OSQStart是指向消息队列的指针数组的起始地址的指针。用户应用程序在使用消息队列之前必须先定义该数组
20、。 OSQEnd是指向消息队列结束单元的下一个地址的指针。该指针使得消息队列构成一个循环的缓冲区。 OSQIn是指向消息队列中插入下一条消息的位置的指针。当OSQIn和.OSQEnd相等时,OSQIn被调整指向消息队列的起始单元。52 OSQOut是指向消息队列中下一个取出消息的位置的指针。当OSQOut和OSQEnd相等时,OSQOut被调整指向消息队列的起始单元。 OSQSize是消息队列中总的单元数。该值是在建立消息队列时由用户应用程序决定的。在C/OS-II中,该值最大可以是65,535。 OSQEntries是消息队列中当前的消息数量。当消息队列是空的时,该值为0。当消息队列满了以后
21、,该值和OSQSize值一样。 在消息队列刚刚建立时,该值为0。53 系统把消息指针数组的基本参数都记录在一个叫做队列控制块(OS_Q)的结构中。并用队列控制块中的指针OSQPtr将所有队列控制块链接为链表。2.队列控制块 54一、消息队列的操作1.消息队列的创建,OSQCreate() OS_EVENT *OSQCreate ( void *start, INT16U size ) 2.等待一个消息队列中的消息,OSQPend()/OSQAccept() void *OSQPend ( OS_EVENT *pevent, INT16U timeout, INT8U *err ) void *
22、OSQAccept ( OS_EVENT *pevent )553.向消息队列发送一个消息(FIFO),OSQPost()和OSQPostOpt() INT8U OSQPost ( OS_EVENT *pevent, void *msg ) INT8U OSQPostOpt ( OS_EVENT *pevent, void *msg. INT8U opt ) 564.清空一个消息队列, OSQFlush() INT8U OSQFlush (OS_EVENT *pevent) OS_Q *pq; OS_ENTER_CRITICAL(); if (pevent-OSEventType != OS_
23、EVENT_TYPE_Q) (1) OS_EXIT_CRITICAL(); return (OS_ERR_EVENT_TYPE); pq = pevent-OSEventPtr; pq-OSQIn = pq-OSQStart; (2) pq-OSQOut = pq-OSQStart; pq-OSQEntries = 0; OS_EXIT_CRITICAL(); return (OS_NO_ERR);575.删除一个消息队列, OSQDEL() OS_EVENT OSQDel ( OS_EVENT *pevent ) ;6.查询消息队列,OSQQuery() OS_EVENT OSQQuery ( OS_EVENT *pevent, OS_Q_DATA *pdata ) ;T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 升旗杆制作合同范本
- 个性门面转让合同范本
- 农村土地口头出售合同范本
- 冷却塔维保合同范本
- 全国施工合同范本
- 劳动班组合同范本
- 厂房拆卸安全合同范本
- 厂房储罐出租合同范例
- 乡村协议用工合同范本
- 刷脸合同范本
- 《中小学科学教育工作指南》解读与培训
- 学校食堂“三同三公开”制度实施方案
- 跨学科主题学习的意义与设计思路
- 2025年浙江国企台州黄岩站场管理服务有限公司招聘笔试参考题库附带答案详解
- 2025年医院财务工作计划(2篇)
- DB32T 4969-2024大型医用设备使用监督管理平台基础数据采集规范
- 2025年大连长兴开发建设限公司工作人员公开招聘高频重点提升(共500题)附带答案详解
- 教科版三年级下册科学全册单元教材分析
- 《物理学的发展史》课件
- 2025年广东广州市海珠区官洲街道办事处政府雇员招聘5人高频重点提升(共500题)附带答案详解
- 《道路交通安全法》课件完整版
评论
0/150
提交评论