linux进程小结(1)

来源:互联网 发布:服装出口数据 编辑:程序博客网 时间:2024/06/05 06:10

大家都知道linux的进程是可以抢占的,抢占一般会出现在这两种情况:

1.一个进程进入TASK_RUNNING状态,内核会检查该进程的动态优先级是否大于正在运行的进程,如果是的话则通过调度程序运行新进程

2.当一个进程的时间片用完时,也会根据优先级来判断接下来运行哪个进程

需要指出的是被抢占的进程并没有被挂起,依然处于TASK_RUNNING状态,只是不再使用CPU。

linux的进程的分类大致有两类:

第一种分类将进程分为"IO受限"型以及“”CPU受限“型,前者频繁的使用'IO设备'并将大量的时间用于等待‘IO输入’,后者需要消耗大量的CPU时间用于计算。

第二种分类将进程分为三种:

1.交互式进程:需要花很多时间等待用户的输入,当检查到输入后需要很快的进行响应,但是本身占用CPU运行的时间并不长。典型应用场景有命令shell等,平均延时在50~150ms左右。

2.批处理进程:需要消耗的大量的CPU工作时间。典型场景如 编译和科学计算。

3.实时进程:这类进程拥有很高的优先级,很短的响应时间、响应时间相对稳定。典型场景如音频和视频程序。

我们通常将交互式进程和批处理进程称之为普通进程。

普通进程有两种优先级:静态优先级和动态优先级。

静态优先级决定了时间片的大小以及当其他进程时间片用完时的优先级。动态优先级的作用在前面说过了,动态优先级如其名是会实时变化的,由bonus的数值和其静态优先级决定的。bonus的值依赖于进程过去的情况,与进程的平均随眠值有关。同等静态优先级的情况下,睡眠时间越长,动态优先级越高。

实时进程有两种调度方式:FIFO和RR。

FIFO指的是最新的进程最优先处理,RR刚好相反,最老的进程最优先处理。实时进程的调度方式仅限于同等优先级的,优先级更高的实时进程无视任何调度方式,优先级更高的永远最先执行。


0 0
原创粉丝点击