文章目录
- 一、进程优先级
- 二、查看进程优先级以及修改优先级
一、进程优先级
cpu资源少量,只有一个然而在操作系统中存在很多进程,这些进程访问cpu资源时他们相互之间是存在竞争关系。cpu为了保他们之间的公平,也就存在了优先级!那么他们对于资源的访问谁先谁后,不可能没有顺序,不然就全乱套了,进而存在优先级,就相当于排队。例如学校食堂,同学们下课之后去吃饭,食堂窗口是少数的而学生人数很多,注定了学生之间存在竞争对于食堂窗口来说,然后他们要有序的进行排队,不然不排队的话就会造成蜂拥而上,然后那些强势的就是状的就可能一直占用着,而其他访问不了,这就相当于维护一个秩序,每个人都默认遵循这个规则根据优先级访问资源。然后每个进程对于资源的访问时间有限制,在运行队列的进程,优先级靠前的进程先运行完之后它可能还想要运行但是他已经不可能再在运行队列里面排队了,因为它优先级较高,若是再在这个运行队列中排队就会造成它一直占用cpu资源,所有运行完的进程会到别的地方去,这个其他地方也是一个队列,为等待队列,cpu为进程维护了两个队列一个运行队列一个等待队列,运行队列中的进程都是马上运行的,然后等待队列中的进程是在运行队列中运行完毕后然后还想要执行的进程,所有他还会根据它的优先级再在等待队列中按照它的优先级排队,然后当运行队列中的进程运行完毕,会将等待队列和运行队列的指针指向交换然后又可以继续执行按照优先级排队的进程
二、查看进程优先级以及修改优先级
ps -l查看进程
其中出现PRI和NI两个字段信息
PRI::代表这个进程可被执行的优先级,其值越小越早被执行。
NI:代表这个进程的nice值,就是可以修改进程的值,其取值范围[-20,19],取40个数。
优先级是可以被调整的,能通过top命令修改,那么是否可以极大的修改一个进程的优先级然后让某个进程能够一直被运行操作上是可以达到的但是实际上是不可以的,因为nice值有限制。是因为liunx不想让用户过多的调整优先级因为这会导致不公平违背了操作系统的意愿,而一个进程优先级默认是80,每一个都是这样所以数值最小不可低于60,最高不超过99。
top修改nice值,使用top修改NI值,对于普通用户是无法修改,要通过超级用户root修改!
然后输入r,会进入到输入要修改进程优先级的pid
然后再输入要修改的NI值。退出top按q退出,我修改的是10
修改成功,当再修改进程优先级时他不是基于原来进程优先级上修改而是基于每个进程的默认优先级80上修改的。PRI(new)=PRI(old)+NI