【基础】进程和线程的区别(超易懂的打比方)

先来进入我们的大工厂~~~

进程就像是工厂里的一个个车间,而线程就是车间里的一条条流水线

而我们的工人张三就是处理任务的CPU

在很早很早以前,我们的工厂有车间A和车间B,工厂每次采集回来原材料,就会按照不同的车间进行分配

——进程是操作系统资源分配的基本单位

车间A有一条有流水线;车间B有两条流水线(流水线1和流水线2)

——每个进程可以有一个及以上的线程(至少有一个,建了一个车间总是要干点儿什么吧)

工厂规定,不同车间里存放的材料只能提供给本车间的流水线使用,也就是说张三不能把车间A里堆放的材料拿到车间B去使用,而且张三发现虽然都是在车间B里,但是流水线1和流水线2都有他们各自的原材料入口,作业区域,成品存放处等等

——同一个进程中的各个线程可以共享本进程的地址空间和资源,但是每个线程有自己独有的资源

但是我们只有张三一个工人,为了保障这2个车间的3条流水线都能正常运行,我们的张三需要以极快的速度频繁的在不同的车间以及流水线之间切换

——线程是CPU调度的最小单位(最小的执行单元)

张三同志表示在车间B的流水线1和流水线2之间切换,比从车间B跑到到车间A方便

——进程之间切换开销较大,线程之间切换开销较小

而且张三发现,在同样的时间内,虽然流水线的执行速度是一样的,但是有两条流水线的车间B总能比只有一条流水线的车间A生产更多的成品

——多线程可以提高运行效率(并非运行速度)

额。。差不多了,欢迎补充~~

最后来点正儿八经的~

对于操作系统来讲,一个任务就是一个进程(Process)

比如打开一个谷歌浏览器就是启动了一个浏览器进程,打开网易云就是启动了一个音乐播放器进程。

一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。

有些进程还可以同时做多件事情,比如你打开网易云音乐,你可以在听歌的同时下载歌曲,还可以写评论,这些其实就是网易云这个“大任务”下面的“子任务”,也就是我们常说的线程(Thread),也称轻量级进程/进程元这些子任务可以单独进行,也可以同时执行。

当只有一个单核CPU,但是有多个进程时,由于CPU执行代码说是顺序执行的,所以操作系统会轮流让各个进程交替执行,任务A执行一会儿,切换到任务B,在切换到任务C……

打个比方就是工厂有三条流水线ABC,但是只有一个工人张三(好惨==),张三在流水线A干会儿,然后在流水线B干会儿,再到流水线C……

工人张三就像是那个单核CPU里的一个核,流水线ABC就是不同的进程

由于CPU的执行速度与切换速度极快,所以我们会有多个任务是在同时执行的错觉,只有多核CPU才能实现真正的并行(同时执行多个任务),就像是多个张三对多条流水线,那是真的在同时执行啦~但是当任务多于核数时,还是要轮流交替执行的。

总结下:

  • 进程是操作系统资源分配的基本单位
  • 线程是CPU调度的最小单位(最小的执行单元)
  • 每个进程可以有一个及以上的线程(至少有一个,打开个应用总是要干点儿什么吧)
  • 同一个进程中的各个线程可以共享本进程的地址空间和资源(但是每个线程有自己独有的资源)
  • 多线程可以提高运行效率(并非运行速度)
  • CPU在线程间的切换是随机的(可以理解为各个线程抢夺CUP这个资源)
  • 多线程没有多进程健壮
    • 一个线程的崩溃会导致该线程所在的整个进程崩溃
    • 而在保护模式下,一个进程的崩溃不会影响其他进程
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,理解了您的要求并明白您的问题。让我来为您解答进程线程的区别。 首先,进程线程是操作系统中的概念。操作系统为了管理资源、调度任务、完成各种操作,需要把任务分成若干个执行单元,这就是进程线程的概念。 进程是操作系统中资源分配的基本单位,是程序在执行时分配和管理资源的基本单位,每个进程有自己独立的内存空间、系统资源和状态。进程之间相互独立,不能直接访问彼此的内存空间,通信需要通过进程间通信(IPC)的方式进行。 线程是操作系统中独立运行的最小单位。线程依赖于进程而存在,一个进程中可以有多个线程。线程与父进程共享内存空间和系统资源,线程之间可以直接访问彼此的内存空间,通信方式相对进程更加简单高效。 因此,进程线程的区别可以归纳如下: 1.资源开销方面 进程需要独立的内存空间、系统资源和状态,相比线程消耗更多的系统资源。线程依赖于进程,多线程共享进程的资源,相比进程消耗更少的系统资源。 2.通信和同步方面 进程之间通信需要通过IPC机制,比较麻烦;而线程之间可以直接访问彼此的内存空间,通信更加简洁高效。在同步方面,由于进程之间相互独立,因此同步机制的实现比较复杂;而线程共享进程的内存空间,同步机制更为简单。 3.灵活性方面 由于进程之间相互独立,因此系统能够非常灵活地管理进程,保证系统的稳定性。而线程共享进程的资源,灵活性比较差,如果一个线程崩溃,可能会影响整个进程的稳定性。 综上所述,进程线程在资源开销、通信和同步、灵活性等方面有着明显的区别。在实际的编程中,需要根据不同的需求选择合适的多任务模型来实现程序逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AQin1012

求小鱼干呢~~

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

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

打赏作者

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

抵扣说明:

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

余额充值