进程
进程是具有一定功能的程序在一个数据集合上的运行过程,它是系统进行资源分配和调度管理的一个可并发执行的基本单位。
是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。
进程的基本特性
a、动态性:进程的实质是程序的一次执行过程,它由系统创建而产生,能够被调度而执行,因申请的共享资源被其他进程占用而暂停,完成任务后被撤销。动态性是进程最重要的特性。
b、独立性:系统内多个进程可以并发执行,引入进程的目的也是为了使系统某个程序能够和其他进程并发执行。
c、异步性:进程由于共享资源和协同合作,因此产生了相互制约的关系,进程实体通过进程管理以异步的方式使用处理器和其他资源,系统必须统一调度,依据一定的算法来保证各个进程能够协同运行并共享处理器和其他资源。
d、结构特性:系统中运行的进程实体通常由程序、数据和一个PCB(进程控制块)组成。
线程
单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程。
区别与联系
(1) 划分尺度:线程更小,所以多线程程序并发性更高;
(2) 资源分配&处理器调度:进程是资源分配的基本单位,线程是处理器调度的基本单位。
(3) 地址空间:进程拥有独立的地址空间;线程没有独立的地址空间,同一进程内多个线程共享其资源;
(4) 执行:每个线程都有一个程序运行的入口、顺序执行序列和程序的出口,但线程不能单独执行,必须组成进程,一个进程至少有一个主线程。简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
(5)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。
(6)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。
(7)处理机分给线程,即真正在处理机上运行的是线程。
(8)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
(9) 一个进程可以有多个线程,但至少有一个线程;而一个线程只能在一个进程的地址空间内活动。
(10)资源分配给进程,同一个进程的所有线程共享该进程所有资源。
(11)CPU分配给线程,即真正在处理器运行的是线程。