【秒懂程序、进程、线程的概念与区别】

前言:本文只是对程序、进程、线程这些相对重要的概念用简单通俗的话来讲解,如果想要进一步学习可以去看操作系统原理的书本会解释得更加专业,但是也会稍加晦涩难懂一些。

【1】程序 进程 线程

➢程序(program):是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。 (程序是静态的)

➢进程(process):是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域。 (进程是动态的)是一个动的过程 ,进程的生命周期  :  有它自身的产生、存在和消亡的过程 

补充:一个进程实体进程控制块(PCB)、程序段数据段三部分构成。

➢线程(thread),进程可进一步细化为线程, 是一个程序内部的一条执行路径。
  若一个进程同一时间并行执行多个线程,就是支持多线程的

形象理解:
例如打开一个360安全卫士,这时有了一个进程,其次同时可以进行木马查杀、清理垃圾、电脑体检,这些就是这个进程下面的三条执行路径,此时就有了多线程,CPU资源上升。

【2】单核CPU与多核CPU的任务执行

【3】并行 和 并发

并行:多个CPU同时执行多个任务                                                 
并发:一个CPU“同时”执行多个任务(采用时间片切换)           
更准确的解释如下:
并行:指两个或多个事件在同一时刻发生,只有在多CPU环境下才有可能发生
并发:指两个或多个事件在同一时间间隔内发生,即:在一段时间内宏观上有多个程序在同时运行,但实际上每个程序只是在CPU分配的时间片内运行每一时刻也只能由一道程序执行

同一时刻: 这指的是精确到某一瞬间的时间点,即时钟的具体刻度。在计时的瞬间,所有的时钟都显示相同的时间。例如,如果你说 "在12:00这一时刻,我们会开始会议",那么所有的时钟在12:00时都应该显示相同的时间。

同一时间间隔: 这是指一段时间的长度,可以是任何长度,从毫秒到年。它表示一个时间段,而不是一个具体的瞬间。例如,你可能说 "在接下来的30分钟内,完成这项任务",这就是一个时间间隔。

举个例子来说明:

假设现在是12:00,如果你说 "我们在同一时刻(12:00)开始会议",那么所有的时钟都应该在这一刻显示12:00。

而如果你说 "我们在同一时间间隔内(比如下午2点到4点之间)完成任务",那么这表示在下午2点到4点这个时间段内,任务需要被完成,但具体的开始时间可以在这个时间段内的任何时刻。

形象理解:
一个球场上有很多队伍,各自的队伍在各自的区域打篮球,这就相当于并行。
一个队伍在打球时候,同一时间都在抢篮球,相当于多个线程在抢这一个CPU资源,对于这个篮球/CPU来说就出现了并发。 

【4】进程和线程的比较(重点)

1)调度。在传统的操作系统中,拥有资源和独立调度的基本单位都是进程,每次调度都要
进行上下文切换,开销较大。在引入线程的操作系统中,线程是独立调度的基本单位而线程切换的代价远低于进程。在同一进程中,线程的切换不会引起进程切换。但从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换
2)并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且一个进程中的多
个线程之间亦可并发执行,甚至不同进程中的线程也能并发执行,从而使操作系统具有更好的并发性,提高了系统资源的利用率和系统的吞吐量
3)拥有资源进程是系统中拥有资源的基本单位,而线程不拥有系统资源(仅有一点必不
可少、能保证独立运行的资源),
但线程可以访问其隶属进程的系统资源,这主要表现在属于同一进程的所有线程都具有相同的地址空间。要知道,若线程也是拥有资源的单位,则切换线程就需要较大的时空开销,线程这个概念的提出就没有意义。
4)独立性每个进程都拥有独立的地址空间和资源,除了共享全局变量,不允许其他进程
访问
。某进程中的线程对其它·进程不可见。同一进程中的不同线程是为了提高并发性及进行相互之间的合作而创建的,它们共享进程的地址空间和资源
5)系统开销。在创建或撤销进程时,系统都要为之分配或回收进程控制块PCB及其他资源,
如内存空间、I/O设备等。操作系统为此所付出的开销,明显大于创建或撤销线程时的开销。类似地,在进程切换时涉及进程上下文的切换,而线程切换时只需保存和设置少量寄存器内容,开销很小。此外,由于同一进程内的多个线程共享进程的地址空间,因此这些线程之间的同步与通信非常容易实现,甚至无须操作系统的干预。
6)支持多处理机系统对于传统单线程进程,不管有多少处理机,进程只能运行在一个处
理机上。对于多线程进程,可以将进程中的多个线程分配到多个处理机上执行

更简单的总结: 

  1. 执行开销进程有独立的地址空间和资源,创建和销毁进程的开销比较大;线程共享进程的地址空间和资源,创建和销毁线程的开销较小
  2. 通信切换:进程之间必须通过IPC(进程间通信)进行通信,切换开销相对较大;线程之间可以直接共享进程的地址空间和资源,切换开销相对较小
  3. 并发性进程是独立的执行单元,具有自己的调度算法,在并发条件下更加稳定可靠线程共享进程的资源,线程之间的调度和同步比较复杂,对并发条件的处理需要更多的注意
  4. 资源占用进程是操作系统资源分配的基本单位,同一进程内的线程共享本进程的资源
  5. 系统开销:由于创建和销毁进程需要分配和回收系统资源,因此开销较大。相比之下,线程的创建和销毁开销较小
  6. 独立性进程是独立的执行单元,一个进程崩溃,其它进程不会受影响。而线程是依存于进程的,一个线程的崩溃可能会导致整个进程的崩溃
  7. 地址空间每个进程都有独立的地址空间,而线程共享本进程的地址空间
  8. 调度线程是操作系统调度执行的基本单位,而进程不是,进程是操作系统资源分配的基本单位(注意只有在传统的操作系统当中,进程才是操作系统资源分配和调度的基本单位!!!)
  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
程序进程线程是计算机中非常重要的概念,它们之间的关系如下: 程序是指一组指令和数据的集合,是一种静态的概念,通常以文件的形式存在于存储设备中,需要被载入内存并被操作系统调度才能执行。 进程是指操作系统中正在运行的一个程序的实例,是一种动态的概念,包括程序计数器、寄存器、内存、文件句柄等运行时状态。每个进程都有自己的地址空间、资源和权限,操作系统通过进程调度机制来管理和调度进程的执行。 线程是指进程中独立运行的一组指令序列,是操作系统调度的基本单位,它们共享进程的地址空间和资源,但每个线程有自己的栈和寄存器。线程可以并发执行,提高系统的并行度和效率。 它们之间的区别如下: 1. 程序是静态的代码和数据的集合,进程程序的执行实例,而线程进程中的一个执行序列。 2. 进程具有独立的地址空间和系统资源,而线程共享进程的地址空间和资源,但具有独立的栈和寄存器。 3. 进程之间的切换需要保存和恢复进程的所有状态和资源,而线程之间的切换只需要保存和恢复线程的栈和寄存器。 4. 进程之间的通信需要通过IPC(进程间通信)机制,而线程之间的通信可以通过共享内存或消息传递等方式。 总之,程序进程线程是计算机中非常重要的概念,它们之间有着密切的联系和区别,对于理解操作系统的工作原理和编写高效的多线程应用程序都非常重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheMythWS

你的鼓励,我的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值