什么是优先级
优先级Priority Level)是指计算机分时操作系统在处理多个作业程序时,决定各个作业程序接受系统资源的优先等级的参数。
优先级的内容
逻辑运算符中,逻辑非运算符(!)和所有的单目运算符同级,高于双目的算术运算符、关系运算符、逻辑运算符与(&)和逻辑运算符或(‖);与运算高于或运算,它们都低于算数运算符和关系运算符。
各个作业在输入计算机之前,都要按一定的要求对它指定优先级。例如要按程序的性质或其长度,或是按作业的来源等,指定其优先级。然后计算机根据各作业程序优先级的高低,来决定处理各程序的先后次序。甚至在处理过程中,还能允许优先级较高的程序中断优先级较低的程序。进程是有优先级的。如果即将被运行的进程的优先级比正在运行的进程的优先级高,则系统可以强行剥夺正在运行的进程的CPU,让优先级高的进程先运行。
高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象叫做优先级反转。 此时高优先级任务和中等优先级任务之间没有任何共享资源但执行顺序却发生了倒置,这种情况称为优先级反转,而高优先级任务因为等待低优先级任务释放资源而阻塞的情况则不称为优先级反转
优先级的反转
两种经典的防止反转的方法:
优先级继承策略Priority inheritance):继承现有被阻塞任务的最高优先级作为其优先级,任务退出临界区,恢复初始优先级。
优先级天花板策略Priority ceilings): 优先级天花板是指将申请(占有)某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.这个优先级称为该资源的优先级天花板) 。
优先级继承策略对任务执行流程的影响相对较小,因为只有当高优先级任务申请已被低优先级任务占有的临界资源这一事实发生时,才抬升低优先级任务的优先级。而天花板策略是谁占有就直接升到最高。