进程调度
在上一篇文章 Linux内核进程相关知识点总结 中介绍了进程相关的一些基础知识,包括进程的创建、运行以及终止等。这篇文章中主要介绍进程的调度。 进程调度 :举个栗子,在一个单核处理器中,同一时刻只能有一个进程拥有处理器资源,其他的进程只能在就绪队列中排序,等待处理器空闲之后才有机会获取处理器资源并开始运行。在这种情况下,操作系统就需要从众多的就绪进程中选择一个最为合适的进程来运行,这就是进程调度器,其出现的目的就是提高处理器的利用率。 进程的优先级 :Linux操作系统最早采用nice值来调整进程的优先级,取值范围是-20-19,默认值为0。Nice值越大,优先级越低。目前,Linux内核使用0-139的数值表示进程的优先级,数值越低,优先级越高。其中,0-99给实时进程用,100-139给普通进程用。另外,在用户空间有一个传统的变量nice值映射到普通进程的优先级,即100-139。 其中,static_prio指的是静态优先级,在进程启动时分配。内核不存储nice值,取而代之的是static_prio。内核中的宏NICE_TO_PRIO()实现将nice值转换为static_prio。他之所以被称为静态优先级,是因为他不会随着时间而改变,用户可以通过系统调用来改变该值。 normal_prio是基于static_prio和调度策略计算出来的