linux中调度启动命令 linux 调度启动命令( 三 )


从后台启动进程,其实就是在命令结尾处添加一个符号 。输入命令并运行之后,shell会提供给我们一个数字,此数字就是该进程的进程号 。然后直接就会出现提示符,用户就可以继续完成其他工作 。
手工启动的2种方式,实际上它们有个共同的特点,就是新进程都是由当前shell这个进程产生的,换句话说,是shell创建了新进程,于是称这种关系为进程间的父子关系 , 其中shell是父进程,新进程是子进程 。
且一个父进程可以有多个子进程,通常子进程结束后才能继续父进程;当然,如果是从后台启动 , 父进程就不用等待子进程了 。
Linux调度启动进程
在Linux系统中,任务可以被配置在指定的时间、日期或者系统平均负载量低于指定值时自动启动 。
例如,Linux预配置了重要系统任务的运行,以便可以使系统能够实时被更新 , 系统管理员也可以使用自动化的任务来定期对重要数据进行备份 。
实现调度启动进程的方法有很多,比如通过crontab、cat等命令 。
Linux系统的进程调度Linux进程调度
1.调度方式
Linux系统的调度方式基本上采用“抢占式优先级”方式,当进程在用户模式下运行时,不管它是否自愿 , 核心在一定条件下(如该进程的时间片用完或等待I/O)可以暂时中止其运行 , 而调度其他进程运行 。一旦进程切换到内核模式下运行时,就不受以上限制,而一直运行下去,仅在重新回到用户模式之前才会发生进程调度 。
Linux系统中的调度基本上继承了UNIX系统的以优先级为基础的调度 。也就是说,核心为系统中每个进程计算出一个优先级 , 该优先级反映了一个进程获得CPU使用权的资格 , 即高优先级的进程优先得到运行 。核心从进程就绪队列中挑选一个优先级最高的进程,为其分配一个CPU时间片,令其投入运行 。在运行过程中,当前进程的优先级随时间递减,这样就实现了“负反馈”作用,即经过一段时间之后 , 原来级别较低的进程就相对“提升”了级别,从而有机会得到运行 。当所有进程的优先级都变为0(最低)时,就重新计算一次所有进程的优先级 。
2.调度策略
Linux系统针对不同类别的进程提供了3种不同的调度策略,即SCHED_FIFO、SCHED_RR及SCHED_OTHER 。其中,SCHED_FIFO适合于短实时进程 , 它们对时间性要求比较强,而每次运行所需的时间比较短 。一旦这种进程被调度且开始运行,就一直运行到自愿让出CPU或被优先级更高的进程抢占其执行权为止 。
SCHED_RR对应“时间片轮转法”,适合于每次运行需要较长时间的实时进程。一个运行进程分配一个时间片(200 ms),当时间片用完后,CPU被另外进程抢占,而该进程被送回相同优先级队列的末尾,核心动态调整用户态进程的优先级 。这样,一个进程从创建到完成任务后终止,需要经历多次反馈循环 。当进程再次被调度运行时 , 它就从上次断点处开始继续执行 。
SCHED_OTHER是传统的UNIX调度策略,适合于交互式的分时进程。这类进程的优先级取决于两个因素:一个是进程剩余时间配额,如果进程用完了配给的时间,则相应优先级降到0;另一个是进程的优先数nice,这是从UNIX系统沿袭下来的方法,优先数越小,其优先级越高 。nice的取值范围是-20 19 。用户可以利用nice命令设定进程的nice值 。但一般用户只能设定正值,从而主动降低其优先级;只有特权用户才能把nice的值设置为负数 。进程的优先级就是以上二者之和 。
后台命令对应后台进程(又称后台作业) 。后台进程的优先级低于任何交互(前台)进程的优先级 。所以 , 只有当系统中当前不存在可运行的交互进程时 , 才调度后台进程运行 。后台进程往往按批处理方式调度运行 。

推荐阅读