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

发布时间:2024年01月15日

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

【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. 调度线程是操作系统调度执行的基本单位,而进程不是,进程是操作系统资源分配的基本单位(注意只有在传统的操作系统当中,进程才是操作系统资源分配和调度的基本单位!!!)
文章来源:https://blog.csdn.net/TheMyth142857/article/details/135604718
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。