进程的定义:
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统资源分配、调度和保护的独立单位。
进程是为了描述程序在并发执行时对系统资源的共享,所需的一个描述程序执行时的动态特征的概念。
进程三要素:程序、数据、进程控制块
线程的定义:
线程是进程中的一个运行实体,作为CPU的调度单位,也称为轻量级进程。
扩展:作业是用户在一次计算过程中,或者一次事务处理中,要求计算机系统所做工作的总称。可由多个进程组成。
进程与线程的区别与联系:
(1)进程是资源分配的基本单位。进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。
而线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。
(2)当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。
(3)线程只由相关堆栈寄存器和线程控制块组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。
(4)进程切换时涉及到有关资源指针的保存以及地址空间的变化等问题;
线程切换,由于同一进程内的线程共享资源和地址空间,将不涉及资源信息的保存和地址变化问题。
而且,进程的调度与切换都是由操作系统内核完成,而线程则既可以由操作系统完成,也可以由用户程序进行。
(5)进程间的关系比较疏远。各个进程是在自己独有的地址空间内执行,不但寄存器和堆栈是独有的,动态数据堆、静态数据区和程序代码也相互独立。
而线程间的关系则要紧密得多,虽然各线程为保持自己的控制流而独有寄存器和堆栈,但由于两线程从属于同一进程,它们共享同一地址空间,所以动态数据堆、静态数据区和程序代码为各线程共享。
作业与进程的区别和关系
(1)作业是用户向计算机提交任务的实体。而进程是完成用户任务的执行实体,是向系统申请分配资源的基本单位。
在用户向计算机提交作业之后,系统将它放入外存中的作业等待队列中等待执行;而任一进程,只要它被创建,总有相应的部分存在于内存中。
(2)一个作业可由多个进程组成。且必须至少由一个进程组成,但反过来不成立。
(3)作业的概念主要用在批处理系统中,而在Linux分时系统中不存在。进程的概念则存在于几乎所有的多道程序系统中。