不可剥夺内核和可剥夺内核的比较

来源:互联网 发布:淘宝助理上架宝贝教程 编辑:程序博客网 时间:2024/05/01 16:52
不可剥夺型内核:要求每个任务主动放弃cpu。各个任务彼此合作共享一个cpu,异步事件还是由中断服务来处理的。中断服务可使一个高优先级的任务由挂起变为就绪状态,但是中断服务后,使用权就回到了被中断了的那个任务,也就是回到了原来的任务了,直到该任务主动放弃cpu的使用权,此时高优先级的任务才能或得cpu使用权。其优点:1:响应中断快;2:几乎不需要使用信号量来保护共享数据,当前运行着的任务占用着cpu,而不必担心被别的任务占了,但是某些时候还是要用信号量的,比如说在处理共享的io设备时,仍然要用互斥型信号量。缺点:响应时间,高优先级的任务已经进入就绪状态,但是还是不能运行,因为此时cpu依然被原来的任务占有,要等到原来的程序结束或者其让出cpu使用权,这之间的时间不能确定,也许很长时间。所以不可剥夺型内核的任务级响应时间是无法确定的,这也就导致最高优先级或得cpu的使用权完全取决于程序何时释放cpu了。

总之,不可剥夺型内核允许每个任务运行,直到该任务自愿放弃cpu的使用权,中断可以打入运行的任务,中断服务完成之后,cpu回到原来的饿任务,任务级的响应要大大好于前后台系统,但是任然是不能确定的,所以不可剥夺型内核是不能用在商业软件中的。

可剥夺型内核:系统响应很重要时就不能使用不可剥夺内核了,就要使用可剥夺型内核了,当最高优先级的任务一旦就绪总能得到cpu的使用权,也就是说当一个运行着的任务使得一个比他优先级高的任务进入就绪状态时,当前的cpu的使用权就被这个高优先级任务抢去了,当前任务就被挂起了,或者是中断服务子程序使一个高优先级的任务进入就绪状态,中断完成时,被中断的任务就被挂起,优先级高的任务开始运行。
原创粉丝点击