首页 > 试题广场 >

进程和线程的区别是什么?

[问答题]
对于这种题目,专业术语不好理解,采用形象一点的比喻更好,比如(取自知乎):

开个QQ,开了一个进程;开了迅雷,开了一个进程。

在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。

所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ
的运行,那么这“多个工作”分别有一个线程。

所以一个进程管着多个线程。

通俗的讲:“进程是爹妈,管着众多的线程儿子”...
编辑于 2017-02-10 08:43:11 回复(9)

线程与进程的区别归纳:

a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

c.调度和切换:线程上下文切换比进程上下文切换要快得多。

d.在多线程OS中,进程不是一个可执行的实体。

发表于 2016-04-24 20:56:36 回复(4)
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响;线程只是一个进程中的不同执行路径,线程有自己的堆栈和局部变量(在运行中必不可少的资源),但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
发表于 2016-02-22 21:14:30 回复(5)
首先程序是静态的指令集合,而进程是运行中的指令集合。
进程是分配资源的基本单位,而线程是独立运行和调度的基本单位。
任意时刻,一个CPU只能运行一个进程,进程获得资源后进行分配,由不同的线程来执行和协作。
1. 进程:程序的一次执行
2. 线程:CPU的基本调度单位
一个进程的内存空间是可以被线程共享的。
进程的内存空间一般是独立的,而线程的内存空间一般是共享的,线程间的同步是为了防止竞争(因同时修改导致数据的不一致),所以要使用互斥锁,防止多个线程同时读写某一块内存区域。
还有的内存区域只允许固定个数的线程进入,就要使用信号量,防止线程之间产生冲突。
互斥锁止允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。

在系统编程中,进程通信和线程同步内容以后有时间再查资料。

线程与进程的区别归纳:

a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

c.调度和切换:线程上下文切换比进程上下文切换要快得多。

d.在多线程OS中,进程不是一个可执行的实体。

编辑于 2016-08-21 10:09:58 回复(0)
线程是调度的基本单位 进程是资源分配的基本单位
发表于 2016-10-17 12:05:30 回复(0)

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。

IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。

发表于 2017-03-30 21:44:46 回复(0)

线程与进程的区别:

a.地址空间和其它资源:进程间拥有独立内存,进程是资源分配的基本单位;线程隶属于某一进程,且同一进程的各线程间共享内存(资源),线程是cpu调度的基本单位。

b.通信:进程间相互独立,通信困难,常用的方法有:管道,信号,套接字,共享内存,消息队列等;线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

c.调度和切换:线程上下文切换比进程上下文切换要快。进程间切换要保存上下文,加载另一个进程;而线程则共享了进程的上下文环境,切换更快。

发表于 2018-02-27 19:52:29 回复(0)
1 进程是执行着的程序,线程是进程内的一个执行序列。一个进程可以拥有多个线程。 2 进程是资源分配的最小单元,线程是执行调度的最小单元。进程拥有独立的资源,多个线程间共享这些资源。 3 进程间通信代价较大,线程间通信代价小。
发表于 2017-07-28 10:20:28 回复(0)
提到线程和进程,必须先了解一些预备知识。

程序:
        程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的有序集合。
        程序(这里和前边指的是包含了线程,进程,程序的抽象概念)有顺序执行(顺序性,只有前一操作结束后才能执行后续操作;封闭性,程序一旦运行,其执行结果不受外界因素的影响;可再现性,输入条件相同,其结果一定相同),并发执行(间断性,失去封闭性,不可再现性,总体来说就是虽然提高了效率,但程序输出的结果变得不可预料,结果不光和输入有关还和cpu有关),并行执行(相互独立,异步)三种方式。
        应用程序(这里指的是进程,例如迅雷,QQ,浏览器等)之间一般是并发执行的,一个线程(比如java程序,一个主方法就是一个线程)内是顺序执行的,多个线程(比如java程序,通过主方法创建其余thread对象,从而让jvm创建多个线程,这里要知道jvm本身就是一个程序,一个进程)之间可以顺序也可以并发执行。

进程:
        进程是程序的一次执行过程。
        进程具有五个基本特征:动态性(一是体现在 进程是程序这个静态实体的执行过程;二是体现在 进程由创建而产生,由调度而执行,由得不到资源而暂停执行,由撤销而消亡,这是一个生命周期),
并发性(多个进程存在于内存中,可以在一段时间内同时运行),独立性,异步性,结构性(进程由程序段,数据段,进程控制块PCB三部分组成,这三部分统称为“上下文”)
        进程三种基本状态:就绪状态(除了处理器,也就是cpu外已分配到所有必要资源,只要获得cpu就能执行,系统里有就绪队列),等待状态(因发生某些事件而无法执行时,释放cpu,进入等待队列,等事件结束后进入就绪队列),执行状态(已获得cpu,程序正在执行)

进程和程序的区别:
(1)程序是永存的,是静态的,本身只是一组有序指令的集合,保存在硬盘上,除非手动删除掉,否则永远存在;进程是暂时的,是动态的,进程是程序在数据集上的一次执行,有创建有撤销,具备生命周期,存在是暂时的;
(2)进程(运行中的程序)能并发执行,而程序(静态实体)不能并发执行(程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种运行中的程序称之为进程)。
(3)进程和程序不是一一对应的: 一个程序可对应多个进程(即多个进程可执行同一程序,一个程序运行在不同数据集上就构成了不同进程,比如***QQ); 一个进程可以执行一个或几个程序(最典型的例子就是几乎所有程序都需要显卡驱动进程支持)

