美文网首页
程序,进程和线程的区别

程序,进程和线程的区别

作者: 流年花影 | 来源:发表于2017-10-15 09:36 被阅读0次

       程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种执行的程序称之为进程,也就是说进程是系统进行资源分配和调度的一个独立单位,每个进程都有自己单独的地址空间。所以说程序与进程的区别在于,程序是指令的集合,是进程运行的静态描述文本,而进程则是程序在系统上顺序执行时的动态活动。但是进程存在着很多缺陷,主要集中在两点:
       (1).进程只能在同一时间干一件事情,如果想同时干两件事或多件事情,进程就无能为力了。
       (2).进程在执行的过程中如果由于某种原因阻塞了,例如等待输入,整个进程就会挂起,其他与输入无关的工作也必须等待输入结束后才能顺序执行。
       为了解决上述两点缺陷,引入了线程这个概念。线程是进程的一个实体,也是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,有时又被称为轻权进程或轻量级进程,相对进程而言,线程是一个更加接近于执行体的概念,进程在执行过程中拥有独立的内存单元,而线程自己基本上不拥有系统资源,也没有自己的地址空间,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。除了CPU 之外,计算机内的软硬件资源的分配与线程无关,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
       进程和线程的主要差别在于操作系统并没有将多个线程看作多个独立的应用,来实现进程的调度和管理以及资源分配。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些,对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
       总结一下进程、线程的区别
       1.进程就是在操作系统上执行的一个程序;比如:qq.exe
       a.进程之间没有关系,都是相对独立的
       b.每个进程独享一部分内存及其他系统资源
       c.操作系统允许多进程(任务)处理模式
       2.线程是进程的一个实体表现
       a.进程由多个线程组成
       b.一个进程中的多个线程共享该进程的资源
       c.一个进程中的多个线程支持并发(多线程)

相关文章

  • 线程学习笔记(一)

    线程和进程区别 什么是进程,程序运行的时候会对应一个进程,进程就是处于运行的程序,进程具有并发性。什么是线程,线程...

  • 美团C++开发面试2

    操作系统 1.进程线程区别 以及进程线程间通信 进程线程区别: 进程是程序的⼀次执行过程,是⼀个动态概念,是程序在...

  • 线程和进程的区别

    线程和进程的区别: 1.定义上的区别 进程:线程是程序的一次执行,可以与其他进程并发操作。 线...

  • 补充2

    进程与线程的区别?多进程和多线程的区别? 1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单...

  • 线程和进程概念

    线程和进程 进程 线程 线程和进程的区别

  • Java并发

    进程和线程区别?线程安全和非线程安全区别? 进程与线程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动...

  • 进程和线程

    进程和线程 什么是进程? 进程和普通计算机程序的区别 进程 是运行中的程序 进程 活在内存中 有血有肉有灵魂 程序...

  • iOS多线程(上)文字介绍

    单线程和多线程的区别 一. 程序、进程、线程 程序:由源代码生成的可执行应用。(例如:QQ.app)进程:一个正在...

  • 操作系统(一)

    1. 进程和线程之间的区别 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:CP...

  • 多线程基础(一)

    什么是线程? 首先讲一下程序、进程和线程的区别: 程序:指令集,静态的概念: 进程:操作系统 调度程序, 动态的概...

网友评论

      本文标题:程序,进程和线程的区别

      本文链接:https://www.haomeiwen.com/subject/wsmquxtx.html