- 1、本文档共56页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.操作系统基本概念
不可剥夺型内核的一个优点是响应中断快。在讨论中断响应时会进一步涉及这个问题。在任务级,不可剥夺型内核允许使用不可重入函数。函数的可重入性以后会讨论。每个任务都可以调用非可重入性函数,而不必担心其它任务可能正在使用该函数,从而造成数据的破坏。因为每个任务要运行到完成时才释放CPU的控制权。当然该不可重入型函数本身不得有放弃CPU控制权的企图。 不可剥夺型内核的最大缺陷在于其响应时间。高优先级的任务已经进入就绪态,但还不能运行,要等,也许要等很长时间,直到当前运行着的任务释放CPU。与前后系统一样, 不可剥夺型内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。 总之,不可剥夺型内核允许每个任务运行,直到该任务自愿放弃CPU的控制权。中断可以打入运行着的任务。中断服务完成以后将CPU控制权还给被中断了的任务。任务级响应时间要大大好于前后系统,但仍是不可知的,商业软件几乎没有不可剥夺型内核。 使用不可剥夺型内核时,任务级响应时间比前后台系统快得多。此时的任务级响应时间取决于最长的任务执行时间。 不可剥夺型内核的另一个优点是,几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。但这也不是绝对的,在某种情况下,信号量还是用得着的。处理共享I/O设备时仍需要使用互斥型信号量。例如,在打印机的使用上,仍需要满足互斥条件。 图示意不可剥夺型内核的运行情况,任务在运行过程之中,(1)中断来了,如果此时中断是开着的,CPU由中断向量(2)进入中断服务子程序,中断服务子程序做事件处理(3),使一个有更高级的任务进入就绪态。中断服务完成以后,中断返回指令(4),使CPU回到原来被中断的任务,接着执行该任务的代码(5)直到该任务完成,调用一个内核服务函数以释放CPU控制权,由内核将控制权交给那个优先级更高的、并已进入就绪态的任务(6),这个优先级更高的任务才开始处理中断服务程序标识的事件(7)。 使用可剥夺型内核,最高优先级的任务什么时候可以执行,可以得到CPU的控制权是可知的。使用可剥夺型内核使得任务级响应时间得以最优化。 使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件,这一点可以用互斥型信号量来实现。如果调用不可重入型函数时,低优先级的任务CPU的使用权被高优先级任务剥夺,不可重入型函数中的数据有可能被破坏。综上所述,可剥夺型内核总是让就绪态的高优先级的任务先运行,中断服务程序可以抢占CPU,到中断服务完成时,内核让此时优先级最高的任务运行(不一定是那个被中断了的任务)。任务级系统响应时间得到了最优化,且是可知的。μC/OS-Ⅱ属于可剥夺型内核。 程序员打算让Swap()函数可以为任何任务所调用,如果一个低优先级的任务正在执行Swap()函数,而此时中断发生了,于是可能发生的事情如图所示。(1)表示中断发生时Temp已被赋值1,中断服务子程序使更优先级的任务就绪,当中断完成时(2),内核使高优先级的那个任务得以运行(3),高优先级的任务调用Swap()函数是Temp赋值为3。这对该任务本身来说,实现两个变量的交换是没有问题的,交换后Z的值是4,X的值是3。然后高优先级的任务通过调用内核服务函数中的延迟一个时钟节拍(4),释放了CPU的使用权,低优先级任务得以继续运行(5).注意,此时Temp的值仍为3!在低优先级任务接着运行时,Y的值被错误地赋为3,而不是正确值1。 使用以下技术之一即可使Swap()函数具有可重入性: ? 1.把Temp定义为局部变量 ????????? 2.调用Swap()函数之前关中断,调动后再开中断 ????????? 3.用信号量禁止该函数在使用过程中被再次调用 如果中断发生在Swap()函数调用之前或调用之后,两个任务中的X,Y值都会是正确的。 * * * 操作系统主要实现以下功能: 为计算机用户和计算机硬件系统之间提供接口,使计算机系统更易使用。 控制和管理计算机系统的硬件和软件资源,使之得以更有效地利用。 合理组织系统中作业的工作流程,以改善系统性能,如响应时间,系统吞吐量等。 前后台系统 后台是一个循环轮询系统一直在运行。 前台是由一些中断处理过程组成的。 当有一前台事件(外部事件)发生时,引起中断, 进行前台处理, 处理完成后又回到后台(通常又称主程序)。 多任务系统 对于一个复杂的嵌入式实时系统来说,当采用中断处理程序加一个后台主程序这种软件结构难以实时的、准确的、可靠的完成时; 存在一些互不相关的过程
文档评论(0)