进程、程序、线程之间的异同


进程、线程与程序之间的关系搞得晕头转向啊。。。

一.进程

1.1定义

在内存中运行的程序,每个进程都存在一块自己独立的空间,一个进程可以有多个线程。进程是能够独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个独立运行的活动实体。

进程是程序的一次执行过程,或是正在运行的程序。

在这里插入图片描述

1.2三种状态

  • 就绪状态
  • 执行状态
  • 等待状态(阻塞状态)
    在这里插入图片描述

:进程只能由父进程建立,系统中所有的进程会形成一种进程树的层次体系。挂起命令可由进程自己和其他进程发出,但是解除挂起命令只能由其他进程发出。

1.3特征

  • 动态性:进程的实质是程序一次执行过程,进程是动态产生,动态消亡那个的;
  • 并发性:任何进程都可以同其他进程一起并发执行;
  • 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
  • 异步性:由于进程间的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。

二.程序

2.1定义

未完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。

进程与程序的区别

  • 进程是程序的一次运行活动,属于一种动态的概念。程序是一组有序的静态指令,是一种静态的概
    念。
    进程离开了程序也就没有存在意义——进程是执行程序的动态过程,而程序是进程运行的静态文本。
  • 一个进程可以执行一个或多个程序。
  • 程序可以作为一种软件资源长期保持,而进程则是一次执行过程,它是暂时的,是动态地产生和终止的。

(1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;

(2)程序是静态的观念,进程是动态的观念;

(3)进程具有并发性,而程序没有;

(4)进程是竞争计算机资源的基本单位,程序不是。

(5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序。

概念上的区别

(1)进程是动态的,而程序是静态的。

(2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。

(3)1个程序可以对应多个进程,但1个进程只能对应1个程序。

三.线程

3.1定义

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

进程可进一步细化为线程,是一个程序内部的一条执行路径。
线程作为调度和执行的单位。

在这里插入图片描述

进程与线程的区别

同类的多个线程共享进程的堆和方法区资源,每个线程有自己的程序计数器、虚拟机栈和本地方法栈,因此系统在产生一个线程或者各个线程之间切换工作时,负担比进程小的多。

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

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

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

  • 内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

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

  • 执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行
    通过梳理懂了一丢丢,哈哈哈
    还可以从其他角度进行区分,比如后端童鞋可以从JVM出发,比较它们的异同。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值