进程的优先级

UNIX操作系统简单而一致,但只有天才(至少程序员)才能领会并欣赏其简单性。

​                 

                                                                                                                   ——Dennis Ritchie

在我们开机运行电脑时并不是所有进程都是重要的举个例子:当我开机时电脑不可能不先调操作系统,跑去调某36X安全卫士吧(^▽^),但除了优先级还有一个概念进程分为实时进程非实时进程

实时进程

  • 硬实时进程拥有着严格时间限制,在某些任务必须在规定的时间内完成。比如防空导弹系统,雷达发现敌方导弹向我方打击,我家的防空系统慢点处理“等敌方导弹在飞一会”我等一会在拦截,不能马上处理。这样会造成什么问题?——重要地区被摧毁。

    下图解释硬实时进程

    解释:B的优先级比A的优先级跟高,现在A正在运行但是,现在B的优先级跟高,A马上交出CPU的使用权给B,A就中断,B开始运行B结束后A在进行运行。

常见的硬实时操作系统有VxWorks,ThreadX、FreeRTOS、ucOS。

值得提一句的是,VxWorks是世界范围内现役航天,航海,飞机,坦克自动化控制部分使用范围最广的实时操作系统,包括国内网上热度最高的几种军事设备也同使用了此系统。

但是Linux不支持硬实时处理,在主流的内核中不支持。

非实时进程

  • 软实时进程是硬实时进程的一种弱化形式。就不像硬实时进程那样必须马上处理,稍微晚一点也是可以理解的^_^。

  • 多任务 系统提供了多任务运行机制,系统内核通过调度让CPU运行许多外部事件线程,实现任务的并发性。

  • 抢占调度 系统具有继承的优先级和抢占式内核属性,在执行某一项任务的时候,若有更高优先级的任务进入可执行态,系统将会立即抢占当前CPU资源,退出低优先级任务,运行高优先级任务。

  • 任务间的通讯和同步 实时系统中,可能存在许多任务作为一个应用的部分执行,系统必须提供这些任务间的通讯机制,有效地共享不可抢占的资源或者临界区所需要的同步机制。

  • 任务与中断之间的通信 在真实应用场景中,事件通常作为中断的方式到来,为了系统调度的稳定、提供有效的排队和减小中断服务程序的开销,通常希望在任务级线程处理相应工作,所以需要任务与中断之间的通信。

进程的运行按照时间片调度分配给进程的时间份额与这个进程的重要度相关。转盘旋转每一个进程都有运行的机会,重要的进程会比次要的进程会获得跟多的运行时间。这一种方案叫做强制式多任务处理,当时间段到后期后,内核会从进程那收回控制权,让下一个进程运行,但会考虑到上一个还没有运行完。但被抢占进程的运行环境,即所有CPU寄存器的内容和页表,都会保存起来,所以上一个进程的信息不会丢失。等到改进程恢复运行时,它的进程信息都会完全恢复。

这种简化模型没有考虑几个重要问题。例如,进程在某些时间可能因为无事可做而无法立即执行。为使CPU时间的利益回报尽可能最大化,这样的进程决不能执行。因为其中假定所有的进程都是可以立即运行的。另外一个忽略的事实是Linux支持不同的调度类别(在进程之间完全公平的调度和实时调度),调度时也必须考虑到这一点。此外,在有重要的进程变为就绪状态可以运行时,有一种选项是抢占当前的进程,图中也没有反映出这一点。


下一小节进程的生命周期

猜你喜欢

转载自blog.csdn.net/qq_45591898/article/details/130661274