线程:
        线程是进程的一个实体。
        线程也具有动态性(也具备生命周期),并发性,拥有自己的线程控制块TCB,一个线程可创建另一个线程(例如java主方法创建多个thread线程对象),在同一进程内各线程共享同一地址空间(即所属进程的内存空间),一个进程的线程在另一进程内不可见。
        相对进程而言,线程是一个更加接近于执行体的概念,进程在执行过程中拥有独立的内存单元,而线程自己基本上不拥有系统资源,也没有自己的地址空间,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和线程栈)。

线程和进程的区别:
1.从底层来说,进程=cpu加载上下文+cpu执行+cpu保存上下文,线程=(在共享进程的上下文的基础下,将程序的实现分为多个程序段来执行,每个程序段就被称为线程),也就是说线程和进程都是cpu工作时间段的描述,只不过线程的cpu工作时间段小,进程的cpu工作时间段大。
2.在同一进程中的不同线程共享相同的地址空间,而不同的进程则在内存中有独立的地址空间。因此线程可以读写同样的数据结构和变量,便于线程之间的通信。相反,进程间通信(IPC)很困难且消耗更多资源。
3.一个线程死掉就等于整个进程死掉,而一个进程死掉,由于保护机制,其他进程不受影响,所以多进程的程序要比多线程的程序健壮(稳定)
4.一个进程可包含多个线程,线程属于进程。
5.线程是调度(获得的cpu的所有权)的基本单位,进程是资源分配的基本单位
发表于 2018-05-18 02:48:40 回复(3)

进程是程序的一次动态执行过程,它对应了代码加载、代码执行到执行完毕的一个完整过程,作为蓝本的程序可以被多次加载到内存的不同区域,形成不同的进程。

线程是进程内部单一控制流,一个进程在执行过程中可以产生多个线程,每个线程也有自己产生、存在和消亡的过程,且进程中的每个线程都能够争用资源,且线程可以看成是进程当中独立的线索,会共享资源,所以需要保证线程并发性的安全。

根本区别:进程是操作系统资源分配的基本单位,线程是任务调度执行基本单位

运行环境:操作系统中可多进程(程序)运行,在同一个进程中可多线程同时执行(线程是CPU通过时间片调度)

内存分配:系统在运行的时候会为每个进程分配不同的内存空间,而系统只为线程分配CPU,不分配内存(线程所用资源来自所属进程的资源),线程组之间共享资源

开销方面:每个进程都有独立代码和数据空间(程序上下文),进程切换消耗资源过大。线程可以看成轻量级的线程,同一类线程共享代码和数据空间,每个线程都有独立的运行栈和程序计数器PC,线程切换开销小。

包含关系:只有一个线程的进程可以看成单进程,一个进程若有多个线程,则多线程共同完成。

发表于 2019-09-04 19:46:28 回复(0)
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。
发表于 2015-10-29 12:10:41 回复(0)
进程相当于一个程序的运行工厂,而这个工厂内的车间就相当于线程,一个工厂内的不同工作会分配给不同的车间进行操作。进程就是线程的运行环境容器。
发表于 2022-04-21 16:55:01 回复(0)

<p>进程是执行中的应用程序,线程是进程内部的一个执行序列,一个进程可以有多个线程,线程又叫做轻量级进程,区别在于进程之间相互独立,同一个进程中的多个线程共享进程中的资源,进程拥有的资源多,线程拥有的资源少,进程间切换代价大,线程间切换代价小。

编辑于 2020-07-22 20:30:38 回复(0)

进程是资源分配的基本单位,

线程是任务调度和执行的基本单位。

发表于 2019-03-29 01:00:12 回复(0)
进程4gb,线程eip
发表于 2018-07-12 09:56:27 回复(0)
进程是执行着的应用程序,是程序的动态形式,占用CPU,内存资源,因为相互独立,之间通信困难。 线程是进程内部的执行序列,不占用资源,共享一块空间通信比较容易。一个进程可以有多个线程p
编辑于 2017-09-18 08:44:34 回复(0)
进程和线程的本质区别是进程是作为资源分配的单位,线程是作为调度和执行的单位
发表于 2017-04-07 15:05:21 回复(0)
进程拥有一个完整的虚拟地址空间,可以分配资源;线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。
发表于 2015-12-15 13:30:33 回复(0)
进程是运行中的程序,线程是进程的内部的一个执行序列
进程是资源分配的单元,线程是执行行单元
进程间切换代价大,线程间切换代价小
进程拥有资源多,线程拥有资源少
多个线程共享进程的资源
发表于 2016-04-11 20:54:15 回复(4)
进程:
有独立的堆栈空间和数据段,系统开销大;安全性高,有独立的内存地址空间,一个进程崩溃不会造成系统崩溃;进程间的通信机制比较负责。
线程:
有独立的堆栈空间,但共享数据段,共用一个内存地址空间,系统开销比进程小;通信机制比较简单
发表于 2021-08-13 10:09:20 回复(0)