- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
***********************************************2.5.3什么是时钟节拍操作系统中每个任务都是在等待态、就绪态和执行态三种状态间有规律地循环往复工作着,时钟节拍管理着那些处于等待态的任务的延时,一个时钟节拍的大小是任务等待的最小延时,每个时钟节拍到来后,系统将把等待态的每个任务的延时减少一个时钟节拍值,并判断每个任务是否等待结束,把结束等待的任务调度到就绪态。2.5.4时钟节拍为什么不宜过大或过小时钟节拍一般由硬件系统的定时器中断产生,因此时钟节拍在管理等待态任务的延时时会有中断响应和中断恢复方面的额外开销,如果时钟节拍设定过小,将导致大量的这类额外开销的CPU时间浪费,故时钟节拍不应设定过小。相反地,如果时钟节拍值设定过大也不合适,会造成各个任务的延时分辨率大大降低,例如,时钟节拍周期为5秒,那么延时1秒和延时9秒的二个任务,虽然相差8秒,但是都只能设定延时一个时钟节拍。实际中可根据任务的数量和CPU的处理能力设定时钟节拍的周期,一般地可设为1ms-200ms。2.5.5只有时钟节拍中断时内核服务情况2.5.6时钟节拍和中断都存在时的内核服务情况2.5.7什么是空闲任务空闲任务一般不实现任何功能,只是简单地占用了CPU而已;或者让空闲任务作简单的数值自增或自减操作,此时空闲任务可用于统计CPU的使用情况。此外,还可以根据实际情况使空闲任务关闭一些系统外设,使CPU工作在低功耗模式。2.5.8空闲任务的优先级是多少空闲任务是系统任务,当所有用户任务均处于等待态时,CPU就空闲下来,这时系统会提供一个所谓的空闲任务进入执行态。空闲任务的优先级最低,且永远处于就绪态中,如果就绪态中有用户任务出现,其优先级必然比空闲任务高,从而抢到CPU使用权而得到执行;当就绪态中没有用户任务时,空闲任务成为唯一的就绪任务,此时它得到CPU使用权。2.6信号量和互斥信号量的作用信号量的主要用途在于使一个任务同步另一个任务的执行。普通的信号量用于保护共享资源时易造成死锁,此时应使用互斥信号量。2.6.1什么是信号量可把信号量比喻为一个全局计数器,这个计数器的值只能为0,1,2,3,……等自然数。信号量被创建时可以赋一个初始计数值;在任务中每“释放”一次信号量,其计数值被加1。在任务中每“请求”一次信号量,如果该信号量的计数值大于0,则请求成功,其计数值被减1;如果信号量的计数值为0,则请求会失败,信号量的值保持0不变。上述的“释放”和“请求”是作用于信号量的二个主要操作,因此,在一个任务中有规律的释放信号量,另一个任务持续不断地请求信号量,则必然会导致请求信号量的任务按释放信号量的任务的规律工作。2.6.2信号号请求与释放示意图2.6.3信号量同步示意2.6.4再次讨论什么是死锁假设任务A和B都要使用共享资源R1和R2,且任务A的优先级高于任务B,使用信号量S1保护共享资源R1,信号量S2保护共享资源R2,信号量S1和S2的初值均为1。这二个任务执行过程中可能会出现这种情况:某个时刻,任务B请求到信号量S1,使S1=0,任务B占用了共享资源R1,此时中断发生了;然后,中断返回后,操作系统调度到优先级更高的任务A执行(不妨认为中断服务程序使任务A就绪了),任务B被放入就绪表中;任务A执行到某处后要使用共享资源R2,于是请求信号量S2并使S2=0,接着任务A又要使用共享资源R1,即请求信号量S1,而S1此时的值为0,故任务A处于持续请求等待状态;操作系统调度到任务B继续执行,此时任务B还在占用共享资源R1,现在又要使用共享资源R2,即任务B请求信号量S2,而此时的S2值为0,于是任务B处于请求等待状态。这样就出现了任务A请求S1等待和任务B请求S2等待的情况,称为死锁现象。2.6.5什么是优先级反(翻)转最常用的解决死锁的方法是:当信号量S用于保护共享资源时,如果某个任务请求到了信号量S,即这个任务将得到共享资源的使用权,此时将该任务的优先级临时提高到所有用户任务的优先级之上,或者提高到高于所有要访问该共享资源的任务优先级之上,总之,只有当该任务使用完共享资源并释放信号量之后,其他要访问该共享资源的任务才能得到调度执行。如果占用共享资源的任务优先级较低,则其优先级被临时提高,相对而言,其他访问该共享资源的任务优先级降低了,故称之为优先级反转。2.6.6什么是互斥信号量把具有使任务发生优先级反转功能的信号量称为互斥信号量,互斥信号量专用于保护共享资源。互斥信号量像一把钥匙一样,使得请求到这把钥匙的任务对共享资源具有
文档评论(0)