进程
是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成
特征
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进行一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序,数据和进程控制块三部分组成
线程
是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理
两者的区别
从定义上讲 进程是操作系统分配资源的最小单位 线程是程序执行的最小单位
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见
调度和切换:线程上下文切换比进程上下文切换要快得多
联系
多进程下,每个进程都有自己的独立地址空间,进程间的数据空间也相互独立,彼此通信以专门的通信式进行 而多线程下,同一进程内的线程共享进程的地址空间,一个线程的数据可以直接提供给其他线程使用
常碰到的题
[单选] 进程和程序的本质区别是()
A . 存储在内存和外存
B . 顺序和非顺序执行机器指令
C . 分时使用和独占使用计算机资源
D . 动态和静态特征
程序是指令的有序集合,进程是正在执行的程序。所以程序和进程的关系:是静态与动态的关系,顾名思义答案为D