"可剥夺型内核"与“不可剥夺型内核”

来源:互联网 发布:手机京东秒杀辅助软件 编辑:程序博客网 时间:2024/05/01 07:23

1.不可剥夺型内核

概念:不可剥夺型内核要求每个任务自我放弃 CPU 的所有权。 

不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。 但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃 CPU 的使用权时, 那个高优先级的任务才能获得 CPU的使用权。
优点1:不可剥夺型内核的一个优点是响应中断快。

在任务级,不可剥夺型内核允许使用不可重入函数。 每个任务都可以调用非可重入性函数,而不必担心其它任务可能正在使用该函数,从而造成数据的破坏。因为每个任务要运行到完成时才释放 CPU 的控制权。当然该不可重入型函数本身不得有放弃 CPU 控制权的企图。
优点2:使用不可剥夺型内核时, 任务级响应时间比前后台系统快得多。 

此时的任务级响应时间取决于最长的任务执行时间。
优点3:几乎不需要使用信号量保护共享数据。 

运行着的任务占有 CPU,而不必担心被别的任务抢占。但这也不是绝对的, 在某种情况下,信号量还是用得着的。处理共享 I/O 设备时仍需要使用互斥型信号量

2.可剥夺型内核

概念:当系统响应时间很重要时,要使用可剥夺型内核。最高优先级的任务一旦就绪,总能得到 CPU 的控制权。
当一个运行着的任务使一个比它优先级高的任务进入了就绪态, 当前任务的 CPU 使用权就被剥夺了, 或者说被挂起了, 那个高优先级的任务立刻得到了 CPU 的控制权。 如果是中断服务子程序使一个高优先级的任务进入就绪态, 中断完成时, 中断了的任务被挂起, 优先级高的那个任务开始运行。

优点1:使用可剥夺型内核, 最高优先级的任务什么时候可以执行,可以得到 CPU 的控制权是可知的。 使用可剥夺型内核使得任务级响应时间得以最优化。
优点2:使用可剥夺型内核时, 应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件, 这一点可以用互斥型信号量来实现。 如果调用不可重入型函数时, 低优先级的任务 CPU 的使用权被高优先级任务剥夺, 不可重入型函数中的数据有可能被破坏。 

综上所述, 可剥夺型内核总是让就绪态的高优先级的任务先运行, 中断服务程序可以抢占 CPU,到中断服务完成时, 内核让此时优先级最高的任务运行(不一定是那个被中断了的任务)。任务级系统响应时间得到了最优化, 且是可知的。






0 0