一.进程和作业的定义
1.进程的定义
进程是具有独立功能得程序的一次运行过程,是系统进行资源分配和调度的基本单位。linux创建新进程时会为其指定一个唯一的号码,即进程号(PID),以此区分不同的进程。
(一).进程的状态
进程状态包括以下五种:
(1)TASK_RUNNING(运行态):进程是可执行的;或者正在执zhuan行,或者在运行队列shu中等待执行。
(2)TASK_INTERRUPTIBLE(可中断睡眠态):进程被阻塞,等待某些条件的完成。一旦完成这些条件,内核就会将该进程的状态设置为运行态。
(3)TASK_UNINTERRUPTIBLE(不可中断睡眠态):进程被阻塞,等待某些条件的完成。与可中断睡眠态不同的是,该状态进程不可被信号唤醒。
(4)TASK_ZOMBIE(僵死态):该进程已经结束,但是其父进程还没有将其回收。
(5)TASK_STOP(终止态):进程停止执行。通常进程在收到SIGSTOP、SIGTTIN、SIGTTOU等信号的时候会进入该状态。
(二).进程的优先级
为什么要有进程优先级?
这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。
进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的。
就是说在同一个调度周期中,优先级高的进程占用的时间长些,而优先级低的进程占用的短些。
(三).进程调度
每个cpu(或者cpu核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的cpu及核心数量。Linux内核进程调度程序将多个进程在CPU核心上快速切换,从而给用户多个进程在同时运行的印象;
2.作业的定义
进程和作业的概念也有区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程
3.两者的联系与区别
一个作业通常包括几个进程,几个进程共同完成一个任务,即作业