进程
概念
- 进程是一个具有一定功能的程序在一个数据集上的一次动态执行的过程
- 进程是操作系统进行资源分配和独立运行的基本单位,是应用程序运行的载体。
- 进程一般由程序、数据集合和进程控制块(Process control block,PCB)三部分组成。PCB描述了进程的基本情况,是进程存在的唯一标志。一般PCB包含三类信息:进程标识信息,处理器状态信息,进程控制信息。
特征:
- 动态性:进程是一次程序的执行过程,是动态执行,动态消亡的
- 并发性:任何进程都可与其他进程并发执行
- 独立性:进程是独立运行的基本单位,同时也是资源分配和独立运行的基本单位
- 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。
线程
概念
- 线程是程序执行中一个单一的程序控制流程,是程序执行的最小单元,是cpu独立分配和调度的基本单位。
特征:
- 线程是进程中相对独立的可执行的单元,如果把进程比作一个任务,线程可以比作一个子任务
- 由于线程是调度的基本单位,所以一个进程在创建时,至少有一个线程,否则无法被调度执行
- 进程是系统分配资源的基本单位。同一进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使用他们。
- 线程是操作系统基本调度单元,因此线程中包含调度所需要的必要信息,且在声明周期中有状态的变化
- 由于共享资源包含数据和文件,所以线程间需要通信和同步机制,且需要时线程可以创建其他的线程,但线程间不存在父子关系。
- 多线程的使用情形:前台和后台工作情况;异步处理工作情况;需要加快执行速度情况;组织复杂工作的情况;同时有多个用户服务请求的情况等。
线程机制的优点:
- 线程的创建和撤销的开销比进程要小
- cpu在线程之间开关时的开销比进程要小。因开关线程都在同一地址空间内,只需要修改线程控制表或队列,不涉及地址空间或其他工作
- 线程机制也增加了通讯的有效性。进程间的通讯往往要求内核的参与,以提供通讯机制和保护机制。而线程间的通讯是在同一进程的地址空间内,共享主存和文件,无需内核参与。
进程与线程的区别:
- 线程是程序执行的最小单位,进程是资源分配的最小单位
- 一个进程可以由一个或多个线程组成,线程是一个进程中代码的不同执行路线
- 进程之间互相独立,但统一进程中的线程共享共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见
- 调度和切换:线程上下文的切换比进程上下文的切换要快得多