进程和线程的关系以及区别

来源:互联网 发布:php class unset 编辑:程序博客网 时间:2024/05/16 05:25

一、概念
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,线程单位比进程要小,线程一般不拥有系统资源,只拥有寄存器,堆栈指针等不可少的一些数据,但是同一进程中的线程之间的资源是可以共享的。线程的创建和撤销常常可以由其他的线程来实现,尽管在同一进程中的线程共享数据资源,但是它拥有自己的栈空间,拥有自己独立的TCB(线程控制块)
二、区别
1.大小上,一个程序都至少有一个进程,一个进程都至少有一个线程。线程尺度相对较小(是CPU调度和分派的基本单位),进程尺度相对较大(是系统进行资源分配和调度的一个独立单位)。
2、进程在相对于线程独立稳定的同时,也会无法像一个进程中多个进程无法实现资源的共享。从而资源调配的速率大打折扣。
3、每个线程都有其特定的执行入口,执行序列,但是线程不可以独立执行(因为其不拥有系统资源),必须存在于进程中,有进程提供多个线程执行控制。
4、多线程在于同一个应用程序中,多个执行部分可以同时进行,但是操作系统并未将他们看做独立的部分,未实现进程的调度管理及资源分配。
三、各自优缺点:
线程的执行开销小,但是不利于资源的保护。进程在该方面与线程相反。同时,线程适合在SMP(对称多处理系统)上运行,进程则可以跨机器迁移。

原创粉丝点击