线程与进程_线程与进程的区别 - CSDN
精华内容
参与话题
  •  线程进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可同属一个进程的其它线程共享进程所拥有的全部资源...

    线程和进程有什么区别(简单介绍)

    简单介绍

    一、线程的基本概念

      线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

        好处 :(1)易于调度。

                   (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。

                   (3)开销少。创建线程比创建进程要快,所需开销很少。。

                   (4)利于充分发挥多处理器的功能。通过创建多线程进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行

    二、进程与线程

    进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)

    线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)

    线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。

     

    多进程是指操作系统能同时运行多个任务(程序)。

    多线程是指在同一程序中有多个顺序流在执行。

    每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

    在Java中,一个应用程序可以包含多个线程。每个线程执行特定的任务,并可与其他线程并发执行多线程使系统的空转时间最少,提高CPU利用率、多线程编程环境用方便的模型隐藏CPU在任务间切换的事实在Java程序启动时,一个线程立刻运行,该线程通常称为程序的主线程。

    主线程的重要性体现在两个方面:

    1、它是产生其他子线程的线程。

    2、通常它必须最后完成执行,因为它执行各种关闭动作。

     三、进程与线程的区别:

        (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

        (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

        (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

        (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

     四、同步和互斥的区别:

    当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件中的字符数。当然,在把整个文件调入内存之前,统计它的计数是没有意义的。但是,由于每个操作都有自己的线程,操作系统会把两个线程当作是互不相干的任务分别执行,这样就可能在没有把整个文件装入内存时统计字数。为解决此问题,你必须使两个线程同步工作。

          所谓同步,是指散步在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。如果用对资源的访问来定义的话,同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

            所谓互斥,是指散布在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。如果用对资源的访问来定义的话,互斥某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

     五、进程间通信的方式?

    (1)管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

        (2)信号(signal):信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。

        (3)消息队列(message queue):消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。

        (4)共享内存(shared memory):可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。

        (5)信号量(semaphore):主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。

        (6)套接字(socket):这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。

     六、进程和线程的关系:

      (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

        (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。

        (3)处理机分给线程,即真正在处理机上运行的是线程。

        (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.

     七、多线程的优点

      • 使用线程可以把占据时间长的程序中的任务放到后台去处理
      • 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
      • 程序的运行速度可能加快
      • 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。
      • 多线程技术在IOS软件开发中也有举足轻重的位置。

    八、多线程的缺点

      • 如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换。
      • 更多的线程需要更多的内存空间。
      • 线程可能会给程序带来更多“bug”,因此要小心使用。
      • 线程的中止需要考虑其对程序运行的影响。
      • 通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。

    总结:

    线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。

    posted @ 2018-08-13 19:23 韦邦杠 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • 进程线程的深入理解

    万次阅读 多人点赞 2020-06-22 16:02:10
    进程线程的深入理解精确概括进程线程的区别 既然要谈区别,那么首先需要理解什么是进程线程。 之前,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1.计算机的核心是CPU,它承担了所有的...

    进程和线程的深入理解


    下面是抽象类比:

    单CPU:一台单核处理器计算机 = 一个车间;
    多CPU:一台多核处理器计算机 = 一座工厂;

    进程:一个车间 = 一个进程; (即一个运行的程序)
    多进程:一座工厂可以同时运行多个车间;
    CPU和进程单CPU只能同时运行单个进程,多CPU可以同时运行多个进程

    线程:车间内一个工人 = 一个线程;
    进程与线程一个进程可以包括多个线程

    线程间内存共享:车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。
    一个进程的内存空间是共享的,每个线程都可以使用这些共享内存

    内存安全:可是,每个车间容纳大小不同,有的最多只能容纳一个人。车间人满的时候,其他人就进不去了。
    一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。

    互斥锁:一个防止他人进入的简单方法,就是门口加一把锁。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。
    这就叫"互斥锁"–Mutex,防止两个线程同时读写某一块内存区域

    信号量:这时的解决方法,就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。
    这种做法叫做"信号量"(Semaphore),用来保证多个线程不会互相冲突

    锁和信号量:不难看出,互斥锁是信号量的一种特殊情况(n=1时)。也就是说,完全可以用后者替代前者。但是,因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。

    操作系统的资源分配与调度逻辑

    • 以多进程形式,允许多个任务同时运行;
    • 以多线程形式,允许单个任务分成不同的部分运行;
    • 提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。

    下面是严谨的解释:

    进程

    进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。

    线程

    线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

    进程和线程的关系

    线程是进程的一部分
    一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程

    进程和线程的区别

    理解它们的差别,我从资源使用的角度出发。(所谓的资源就是计算机里的中央处理器,内存,文件,网络等等)

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

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

    所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)

    内存分配:系统为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源

    包含关系:线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程

    展开全文
  • 进程线程的主要区别(总结)

    万次阅读 多人点赞 2018-06-13 10:11:52
    根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类...

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

    在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

    所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)

    内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。

    包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

    展开全文
  • 线程与进程的区别

    万次阅读 2018-12-30 17:26:58
    进程线程的区别 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。 线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本...

    进程和线程的区别

    进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

    线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

    一个程序至少一个进程,一个进程至少一个线程。

    为什么会有线程?

      每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大响应用户请求效率低),因此操作系统中线程概念被引进。

    • 线程的执行过程是线性的,尽管中间会发生中断或者暂停,但是进程所拥有的资源只为改线状执行过程服务,一旦发生线程切换,这些资源需要被保护起来。
    • 进程分为单线程进程和多线程进程,单线程进程宏观来看也是线性执行过程,微观上只有单一的执行过程。多线程进程宏观是线性的,微观上多个执行操作。

    线程的改变只代表CPU的执行过程的改变,而没有发生进程所拥有的资源的变化。 

    进程线程的区别:

    • 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
    • 资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。

         一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

         进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程

    • 执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
    • 线程是处理器调度的基本单位,但是进程不是。
    • 两者均可并发执行。

    优缺点:

      线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行。

      进程执行开销大,但是能够很好的进行资源管理和保护。进程可以跨机器前移。

    何时使用多进程,何时使用多线程?

    对资源的管理和保护要求高,不限制开销和效率时,使用多进程。

    要求效率高,频繁切换时,资源的保护管理要求不是很高时,使用多线程。

    参考:http://blog.csdn.net/yaosiming2011/article/details/44280797

       http://www.cnblogs.com/flashsky/articles/642720.html

    展开全文
  • 我们在学习JAVA或者面试过程中,往往会碰到进程线程、线程池的之间的错综关系,下面我结合网上的资料和自己的理解,总结了三者的关系,从以下几个方面说起: 1、进程线程、线程池的概念  进程是一个动态的...
  • 程序,进程线程的区别和联系

    万次阅读 多人点赞 2019-05-31 16:26:13
    进程和程序区别和联系表现在以下方面: 1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期...
  • 线程与进程的关系

    千次阅读 2019-10-17 17:57:19
    线程进程1 线程进程2
  • 线程与进程

    千次阅读 2018-03-01 15:51:03
    作者:pansz链接:...单进程线程:一个人在一个桌子上吃菜。2。单进程线程:多个人在同一个桌子上一起吃菜。3。多进程单线程:多个人每个人在自己的桌子上吃菜。多线程的问题是多个人同时吃一道菜的...
  • 进程线程的区别(超详细)

    万次阅读 多人点赞 2019-11-07 15:58:33
    进程线程 进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如...与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟...
  • 进程线程关系及区别

    万次阅读 多人点赞 2015-03-15 21:06:12
    1.定义 进程是具有一定独立功能的程序...线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可同属一个进程的其他的线程共享进程所拥有的全部资源. 2.关系
  • 进程与线程的区别(面试题)

    万次阅读 多人点赞 2018-08-28 20:46:55
    进程与线程的区别 进程是资源分配最小单位,线程是程序执行的最小单位; 进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段,线程没有独立的地址空间...
  • 进程线程的区别、相同点

    万次阅读 多人点赞 2017-08-03 09:23:43
    1、首先是定义 进程:是执行中一段程序,即一旦程序被载入到内存中并...2、一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务。 3、线程是一种轻量级的进
  • 腾讯面试题04.进程线程的区别?

    万次阅读 多人点赞 2013-04-19 01:09:32
    进程线程的区别? 进程线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己...
  • 进程线程的区别是什么?

    万次阅读 2019-06-04 11:33:28
    进程是运行中的程序,线程进程的内部的一个执行序列 进程是资源分配的单元,线程是执行行单元 进程间切换代价大,线程间切换代价小 进程拥有资源多,线程拥有资源少 多个线程共享进程的资源 这种题目,专业术语...
  • Linux进程与线程的区别(超级经典)

    千次阅读 2018-08-24 08:40:10
    https://my.oschina.net/cnyinlinux/blog/422207
  • Java中进程与线程的区别

    万次阅读 2017-02-20 21:26:41
    学习电脑和编程语言就会遇到进程线程,初学者往往会在此陷入迷茫和纠结中。其实弄清这两个概念不是很难。从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程进程中的一...
  • 进程线程的区别

    万次阅读 热门讨论 2008-06-03 08:49:00
    进程线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程线程的区别在于:简而言之,一个程序...线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行
  • 进程与线程的区别

    万次阅读 2019-02-13 17:01:43
    线程:进程的一个执行单元, 是进程内调度的实体、是CPU调度和分派的基本单位, 是比进程更小的独立运行的基本单位。线程也被称为轻量级进程, 线程是程序执行的最小单位。 一个程序至少一个进程, 一个进程至少一个线程...
  • 在Linux上显示某个进程线程的几种方式。   方法一:PS 在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为的进程创建的所有线程。 1.$ ps -T -p 方法二: Top top命令...
  • 进程线程的区别和联系

    万次阅读 2019-04-20 15:16:01
    进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程...
1 2 3 4 5 ... 20
收藏数 725,929
精华内容 290,371
关键字:

线程与进程