进程与线程区别,为什么进入进程机制?

来源:互联网 发布:linux初学者入门书籍 编辑:程序博客网 时间:2024/05/18 00:02

(1)

程序是计算机指令的集合,它以文件的形式存储在磁盘上。

进程是为了描述程序在并发执行时对系统资源的共享,所需的一个描述程序执行时动态特征的概念。

进程是具有独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配、调度和保护的单位。因此它可以使用系统中的运行资源。

线程又称之为轻量级进程,是进程中的一个运行实体,作为CPU的调度单位。(但,在多线程系统中,资源分配的单位,或资源拥有者还是进程)

(2)进程与线程的比较

1.进程是资源分配的基本单位。进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。而线程与资源分配无关,它属于某一个进程,并与进程内其他线程一起共享进程的资源。

2.当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。

3.线程只由相关堆栈寄存器和线程控制块(TCB)组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。

4.进程切换时涉及有关资源指针的保存以及地址空间变化等问题;线程切换时由于进程内不同线程共享资源和地址空间,将不涉及资源保存和地址变化问题,从而减少了操作系统开销时间。而且,进程的调度与切换都是由操作系统内核完成,而线程既可以由操作系统内核完成,也可由用户程序完成。

5.进程间关系比较疏远。各个进程在自己独有的地址空间内执行,不但寄存器和堆栈是独有的,动态数据堆、静态数据区和程序代码也相互独立。而线程间关系则较为紧密,虽然线程为保持自己的控制流而独有寄存器和栈,但由于两线程同属于一进程,他们共享同一地址空间,所以动态堆、静态数据区及程序代码为各线程共享。



0 0
原创粉丝点击