线程和进程的区别

来源:互联网 发布:阿里数据分析师面试 编辑:程序博客网 时间:2024/06/10 01:36

*线程是指进程内的一个执行单元,也是进程内的可调度实体(线程基于进程,进程基于应用). 

概念: 
进程:一个程序对一个数据集的动态执行过程,是分配资源的基本单位。 
线程:一个进程内的基本调度单位(进程内部至少有一个主线程,且只有一个),一个进程内也可以开辟多个线程,所以我们一般认为进程的划分尺度比           线程大。 
执行过程: 
进程:拥有独立的内存单元,而多个线程共享内存(系统不会给线程开辟内存空间),从而提高了应用程序的运行效率。 
线程:线程依存应用程序,都有一个程序运行的入口、顺序执行序列、和程序的出口(线程不能独立存在)。 
逻辑角度(重要)
多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但是,操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理及资源分配。 

与进程的区别: 
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间; 
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源 
(3)线程是处理器调度的基本单位,但进程不是. 
(4)二者均可并发执行. 
线程、进程和程序的简单比较 
      总结起来就是,线程是进程的一部分,进程是程序的一部分,一般一个程序的启动就是一个进程的开启,当然一个程序启动可以并行开启多个进程(谷歌浏览器),我们一般会在进程内部开启多个线程,这样就可以提高应用的流程性,例如,当我们加载一个页面的时候我们一般会把网络数据的加载放入到一个(同步,异步)线程中与主线程并行,这样就不会影响到主线程中执行的UI操作(UI操作必须在主线程中执行),提高用户的体验效果。 
当然,我们也可以创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费较大的系统开销和占用较多的资源。除外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。所以,为了减少进程切换和创建的开销,提高执行效率和节省资源,人们在操作系统中引入了"线程(thread)"的概念。 
       进程的作用和定义:进程是为了提高CPU的执行效率,减少因为程序等待带来的CPU空转以及其他计算机软硬件资源的浪费而提出来的。进程是为了完成用户任务所需要的程序的一次执行过程和为其分配资源的一个基本单位,是一个具有独立功能的程序段对某个数据集的一次执行活动。 
      线程和进程的区别: 
      1、线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。 
      2、一个进程内部只有一个线程我们称为单线程,如果内部的实现是通过多个线程执行我们称之为多线程。 
      3、线程的资源来源于所属的进程,线程不同于进程,系统不会给线程分配内存(线程的资源来源于它所属的进程的资源)。线程之间只能共享所属进程的资源,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关。 
      4、与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。 
      5、进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。  

      进程有生命周期,当程序开启的时候,相对应的进程开启,当程序退出的时候,进程也就关闭了(进程基于应用)。一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,或者一个进程都没有。除此之外,进程还有并发性和交往性。简单地说,进程是程序的一部分,程序运行的时候会产生进程。 

 总结线程是进程的一部分,进程是程序的一部分。 

******************************************

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 
简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 
线程的划分尺度小于进程,使得多线程程序的并发性高。 
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 

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

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