每当有任务申请信号量时,如果信号量计数器OSEventCnt的值大于0,则把OSEventCnt减1,并使任务继续运行;如果OSEventCnt的值为0,则会将任务列入任务等待表OSEventTbl[],而使任务处于等待状态。
如果有正在使用信号量的任务释放了该信号量,则会在等待任务表中找出优先级别最高的等待任务,并在使他就绪后调用调度器引发一次调度;如果任务等待表中已经没有等待任务,则信号量计数器只会简单的加1.
2. 使用信号量可在应用程序中完成哪些工作?
任务间通信,完成共享资源的访问和任务的同步执行。
3.什么叫优先级反转?这种现象会在什么情况下发生?有什么危害?
在可剥夺型内核中,当任务以独占方式使用共享资源时,会出现低优先级任务先于高优先级任务而被运行的情况,优为先级反转。
产生优先级反转现象的原因:这是因为一个低优先级任务在获得信号量使用共享资源期间,被高优先级任务所打断而不能释放信号量,从而使正在等待该信号量的高优先级任务因得不到信号量而被迫处于等待状态。在等待期间,就让占据该信号量的低优先级任务先运行。
后果:如果这种情况发生较多,则会极大地恶化优先级任务地运行环境。
4. 互斥型信号量是如何防止优先级反转的?
使获得信号量任务的优先级别在使用共享资源期间暂时提升到所有任务最高优先级的高一个级别上,以使该任务不被其他任务所打断,从而能尽快地使用完共享资源并释放信号量;然后在释放完信号量之后再恢复该任务原来的优先级别。
5.什么叫消息邮箱?
消息邮箱是能在任务之间传递消息指针的数据结构。
在任务与任务之间通信时,建立一个数据缓冲区用来存放要传递的数据,同时将该数据缓冲区的指针赋给事件控制块成员OSEventPtr,并且事件控制块的成员OSEventType为常数OS_EVENT_TYPE_MBOX,则该事件控制块就叫做消息邮箱。
6. 能否使用全局变量来实现任务间的通信?如果可以,它有什么缺点? 全局变量只能传递信息,但不能同步任务。因此只能用于两种情况: 1.不需要行为同步,想用时就用这个全局变量。
2.同步要求不实时,可以让另一个任务定期去查询该全局变量是否被“生产”。
7.使用消息邮箱实现任务之间的通信有什么好处?
其一,是使消息的传递速度大大增加。其二,如果只传递一条消息的话,操作更为简单。其三,消息邮箱可以适应不同数据的需要
8.什么是消息队列?
消息队列是能在任务之间传递一组消息指针的数据结构。
9.想一想,在应用程序中消息队列都可以做一些什么工作?
第五章
1.叙述信号量集的工作过程。
在uc/osII中请求信号量集的任务得以继续运行的条件与所请求的信号量之间存在两种逻辑关系:与关系和或关系。在与关系下,只有当任务所请求的信号量都有效时,任务才能继续运行;在或关系下,只要在任务所请求的信号量中有信号有效,任务就会继续进行。
2. 使用信号量集可以在应用程序中完成哪些工作? 1.创建信号量集; 2.请求信号量集;
3.向信号量集发信号; 4.查询信号量集的状态; 5.删除信号量集。
第六章
1.什么叫内存分区?什么叫内存块?内存分区与内存块之间有什么关系? uC/OS-II能够解决内存碎片问题及执行时间固定,对内存进行两级管理。将大片连续内存分成若干个分区,每个分区又分成若干大小相等的内存块来进行管理。操作系统以分区为单位管理动态内存,任务以内存块为单位来获得与释放动态内存。内存分区及内存块的使用情况由内存控制块来记录,内存控制块是由uC/OS-II为每个内存分区定义的一个数据结构,系统用它来记录和跟踪每一个内存分区的状态。
2.在同一个内存分区中内存块是按什么方式组织起来的?
同一分区中内存块的字节数必须相等。每个分区与该分区内存块的数据类型必须相同。应用程序用数组定义内存分区与内存块。INT16U IntMemBuf[I][J]分区内有I个存储块,每个存储块长度为J。
3.什么叫内存控制块?它记录了一些什么信息?
内存控制块是由uC/OS-II为每个内存分区定义的一个数据结构,系统用它来记录和跟踪每一个内存分区的状态。
水恩,乃幸福之源也。鱼离不开水,人离不开亲人和朋友,当你处于逆境和灾难时,帮助你一臂之力,渡过难关的人,都是你的亲人和朋友。吃水不忘挖井人,度过苦难,不能忘记援助过你的人。知恩图报,善莫大焉。 一个人要想获得幸福,必须懂得感恩。生活需要一颗感恩的心来创造, 一颗感恩的心需要生活来滋养。 一饭之恩,当永世不忘。顺境里给你帮助的人,不能全部称作朋友,但是能够在你逆境时依然愿意援助你,走出困境的人,一定是你要用一生去感谢和珍惜的人。 唐代李商隐的《晚晴》里有这样一句诗:天意怜幽草,人间重晚晴。久遭雨潦之苦的幽草,忽遇晚晴,得以沾沐余辉而平添生意。 当一个人闯过难关的时候,一定要记住那些支撑你,陪你一起走过厄运的朋友和亲人,这个世界谁也不亏欠谁,帮你是情分,不帮你是本分。如古人所说:淡看世事去如烟,铭记恩情存如血。 学会感恩父母养育之恩,学会感恩朋友的帮助之情,生活里做一个有情有义的人。 你要知道,父母,永远是你最亲近的人,是最爱你的人,不管他们的方法怎么错误?可是爱你的心,都是一样的。千万不要因为自己一时的私心,而忘记感恩。 我们常常希望别人都对自己有情有义,可是想得到别人你真情,首先你必须先付出真情。你帮助别人,不要记在心里,别人帮助你,你要懂得感恩和感动,而不是当做理所当然。 你要知道别人帮你是情分,不帮你是本分。侍父母,要孝顺,对朋友,要真诚。不管你生活的精彩或者混沌,孝顺父母,颐养天年。 一父养十子,十子养一父。在这个美好的时代,中华很多的美德都在逐渐消失,做子孝为天,但是总有一些人,自己活在天堂,硬生生的把父母扔进地狱。 鱼知水恩,乃幸福之源也。鱼离不开水,人离不开亲人和朋友,当你处于逆境和灾难时,帮助你一臂之力,渡过难关的人,都是你的亲人和朋友。吃水不忘挖井人,度过苦难,不能忘记援助过你的人。知恩图报,善莫大焉。 一个人要想获得幸福,必须懂得感恩。生活需要一颗感恩的心来创造, 一颗感恩的心需要生活来滋养。 一饭之恩,当永世不忘。顺境里给你帮助的人,不能全部称作朋友,但是能够在你逆境时依然愿意援助你,走出困境的人,一定是你要用一生去感谢和珍惜的人。 唐代李商隐的《晚晴》里有这样一句诗:天意怜幽草,人间重晚晴。久遭雨潦之苦的幽草,忽遇晚晴,得以沾沐余辉而平添生意。 当一个人闯过难关的时候,一定要记住那些支撑你,陪你一起走过厄运的朋友和亲人,这个世界谁也不亏欠谁,帮你是情分,不帮你是本分。如古人所说:淡看世事去如烟,铭记恩情存如血。 学会感恩父母养育之恩,学会感恩朋友的帮助之情,生活里做一个有情有义的人。 你要知道,父母,永远是你最亲近的人,是最爱你的人,不管他们的方法怎么错误?可是爱你的心,都是一样的。千万不要因为自己一时的私心,而忘记感恩。 我们常常希望别人都对自己有情有义,可是想得到别人你真情,首先你必须先付出真情。你帮助别人,不要记在心里,别人帮助你,你要懂得感恩和感动,而不是当做理所当然。 你要知道别人帮你是情分,不帮你是本分。侍父母,要孝顺,对朋友,要真诚。不管你生活的精彩或者混沌,孝顺父母,颐养天年。 一父养十子,十子养一父。在这个美好的时代,中华很多的美德都在逐渐消失,做子孝为天,但是总有一些人,自己活在天堂,硬生生的把父母扔进地狱。
相关推荐: