进程调度
Posted lzh-blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程调度相关的知识,希望对你有一定的参考价值。
Linux进程调度:
在linux2.5内核系列中,开始采用O(1)调度程序,但是其缺少交互进程。在2.6内核系统开发初期,引入新的进程调度算法-反转楼梯最后期限调度算法(Rotating Staircase Deadline scheduler)(RSDL)。该算法吸取了队列理论,将公平调度的概念引入了Linux调度程序,最终在2.6.23内核版本中替代了O(1)调度算法。被称为“完全公平调度算法”,简称CFS.
策略:
进程优先级:
linux采用两种不同的优先级范围:
1)nice值。范围是-20~19,默认值是0,nice值越大,优先级越低-nice似乎意味着对系统中其他进程更“优待”。nice值越小,优先级越高,会获得更多的CPU使用时间。
2)实时优先级。其值可配置,范围是0~99,默认是0,与nice值意义相反,实时优先级数值越大表示进程优先级越高,任何实时优先级的进程都比普通进程的优先级高。
ps -l看到当前正在运行的进程的详细信息其中
F:表示进程旗标,标识进程所拥有的权限,当我切换到root的时候为4表示拥有root权限,为0仅有fork()权限
S:表示进程当前的状态
R:当前正在运行(RUNNING)
S:睡眠(SLEEP)
D:不可中断
T:停止(STOP)
Z:僵尸进程(ZOMBIE)
UID:拥有该进程用户的用户ID
PID:进程号
PPID:该进程父进程的进程好
C:CPU使用百分比
PRI:优先级
NI:nice值
ADDR/SZ/WCHAN:都与内存有关
TTY:登陆者的终端,和远程登陆有关
TIME:占用CPU时间
CMD:造成此进程的命令
时间片:
时间片是一个数值,表示一个进程在被抢占之前持续运行的时间。在多数操作系统中,默认的时间片很短,通常是10ms。但是Linux的CFS(完全公平调度)调度器并不是将时间片直接分配给进程,而是将处理器的使用比划分给进程。这个值与系统负载密切相关,还受到nice值的影响,nice值越大(优先级越低),比重越低;更小nice值(优先级越高)将获得更高的比重。
在多数操作系统,是否将一个进程立刻投入运行(即抢占当前进程),完全取决于进程优先级和是否有时间片。Linux使用CFS调度器,抢占时机取决于新的可运行程序消耗了多少处理器使用比。如果消耗使用比比当前进程小(即nice值越大优先级较低的进程),则可以立即投入运行,抢占当前进程,否则,推迟其运行。
以上是关于进程调度的主要内容,如果未能解决你的问题,请参考以下文章