进程和线程概念介绍

来源:互联网 发布:电脑网络电缆测试仪 编辑:程序博客网 时间:2024/05/18 03:54

一、进程概念介绍

1、进程(process)定义: 程序对某个数据集在处理机上运行的过程和资源分配的基本单位,是系统进行资源分配和调度的一个独立单位。

在运行于32位处理器上的32位Windows操作系统中,可将一个进程视为一段大小为4GB(232字节)的线性内存空间,它起始于0x00000000结束于0xFFFFFFFF。这段内存空间不能被其他进程所访问,所以称为该进程的私有空间。这段空间被平分为两块,2GB被系统所有,剩下2GB被用户所有。

如果有N个进程运行在同一台机器上,那么将需要N×4GB的海量RAM,还好事实并非如此。

  • Windows是按需为每个进程分配内存的,4GB是32位系统中一个进程所占空间的上限。
  • 将进程所需的内存划分为4KB大小的内存页,并根据使用情况将这些内存页存储在硬盘上或加载到RAM中,通过系统的这种虚拟内存机制,我们可以有效地减少对实际内存的需求量。当然这些对用户和开发者来说都是透明的。

进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。


2、进程和程序的联系和区别?

* 进程是一个动态概念,而程序是一个静态概念;

* 进程具有并行特征,而程序没有。 由进程的定义可知,它有独立性和异步性;

* 进程是分配计算机系统资源的基本单位;

* 不同的进程可以包含同一程序,只要该程序所对应的数据集不同。

3、作业 和进程的关系?

作业是用户需要计算机完成某项任务时,要求计算机所做工作的集合。

进程是程序执行过程的描述,是资源分配的基本单位。

* 作业是用户向计算机提交任务的任务实体,作业在外存中的作业等待队列中等待执行;进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位,进程在内存中。

* 一个作业可以由多个进程组成,至少有一个。

* 作业的概念主要用在批处理系统中;进程的概念则用在几乎所有的多道系统中。

4、进程的静态描述?

 进程控制块PCB + 程序段 + 数据

进程控制块 包含了进程的描述信息、控制信息 和 资源信息, 是进程动态特征的集中反映。

进程的PCB是系统感知进程的唯一实体。

在创建一个进程时,应首先创建其PCB,然后才能根据PCB中信息对进程实施有效的管理和控制。当一个进程完成其功能之后,系统则释放PCB,进程也随之消亡。

PCB中的信息: 进程名、进程状态、进程优先级、信号量、现场保护区、进程参数、进程程序地址。

5、 进程通信

*它意味着在 进程间 传送 数据。

* 通信内容有两种: 控制信息的传送 和 大批量数据的传送。


二、线程概念介绍

1、 线程(thread)

* 定义 :线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

2、一个线程包含以下内容。

  • 一个指向当前被执行指令的指令指针;
  • 一个栈;
  • 一个寄存器值的集合,定义了一部分描述正在执行线程的处理器状态的值;
  • 一个私有的数据区。

三、进程与线程对比分析

1、进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
(4)处理机分给线程,即真正在处理机上运行的是线程。
(5)线程是指进程内的一个执行单元,也是进程内的可调度实体。
2、线程与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
(4)系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。




0 0
原创粉丝点击