(一)进程调度
1、什么是进程调度
内核决定哪个进程何时在CPU上可执行的操作调度
2、每个进程有两个调度值
1)进程优先顺序(priority):又被称为PR值(这个值是一个静态值),最开始为40个。
执行top命令可以查看到。每次CPU调度进程,进程PR值减1。
也就是PR值越小的进程,被CPU运算的次数就多。
当进程把所有的计数器全部用完的时候,PR值由40归0,称为调度的终点,内核重新分配一个计数
器,重新回到40。
不在可运行状态的进程不会放弃计数器,数值不会被减掉。
睡眠状态的进程被激活并且切换到可运行状态,其拥有的计数器多于其他已经运行过的进程,所以
会优先调入CPU进行,优先值最高。
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个数字
4)用renice命令调整已经运行的进程nice值
默认参数 -p 后跟进程id号。指定调整某个进程。不加参数等于-p的结果
-d 调整进程运行的组
-u 调整某个用户的进程
注意:在程序设置(如top,renice等)上设定NI值的结果与内核设计上不同
程序设置中最终PR值 = 原始PR值 + NI值
执行 renice 10 4220,设定NI值为10,最终PR值为25
执行renice 0 4220
执行 renice -10 4220,设定NI值为-10,最终PR值为5
5)top进程下按下r键,进入PID to renice,指定重设NI值的pid
设定的renice值为-20
(二)发送信号
1、linux和unix系统出于安全方面原因,默认进程之间不能通信的。用信号通知进程发生的异常事件
2、信号是进程间通信的一种方式。
3、kill -l查看当前内核支持的信号种类
相应的信号前面以数字标识,后面是一个解释。
4、终止进程
1)使用kill 进程号 :杀死进程。
kill默认发出的信号是15)SIGTERM。
2)kill -9 进程号 :强制杀死进程。进程非正常中断,有可能 丢失数据。该命令慎用。
3)kill -1 进程号 : 进程内部重启。生产中重启服务,重新读取配置文件等相关数据一般用此种方
式。
(三)作业控制
1、bashshell允许命令作为“作业”在后台运行。
2、jobs命令查看后台所有的作业
3、ctrl z 将当前前台作业挂起放到后台
4、bg将挂起的作业在后台恢复运行
5、fg将挂起的作业由后台恢复到前台运行
转载于:https://blog.51cto.com/wangjifu/1241821