版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践1嵌入式实时操作系统嵌入式实时操作系统C/OSC/OS原理与实践原理与实践教材教材 :嵌入式实时操作系统:嵌入式实时操作系统C/OS分析与实践分析与实践电子工业出版社电子工业出版社作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践2引言:关于图书 1.专业说明 考虑到各专业读者学习方向不同,有些已经学习过操作系统原理,对一般的操作系统原理有一定的认识,有些电子专业的读者并没有深入学习过操作系
2、统原理,另外有些读者对C语言掌握的程度并不太高,因此本书采用由浅入深,层层推进的方 在第一章给出实时操作系统的基础,为以后各章的学习打下基础,满足未学习过操作系统的读者,而学习过操作系统的读者也要掌握本章的内容,因为嵌入式实时操作系统有其个性。代码的讲解上在第2章任务管理的部分尽量详尽,从第3章中断和时间管理开始,因为读者已经具备了或提高了C语言的能力,对读者已经掌握的内容就不赘述,但对新的难点仍给以详尽解析 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践3 2.关于实践 实践是检验真理的标准,所学的知识必须结合实际。
3、除给出在基于Nios II的FPGA系统上移植,前面各章例子都是通过将C/OS移植到PC中,在虚拟的平台下运行C/OS来得到印证。所有代码都包含在VC的一个工程中,打开工程文件就可以看到结构清晰的源代码,因此非常适合读者学习。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践4关于图书3学习什么 通过本书的学习,应能较为全面、深入的掌握嵌入式实时操作系统的基本原理,能够读懂读通C/OS的包括内核、任务管理、时间和中断管理、信号量管理、互斥信号量管理、事件标志组管理、消息邮箱管理、消息队列管理、内存管理的源代码,能将C/O
4、S移植到不同平台中去,并能在移植的过程中知其然又知其所以然,不会出现在没有掌握C/OS而强做移植时出现的困难和错误。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5关于图书4章节介绍 第一章是操作系统和嵌入式实时操作系统的基本原理,第一章是操作系统和嵌入式实时操作系统的基本原理,对于对原理掌握已经比较好的有一定基础的读者可以选对于对原理掌握已经比较好的有一定基础的读者可以选择跳过或略读。择跳过或略读。 第二章是任务管理,是基本内容,需要对数据结构和源第二章是任务管理,是基本内容,需要对数据结构和源代码仔细体会。代码仔
5、细体会。 第三章是时间和中断管理,时间管理包括一些函数,中第三章是时间和中断管理,时间管理包括一些函数,中断管理主要是中断的流程。断管理主要是中断的流程。 第四章、第五章是事件和消息部分,包含了各种事件和第四章、第五章是事件和消息部分,包含了各种事件和消息机制。消息机制。 第六章是内存管理。第六章是内存管理。 第七章是移植的流程分析和在虚拟平台以及具有软核的第七章是移植的流程分析和在虚拟平台以及具有软核的FPGA下的移植。下的移植。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践65.先期知识 学习本课程的先前知识是:C
6、语言,汇编,简单的数据结构。可以同步学习微机原理或单片机、DSP等。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践7关于图书:6.PPT及软件下载与视频为方便读者学习,在电子工业出版社网站提供可在VC下编译的完整源代码,包括例子程序的代码。源代码及PPT可在电子工业出版社网站下载,以用于教学或学习目的。 也可通过邮箱联系笔者。 读者还可以到网站下载C/OS操作系统的源代码及查找相关资料 读者还可以通过作者名或UCOS在百度视频找到本书作者提供的的教学视频(时间有限做的不好请原谅)作者卢有亮作者卢有亮 图书图书PPT和
7、全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践8感谢支持感谢支持 书上有路勤为径书上有路勤为径 学海无涯苦作舟学海无涯苦作舟 购买本人图书的朋友,请不吝发表评购买本人图书的朋友,请不吝发表评价和建议!在此表示感谢!价和建议!在此表示感谢!作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践9关于C/OS-II一一. .要高效的开发嵌入式系统,就离不开嵌入式操作系要高效的开发嵌入式系统,就离不开嵌入式操作系统,一方面,高实时性的操作系统软件是嵌入式软件统,一方面,高实时性的操作系统软件是嵌
8、入式软件的基本要求。另一方面,嵌入式软件开发要想走向标的基本要求。另一方面,嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。准化,就必须使用多任务的操作系统。 二二. C/OS. C/OS正是这样的操作系统,它是高实时性,多正是这样的操作系统,它是高实时性,多任务的操作系统,且是源代码对非商业用途开放的操任务的操作系统,且是源代码对非商业用途开放的操作系统作系统 三三. C/OS. C/OS适用于嵌入式开发,并已在各领域得到广适用于嵌入式开发,并已在各领域得到广泛的应用并获得认可。在百度上搜索泛的应用并获得认可。在百度上搜索ucos,ucos,得到的信息得到的信息条数约条数约1,25
9、0,0001,250,000条。条。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践10章节介绍 第一章是操作系统和嵌入式实时操作系统的基本原理。 第二章是任务管理,是基本内容,需要对数据结构和源代码仔细体会。 第三章是时间和中断管理,时间管理包括一些函数,中断管理主要是中断的流程。 第四章、第五章是事件和消息部分,包含了各种事件和消息机制。 第六章是内存管理。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践11第一章第一章 实时操作系统基础实时
10、操作系统基础 1.1 操作系统概述 1.2 实时操作系统概述 1.3任务 1.4基于优先级的不可剥夺内核 1.5同步与通信 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践121.1 1.1 操作系统概述操作系统概述1. 1.1 1. 1.1 什么是操作系统什么是操作系统操作系统操作系统OS(Operating System)是裸机上的第)是裸机上的第一层软件。操作系统是计一层软件。操作系统是计算机系统中最重要的系统算机系统中最重要的系统软件,是硬件的第一层封软件,是硬件的第一层封装与抽象,在计算机系统装与抽象,在计算机
11、系统中占据着重要的地位,所中占据着重要的地位,所有其他的系统软件与应用有其他的系统软件与应用软件都依赖于操作系统的软件都依赖于操作系统的支持与服务。除提供编程支持与服务。除提供编程接口,操作系统还承担着接口,操作系统还承担着任务管理、事件管理和消任务管理、事件管理和消息通信、息通信、CPU管理、内存管理、内存管理、管理、IO管理等核心功能。管理等核心功能。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践131.1 1.1 操作系统概述操作系统概述1. 1. 2 1. 1. 2 操作系统基本功能操作系统基本功能1.任务管理
12、任务管理任务是程序的一次执行。任务可以任务是程序的一次执行。任务可以分为系统任务和用户任务。系统任分为系统任务和用户任务。系统任务是操作系统本身的任务,如操作务是操作系统本身的任务,如操作系统的主程序,时钟中断服务程序,系统的主程序,时钟中断服务程序,如后面要讲到的空闲任务和统计任如后面要讲到的空闲任务和统计任务等。用户任务是用户应用程序的务等。用户任务是用户应用程序的运行,如用户设计的计算器软件的运行,如用户设计的计算器软件的一次执行或一次执行或WORD软件的运行,软件的运行,如本书中给出的一些用户任务。这如本书中给出的一些用户任务。这些任务都需要任务管理部分来管些任务都需要任务管理部分来管
13、理。理。2.CPU管理管理CPU管理的含义在于多任务管理的含义在于多任务OS对对CPU的分配,也就是分配对的分配,也就是分配对CPU的所有权,简单说,哪个软件正在的所有权,简单说,哪个软件正在运行,占有运行,占有CPU。可以把它归入。可以把它归入任务管理。任务管理。3.内存管理内存管理内存是任务的生存空间。内存管理内存是任务的生存空间。内存管理用于给任务分配内存空间,相应的,用于给任务分配内存空间,相应的,在任务结束后释放内存空间。在任务结束后释放内存空间。4.文件管理文件管理文件管理系统是实现对文件的统一文件管理系统是实现对文件的统一管理,是对文件存储器的存储空间管理,是对文件存储器的存储空
14、间进行组织,分配和回收,负责文件进行组织,分配和回收,负责文件的存储,检索,共享和保护。从用的存储,检索,共享和保护。从用户角度来看,文件系统主要是实现户角度来看,文件系统主要是实现按名取存按名取存,文件系统的用户只要,文件系统的用户只要知道所需文件的文件名,就可存取知道所需文件的文件名,就可存取文件中的信息,而无需知道这些文文件中的信息,而无需知道这些文件究竟存放在什么地方。件究竟存放在什么地方。 5.IO设备管理设备管理管理系统中的各种硬件设备,如打管理系统中的各种硬件设备,如打印机,显示器,硬盘等。很明显,印机,显示器,硬盘等。很明显,用户应用程序应该调用用户应用程序应该调用IO设备管理
15、设备管理模块提供的模块提供的API来对设备进行操作,来对设备进行操作,而不是直接读写硬件。而不是直接读写硬件。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践142 2实时操作系统概述实时操作系统概述实时操作系统RTOS(Real Time Operating System)是指当外界事件或数据产生时,能够接收并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。实时系统与非实时系统的本质区别就在于实时系统中的任务都有时间限制。1.2.
16、1什么是实时操作系统什么是实时操作系统作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践152 2实时操作系统概述实时操作系统概述1.实时操作系统首先是多任务操作系统。2.多级中断机制。3.优先级调度机制。 1.2.1实时操作系统基本特征实时操作系统基本特征作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践163 3任务任务.1任务任务任务是程序的动态表现,在操作系统中体现为线程,是任务是程序的动态表现,在操作系统中体现为线程,是程序的
17、一次执行过程。程序的一次执行过程。程序是静止的,存在于ROM、硬盘等外部设备。任务是运动的,存在于内存中,有睡眠、就绪、运行、阻塞、挂起等多种状态。相同的程序的多次执行是可以的,就形成了多个优先级不同的任务,每一个都是独立的。在实时系统中,把应用程序的设计过程分割为多个任务务,每个任务都有自己的优先级优先级,在操作系统的调度下协调运行。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践171.3任务任务1.3.1多任务多任务void usertask(void *pParam) INT8U i=0; for(;)prin
18、tf(%dn,i);i+;OSTimeDly(100);作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践181.31.3任务任务.1多任务多任务实时操作系统的是多任务的操作系统,系统中必然有多实时操作系统的是多任务的操作系统,系统中必然有多任务在执行。其中有用户任务,如前面的任务在执行。其中有用户任务,如前面的usertask,也,也有操作系统的系统任务如空闲任务和统计任务。多任务有操作系统的系统任务如空闲任务和统计任务。多任务的运行相对于其他的系统,其优点是可以大大提高的运行相对于其他的系统,其优点是可
19、以大大提高CPU的利用率,又必然使应用程序分成多个程序模块,实现的利用率,又必然使应用程序分成多个程序模块,实现模块化,应用程序更易于设计和维护。模块化,应用程序更易于设计和维护。在嵌入式应用的场合的多任务使用的例子是在一个在嵌入式应用的场合的多任务使用的例子是在一个ARM采集处理系统中,同时采集采集处理系统中,同时采集16路信号,同时又要对多信路信号,同时又要对多信号进行处理和传输,可以创建号进行处理和传输,可以创建16个任务负责个任务负责16路信号的路信号的采集,创建一个任务对信号进行处理,再创建一个任务采集,创建一个任务对信号进行处理,再创建一个任务负责数据的传输。负责数据的传输。作者卢
20、有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践193 3任务任务.2多任务多任务作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践203 3任务任务.3任务状态任务状态创创建建任任务务睡睡眠眠态态就就绪绪态态删删除除任任务务运运行行态态任任务务切切换换任任务务切切换换删删除除任任务务阻阻塞塞态态事事件件等等待待删删除除任任务务等等待待的的事事件件发发生生挂挂起起态态中中断断返返回回( (仍仍为为最最高高优优先先级级) )返
21、返回回( (不不是是最最高高优优先先级级) )作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践211.31.3任务任务.3任务状态任务状态1.睡眠态睡眠态任务已经被装入内存了,可是并没任务已经被装入内存了,可是并没有准备好运行。例如上面给出的有准备好运行。例如上面给出的usertask代码,以代码的形式存代码,以代码的形式存在于内存中,在调用在于内存中,在调用OSTaskCreate(任务创建函数)(任务创建函数)创建之前,处于睡眠态。睡眠态的创建之前,处于睡眠态。睡眠态的任务不会得到运行的,操作系统也任
22、务不会得到运行的,操作系统也不会给其设置为运行而准备的数据不会给其设置为运行而准备的数据结构。结构。2.就绪态就绪态当操作系统调用当操作系统调用OSTaskCreate创创建一任务后,任务就进入就绪态。建一任务后,任务就进入就绪态。从图从图1.4还可以看出,任务也可以还可以看出,任务也可以从其他状态转到就绪态。处于就绪从其他状态转到就绪态。处于就绪态的任务操作系统已经为其运行配态的任务操作系统已经为其运行配置好了任务控制块等数据结构,当置好了任务控制块等数据结构,当没有比其更高优先级的任务,或比没有比其更高优先级的任务,或比其优先级更高的任务处于阻塞状态其优先级更高的任务处于阻塞状态的时候,就
23、能被操作系统调度而进的时候,就能被操作系统调度而进入运行态。从就绪态到运行态,操入运行态。从就绪态到运行态,操作系统调用任务切换函数完成。作系统调用任务切换函数完成。3.运行态运行态任务真正占有任务真正占有CPU,得到运行。这时运行的代码就是任务的代码。,得到运行。这时运行的代码就是任务的代码。如如usertask。处于运行态的任务如果运行完成,就会转为睡眠态。处于运行态的任务如果运行完成,就会转为睡眠态。如果有更高优先级的任务抢占了如果有更高优先级的任务抢占了CPU,就会转到就绪态。如果因为,就会转到就绪态。如果因为等待某一事件,例如等待一秒钟的时间,如等待某一事件,例如等待一秒钟的时间,如
24、OSTimeDly(OS_TICKS_PER_SEC),需要暂时放弃,需要暂时放弃CPU的使用的使用权而让其他任务得以运行,就进入了阻塞状态。当由于中断的到来权而让其他任务得以运行,就进入了阻塞状态。当由于中断的到来而使而使CPU进入中断服务程序(进入中断服务程序(ISR),必然使正在运行的任务放弃),必然使正在运行的任务放弃CPU而转入中断服务程序,这时被中断的程序就被挂起而进入挂起而转入中断服务程序,这时被中断的程序就被挂起而进入挂起态。态。总之,任务要得到运行必须进入运行态,总之,任务要得到运行必须进入运行态,CPU只有一个不能让每个只有一个不能让每个任务同时进入运行态,进入运行态的任务
25、有且只有一个。任务同时进入运行态,进入运行态的任务有且只有一个。4.阻塞态阻塞态阻塞对于操作系统的调度,任务的协调运行是非常重要的。我们能阻塞对于操作系统的调度,任务的协调运行是非常重要的。我们能看到图看到图1.3的运行结果,而不是只有一个高优先级的任务得到运行,的运行结果,而不是只有一个高优先级的任务得到运行,就是因为就是因为usertask在没有事情可做,等待一秒钟的时候,不是强在没有事情可做,等待一秒钟的时候,不是强行运行代码,而是把自己阻塞起来,使操作系统可以调度其他的任行运行代码,而是把自己阻塞起来,使操作系统可以调度其他的任务。务。当任务在等待某些还没有被释放的资源,等待一定的时间
26、等时候,当任务在等待某些还没有被释放的资源,等待一定的时间等时候,要阻塞起来,等到条件满足的时候再重新回到就绪态,又能被操作要阻塞起来,等到条件满足的时候再重新回到就绪态,又能被操作系统调度以进入运行态,这是实时系统必须要实现的功能之一。系统调度以进入运行态,这是实时系统必须要实现的功能之一。一些不理解操作系统的同学在编程的时候,在等待的时候常常使用一些不理解操作系统的同学在编程的时候,在等待的时候常常使用FOR循环,不停的执行代码而使循环,不停的执行代码而使CPU的利用率暴增,使系统的运的利用率暴增,使系统的运行环境十分恶劣,甚至造成死机,是不可取的行环境十分恶劣,甚至造成死机,是不可取的5
27、.挂起态挂起态当任务在运行时,因为中断的发生,例如定时器中断每个时钟滴当任务在运行时,因为中断的发生,例如定时器中断每个时钟滴答(答(clock tick,指每个时钟周期)中断一次,而被剥夺指每个时钟周期)中断一次,而被剥夺CPU的使的使用权,而进入挂起态。在中断返回的时候,若该任务还是最高优用权,而进入挂起态。在中断返回的时候,若该任务还是最高优先级的,就恢复运行,如果不是这样,只能回到就绪态。先级的,就恢复运行,如果不是这样,只能回到就绪态。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践221.31.3任务任务1.
28、任务切换任务切换 任务切换就是任务切换就是context switch,是任务调度的重要部分。从字面上是上,是任务调度的重要部分。从字面上是上下文切换。任务切换是暂停一个任务的运行,运行另一个就绪的任务。暂下文切换。任务切换是暂停一个任务的运行,运行另一个就绪的任务。暂停一个任务,以后又能恢复运行,必须考虑将这个任务运行的信息保存,停一个任务,以后又能恢复运行,必须考虑将这个任务运行的信息保存,而恢复运行的时候需要将这些信息恢复到运行环境。而恢复运行的时候需要将这些信息恢复到运行环境。 任务切换必须做环境的保存和恢复的操作。任务切换必须做环境的保存和恢复的操作。 在操作系统移植
29、的时候,任务切换代码就是必须要实现的部分之一。在操作系统移植的时候,任务切换代码就是必须要实现的部分之一。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践231.31.3任务任务1.3.5 1.3.5 可重入和不可重入函数可重入和不可重入函数函数可重入是指一个函数可以被多个任务调用,而不需要担心在任务切换函数可重入是指一个函数可以被多个任务调用,而不需要担心在任务切换的过程中,代码的执行会产生错误的结果。的过程中,代码的执行会产生错误的结果。如果函数被多个任务调用,可能产生错误的结果,就是不可重入函数如果函数被多个任务
30、调用,可能产生错误的结果,就是不可重入函数 。例子:教材表例子:教材表1.4-1.5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践241.4 1.4 内核内核.1内核内核内核是操作系统最核心的部分,其主要功能就内核是操作系统最核心的部分,其主要功能就是进行任务调度。所谓调度,就是决定多任务是进行任务调度。所谓调度,就是决定多任务的运行状态,哪个任务应该处于图的运行状态,哪个任务应该处于图1.4中的哪种中的哪种状态。内核中最最核心的基本服务就是调度的状态。内核中最最核心的基本服务就是调度的核心核心任务切换
31、任务切换C/OS使用的是一种基于优先级的可剥夺型内使用的是一种基于优先级的可剥夺型内核。核。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践251.4 1.4 内核内核.1基于优先级的调度算法基于优先级的调度算法在在C/OS中,可以同时有中,可以同时有64个就绪任务,每个个就绪任务,每个任务都有各自的优先级。优先级用无符号整数任务都有各自的优先级。优先级用无符号整数来表示,从来表示,从0到到63,数字越大则优先级越低。,数字越大则优先级越低。C/OS总是调度就绪了的,优先级最高的任务总是调度就绪了的,优先
32、级最高的任务获得获得CPU的控制权,不管这个任务是什么,执的控制权,不管这个任务是什么,执行什么样的功能,也不管该任务是否已经等了行什么样的功能,也不管该任务是否已经等了很久。很久。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践261.4 1.4 内核内核.1不可剥夺和可剥夺内核不可剥夺和可剥夺内核作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践271.5 1.5 同步和通信同步和通信.1同步同步任务是独立的,但是
33、任务之间又有着各种各样的关系,任务是独立的,但是任务之间又有着各种各样的关系,以成为一个整体,来完成某一项工作。有时候一个任务以成为一个整体,来完成某一项工作。有时候一个任务完成的前提是需要另一个任务给出一个结果,任务之间完成的前提是需要另一个任务给出一个结果,任务之间的这种制约性的合作运行机制叫做任务间的同步。的这种制约性的合作运行机制叫做任务间的同步。例如,例如,A任务实现计算功能,任务实现计算功能,B任务输出任务输出A任务计算的任务计算的结果,然后循环运行。结果,然后循环运行。A任务和任务和B任务就必须同步,否任务就必须同步,否则则B任务输出的可能不是任务输出的可能不是A任务刚完成的结果
34、,或则任务刚完成的结果,或则B任务访问结果时,任务访问结果时,A任务正在修改,因而输出错误的结任务正在修改,因而输出错误的结果。果。A和和B就是必须进行同步的任务。就是必须进行同步的任务。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践281.5 1.5 同步和通信同步和通信.2互斥互斥 前面的例子中,前面的例子中,A和和B两个任务都要访问计算结果这个两个任务都要访问计算结果这个共享资源,但是在共享资源,但是在A写这个资源的同时,写这个资源的同时,B必须等待,必须等待,而不能在而不能在A写到一半的时候结
35、束写到一半的时候结束A而让而让B来读,这样会来读,这样会产生灾难性的后果。产生灾难性的后果。这样的共享资源称为临界资源(这样的共享资源称为临界资源(Critical Resource)。)。这种访问共享资源的排他性就是互斥。这种访问共享资源的排他性就是互斥。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践291.5 1.5 同步和通信同步和通信.3临界区临界区 每个任务中访问共享资源的那段程序称为临界区每个任务中访问共享资源的那段程序称为临界区(Critical Section),因为共享资源的访问是要互
36、斥),因为共享资源的访问是要互斥的。在临界区不允许任务切换,的。在临界区不允许任务切换, 这是最根本的原则。这是最根本的原则。因为如果在访问共享资源的时候进行任务切换,就可能因为如果在访问共享资源的时候进行任务切换,就可能发生前面提到的灾难性后果。因此,在进入临界区访问发生前面提到的灾难性后果。因此,在进入临界区访问共享资源之前,采用关中断,给调度器上锁或使用信号共享资源之前,采用关中断,给调度器上锁或使用信号量的方法,达到互斥的目的。量的方法,达到互斥的目的。 访问临界区的例子访问临界区的例子作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式
37、实时操作系统原理与实践301.5 1.5 同步和通信同步和通信.4任务事件任务事件 事件(事件(Event)就是在操作系统运行过程中发生的事情。)就是在操作系统运行过程中发生的事情。例如任务被挂起、唤醒、创建等。例如任务被挂起、唤醒、创建等。C/OS操作系统在处理任务的同步和通信等环节,大操作系统在处理任务的同步和通信等环节,大量的使用了事件这一概念,创建了事件控制块这样的数量的使用了事件这一概念,创建了事件控制块这样的数据结构以进行事件的管理。据结构以进行事件的管理。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作
38、系统原理与实践311.5 1.5 同步和通信同步和通信.5信号量信号量在一个时刻,有些共享资源只可以被一个任务所占有,在一个时刻,有些共享资源只可以被一个任务所占有,而有些可以被至多而有些可以被至多N个任务所共享。前一种共享资源就个任务所共享。前一种共享资源就好比有一把钥匙,钥匙发出去了,得到钥匙的任务可以好比有一把钥匙,钥匙发出去了,得到钥匙的任务可以访问共享资源,其他请求该资源的任务必须等得到钥匙访问共享资源,其他请求该资源的任务必须等得到钥匙的任务把钥匙归还。后者则可以有的任务把钥匙归还。后者则可以有N把钥匙,如果把钥匙,如果N把把钥匙都发完了,第钥匙都发完了,第N+1个
39、请求访问共享资源的任务就必个请求访问共享资源的任务就必须等待。这些钥匙就可以用信号量(须等待。这些钥匙就可以用信号量(semaphore)来)来表示。表示。信号量标志了共享资源的有效可被访问数量,于是要获信号量标志了共享资源的有效可被访问数量,于是要获得共享资源的访问权,就首先要得到信号量这把钥匙。得共享资源的访问权,就首先要得到信号量这把钥匙。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践321.5 1.5 同步和通信同步和通信.5信号量信号量信号量三种操作:信号量三种操作:1.建立(建立(crea
40、te)建立并初始化信号量,在一个事件块里标志该信号,记录该信号建立并初始化信号量,在一个事件块里标志该信号,记录该信号的量值,执行的是给资源配钥匙的操作。该操作的条件是系统中的量值,执行的是给资源配钥匙的操作。该操作的条件是系统中还有空余的事件块。操作系统能处理的事件是有限的,任何的数还有空余的事件块。操作系统能处理的事件是有限的,任何的数据结构都不能无限,尤其是在实时系统中。据结构都不能无限,尤其是在实时系统中。2.请求(请求(pend)请求信号,如果还有钥匙(信号量大于请求信号,如果还有钥匙(信号量大于0),就去领一把(信号量),就去领一把(信号量-),执行下去;如果没有,就要把自己阻塞掉
41、,因为不能执行下),执行下去;如果没有,就要把自己阻塞掉,因为不能执行下去就不需要再占用宝贵的去就不需要再占用宝贵的CPU。3.释放(释放(post)访问资源的操作完成后就把钥匙交回(信号量访问资源的操作完成后就把钥匙交回(信号量+)。这时,如果)。这时,如果有等待该钥匙的任务就绪,并比当前任务有更高的优先级,就执有等待该钥匙的任务就绪,并比当前任务有更高的优先级,就执行任务调度。否则,原任务在释放信号量之后继续执行。行任务调度。否则,原任务在释放信号量之后继续执行。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践33
42、1.5 1.5 同步和通信同步和通信.6互斥信号量互斥信号量 互斥信号量是一种特殊的信号量,这不仅在于该信号互斥信号量是一种特殊的信号量,这不仅在于该信号量只有用于互斥资源的访问,还在于使用互斥信号量管量只有用于互斥资源的访问,还在于使用互斥信号量管理需要解决的优先级反转问题。理需要解决的优先级反转问题。 如系统中有三个任务分别是高优先级、中优先级和低如系统中有三个任务分别是高优先级、中优先级和低优先级的,当低优先级的任务在运行的时候访问互斥资优先级的,当低优先级的任务在运行的时候访问互斥资源,而中优先级的任务运行的时候将使低优先级的任务源,而中优先级的任务运行的时候将使低优先
43、级的任务得不到运行而死抱着资源不放。这是高优先级的任务开得不到运行而死抱着资源不放。这是高优先级的任务开始运行的时候,必须等待中优先级的任务运行完成,然始运行的时候,必须等待中优先级的任务运行完成,然后等低优先级的任务访问资源完成才行。如果在低优先后等低优先级的任务访问资源完成才行。如果在低优先级的任务访问资源过程中又有中优先级任务运行,那么级的任务访问资源过程中又有中优先级任务运行,那么高优先级的任务只有继续等待。这种情况就是优先级反高优先级的任务只有继续等待。这种情况就是优先级反转转 。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时
44、操作系统原理与实践341.5 1.5 同步和通信同步和通信.7事件标志组事件标志组 在信号量和互斥信号量的管理中,任务请求资源,在信号量和互斥信号量的管理中,任务请求资源,如果资源未被占用就可继续运行,否则只能阻塞,等待如果资源未被占用就可继续运行,否则只能阻塞,等待资源释放的事件发生。这种事件是单一的事件。如果任资源释放的事件发生。这种事件是单一的事件。如果任务要等待多个事件的发生,或多个事件中的某一个事件务要等待多个事件的发生,或多个事件中的某一个事件的发生就可以继续运行,那么就应该采用事件标志组管的发生就可以继续运行,那么就应该采用事件标志组管理。理。 事件标志组管理的条
45、件组合可以是多个事件都发生,事件标志组管理的条件组合可以是多个事件都发生,也可以是多个事件中有任何一个事件发生。尤其特别的也可以是多个事件中有任何一个事件发生。尤其特别的是,还可以是多个事件都没有发生或多个事件中有任何是,还可以是多个事件都没有发生或多个事件中有任何一个事件没有发生。一个事件没有发生。 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践351.5 1.5 同步和通信同步和通信1.5.8 1.5.8 消息邮箱和消息队列消息邮箱和消息队列邮箱邮箱(MailBox)很明显是用于通信的,邮箱中的内容一很明显是用于通信的,邮箱中的内容一般是信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PVC项目财务分析报告
- 年产xxx声表面器件项目可行性分析报告
- 深度解析(2026)《GBT 19027-2025质量管理 GBT 19001-2016的统计技术指南》
- 客户关系经理的考核与激励机制
- 保温集装箱项目可行性分析报告范文
- 特殊人群应急检测方案优化
- 运营经理职位面试题集
- 特殊器械使用的培训体系构建
- 财经记者岗位面试题集
- 蒙牛集团研发部主管岗位技能考试题集含答案
- 智慧树知道网课《艾滋病、性与健康》课后章节测试答案
- 配电施工工艺培训
- 2025年全国教师师德网络培训考试题库及答案
- 2025年医院新进人员岗前培训综合试题(附答案)
- 2025年嫩江市招聘农垦社区工作者(88人)笔试备考试题附答案详解
- 医药行业KA经理工作汇报
- 人工智能在医药健康领域的应用
- 药剂学(本)形考任务1-3参考答案
- 临床植入式心律转复除颤器(ICD)患者护理查房
- 民法总论 课课件 (全套)
- 水下打捞钻头协议书
评论
0/150
提交评论