在计算机操作系统中,进程是进行资源分配和调度的基本单位,同时每个进程之内也可以存在多个线程。那么在Android系统(Linux Kernel)中,进程是如何去抢占资源,线程又是如何根据优先级切换呢,本文将尝试剖析这个问题,研究nice在Linux以及Android系统中的应用。
一些概念进程 是计算机系统中,程序运行的实体,也是线程的容器。
线程 是进程中实际执行单位,一个线程是程序执行流的最小单元。在一个进程中可以有多个线程存在。
nice与进程调度
Linux中,使用nice value(以下成为nice值)来设定一个进程的优先级,系统任务调度器根据nice值合理安排调度。nice的取值范围为-20到19。
通常情况下,nice的默认值为0。视具体操作系统而定。
nice的值越大,进程的优先级就越低,获得CPU调用的机会越少,nice值越小,进程的优先级则越高,获得CPU调用的机会越多。
一个nice值为-20的进程优先级最高,nice值为19的进程优先级最低。
父进程fork出来的子进程nice值与父进程相同。父进程renice,子进程nice值不会随之改变。
词源考究
nice这个命令的来源几乎没有资料提到,于是便尝试自己来推断一下。在诸如词霸,沪江等词典给出的意思均为好的;美好的;可爱的;好心的,友好的。而有道词典则稍微给出了一个其他词典没有的和蔼的。个人认为有道给出的这个比较合理。要想做到和蔼,就需要做到谦让,因此或多或少牺牲自己一点,成全他人。所以nice值越高,越和蔼,但是自己的优先级也会越