首页 > 系统相关 >进程与线程的联系与区别

进程与线程的联系与区别

时间:2022-10-24 00:34:32浏览次数:66  
标签:多个 区别 一个 线程 进程 共享 资源

进程

  一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。

 

 

 

线程
进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。

与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。Java 程序天生就是多线程程序。

 

存在意义
如今各种操作系统均能实现多进程同时执行,也就是支持并发编程。一个进程的创建需要消耗计算机资源,销毁意味着要释放资源。当很多个进程同时执行时,计算机资源的消耗太大,执行效率较低。
如何才能提高并发编程的效率?有两种方式:

    进程池:像String常量池、数据库中的连接池,使用进程池来存储多个进程,当进程销毁时并不真的释放这个进程而是将进程存储到进程池中,这样再次使用该进程时直接从进程池中取就好。但进程池维护进程意味着在进程不使用的时候同样需要消耗不少的计算机资源。


    使用线程实现并发编程:线程存在于进程当中,一个进程中有很多个线程。线程较进程而言更加轻量,创建、摧毁、调度一个线程要快于进程。之所以快,是因为多个线程是存在于一个进程当中的,共享一份资源,当在一个进程中创建多个线程时,只有第一个线程的创建需要分配资源,之后线程的创建直接共享该资源即可。进程和线程之间的关系就相当于工厂和工厂中的生产线。一个工厂中有多个生产线,生产线的创建、销毁的成本要低于一个工厂。当然一个进程中的线程并不是说越多越好,因为一个进程中的多个线程可能在消耗同一份资源,如果线程之间过多会出现忙等,反而不会提升并发编程的效率,一个进程中的线程的个数与硬件设备的等级有关。

从用户角度看

进程是正在运行的程序实例

线程是进程中执行执行任务的基本单位

也就是说一个运行的程序至少包含一个进程,一个进程至少包含一个线程,线程不能独立于进程存在。

 

联系:

进程包含线程,一个进程中可以有一个或者多个线程。
进程和线程都是为了解决并发编程。但线程的效率要高于进程,因为多个线程可以共享一份资源,而进程和进程之间是独立的,进程的创建和销毁是一定需要消耗资源的。


区别:

进程是操作系统分配资源的最小单位,线程是操作系统调度的最小单位。
进程具有独立性,进程A的崩溃不会影响到进程B的崩溃;在一个进程中的多个线程是共享一份资源的,一个线程的崩溃可能会影响到该进程中其他线程的崩溃,进而导致整个进程崩溃。
进程间的通信需要在内核中进行,而线程因为共享一份资源可以直接进行通信。

1. 从属关系不同
进程是正在运行程序的实例,进程中包含了线程,而线程中不能包含进程

2. 描述侧重点不同
进程是操作系统分配资源的单位,而线程是操作系统调度的基本单位

3. 共享资源不同
多个进程之间不能共享资源,每个进程有自己的堆、栈、虚存空间(页表)、文件描述符等信息

而线程之间可以共享进程资源文件(堆和方法区)

4.上下文切换速度不同
线程上下文切换速度更快,线程上下文是指从一个线程切换到另一个线程

而进程的上下文切换速度较慢

每个进程都有独立的数据空间(程序上下文),进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程的切换的消耗随略小于进程,较少进行内存和磁盘的交换,但是仍然会有堆栈的映射和切换。

标签:多个,区别,一个,线程,进程,共享,资源
From: https://www.cnblogs.com/qtqbky/p/16819659.html

相关文章

  • 进程与线程的区别
    进程与线程的基本概念1、线程的基本概念概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在......
  • 进程与线程的区别
    进程与线程的定义和简单比喻  首先简单介绍一下进程与线程的定义。进程 进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统......
  • 进程与线程的区别
    一、线程的基本概念线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但......
  • 查看进程使用的线程数量
    1、找到目标进程可以使用ps-ef命令,通过grep关键字来找到目标进程比如我想查看一个监控(prometheus)的进程,结果如下所示:红框内即为监控的进程号2、方法1:pstree命令pstree-p......
  • 进程和线程的区别
    1、进程:是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有5中基本状态,它们是初始态,执行态,等待状态,......
  • 无向图中 生成树,完全图,连通图 的区别
    图按照有无方向分为无向图和有向图。无向图由定点和边构成。有向图由定点和弧构成,弧有弧尾和弧头之分。 如果任意两个顶点之间都存在边叫做完全图。......
  • 进程与线程的区别
    进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进程中的一个执行......
  • 线程与进程的区别
     进程是资源分配的基本单位,线程是调度的基本单位。这是一句名言,很好地概括了两者的区别。用一句话来概括就是:进程对应操作系统,线程对应CPU。我们常说的任务调度,其实通......
  • 线程和进程的区别
    进程:是指一个内存中运行的应用程序(已经在内存中运行的程序).一个进程都有一个独立的内存空间,一个电脑(手机)可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行......
  • 线程和进程的区别
    ①概念:1.进程:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。 2.线程:......