(一)进程调度

1、什么是进程调度

  内核决定哪个进程何时在CPU上可执行的操作调度

2、每个进程有两个调度值

1)进程优先顺序(priority):又被称为PR值(这个值是一个静态值),最开始为40个。

  执行top命令可以查看到。每次CPU调度进程,进程PR值减1。

  也就是PR值越小的进程,被CPU运算的次数就多。

  当进程把所有的计数器全部用完的时候,PR值由40归0,称为调度的终点,内核重新分配一个计数  

  器,重新回到40。

  不在可运行状态的进程不会放弃计数器,数值不会被减掉。

  睡眠状态的进程被激活并且切换到可运行状态,其拥有的计数器多于其他已经运行过的进程,所以  

  会优先调入CPU进行,优先值最高。

  EBB-9、进程调度及作业控制_第1张图片

2)进程优先级(niceness):又称NI值(这个值是一个动态值),

  NI值可以控制的。这个值从-20到19不等,默认是从0开 始。


内核设计上: 最终PR值 = 原始PR值-NI值。默认情况下,优先级较高的(NI值大)的进程,被分配的

            计数器就少,在CPU上运算的时间较少;优先级较低的,被分配的计数器就多,在CPU上  

            运算的时间就多。所以通过调整NI值可以调整进程的计数器多少。


3)默认情况下,进程的PR值为40,NI值为0;不作任何影响。

 如果做影响需要调整NI值,称之为renice。

 在根目录下,执行nice -19 find . 在另一个terminal下top进程查看。

 注意:-19不是负19,而是参数-n。n的值范围是-20到19的40个数字

 clip_p_w_picpath004

 clip_p_w_picpath006

4)用renice命令调整已经运行的进程nice值

  默认参数 -p 后跟进程id号。指定调整某个进程。不加参数等于-p的结果

  -d 调整进程运行的组

  -u 调整某个用户的进程

 注意:在程序设置(如top,renice等)上设定NI值的结果与内核设计上不同

       程序设置中最终PR值 = 原始PR值 + NI值

 执行 renice 10 4220,设定NI值为10,最终PR值为25

 clip_p_w_picpath008

 clip_p_w_picpath010

 执行renice 0 4220

 clip_p_w_picpath012

 clip_p_w_picpath014

 执行 renice -10 4220,设定NI值为-10,最终PR值为5

 clip_p_w_picpath016

 clip_p_w_picpath018

5)top进程下按下r键,进入PID to renice,指定重设NI值的pid

 clip_p_w_picpath020

 设定的renice值为-20

 clip_p_w_picpath022



(二)发送信号

1、linux和unix系统出于安全方面原因,默认进程之间不能通信的。用信号通知进程发生的异常事件

2、信号是进程间通信的一种方式。

3、kill -l查看当前内核支持的信号种类

  EBB-9、进程调度及作业控制_第2张图片

  相应的信号前面以数字标识,后面是一个解释。

4、终止进程

1)使用kill 进程号 :杀死进程。

  kill默认发出的信号是15)SIGTERM。

2)kill -9 进程号 :强制杀死进程。进程非正常中断,有可能 丢失数据。该命令慎用。

3)kill -1 进程号 : 进程内部重启。生产中重启服务,重新读取配置文件等相关数据一般用此种方  

                    式。


(三)作业控制

1、bashshell允许命令作为“作业”在后台运行。

2、jobs命令查看后台所有的作业

3、ctrl z 将当前前台作业挂起放到后台

4、bg将挂起的作业在后台恢复运行

5、fg将挂起的作业由后台恢复到前台运行