时间片轮转调度时间片轮转调度round-robinscheduling当两个或两个以上的任务具有同样的优先级,内核运行一个任务运行事先确定的一段时间,叫做时间额度(quantum),然后切换给另一个任务。满足下列条件时,把CPU控制权交给下一个就绪任务-当前任务无事可作。-当前任务的时间片还没有用完任务就结束了。-当前任务的时间片用完了。基于优先级调度根据任务的优先级和状态决定任务的调度。基于优先级抢占式调度。基于优先级非抢占式调度。任务优先级静态优先级-任务在执行过程中优先级不改变,各个任务的优先级在编译时就确定了。动态优先级-任务在执行过程中,优先级是可变的。优先级反转高优先级的任务在申请已经被低优先级任务占据的资源时,高优先级被迫进入等待态,如果有一个中优先级的任务一直在执行,则高优先级将无法执行。优先级反转问题实例优先级反转的解决方法优先级继承-拥有资源的低优先级任务被高优先级抢占。-高优先级任务开始申请被低优先级占据的资源。-此时,拥有该资源的低优先级任务的优先级上升到高于高优先级的任务。-拥有资源的任务得到运行机会,就有机会尽快释放资源。-释放资源,该任务回到原来的优先级。-高优先级任务得到运行机会,占有资源。信号量信号量semaphore-控制共享资源的使用权-标志某个事件发生-使两个任务的行为同步二进制信号量-信号只有两个值0和1计数式信号量-信号有一个取值范围,例如0-255信号量信号量的操作创建Create-初始化二进制或计数式信号量的信号值等待Wait-如果信号量值非0,则得到信号,信号量值减1给信号Signal-信号量值加1二进制信号量计数式信号量死锁死锁deadlock-指两个任务无限期地互相等待对方控制的资源。防止死锁的方法-先得到全部的资源再做下一步工作。-所有任务用同样的顺序去申请多个资源。-释放资源时使用相反的顺序。-定义任务等待资源的时间,如果一段时间内没有等到资源就产生超时,化解死锁。同步利用信号量进行同步