00:00
下边咱们再给大家介绍个概念啊,叫做并行与并发,那这个病行与并发呢,我们分成两个场景来说,第一个呢,就是对于咱们编程当中,程序当中的并行与并发啊,另外呢,是针对于咱们这个垃圾回收这个方面,我们说什么叫并行,什么叫并发是吧?诶这样两个这个阶段来说,首先的话呢,我们先提到这个并发啊,并发的话叫concurrent啊,对于大家来讲,这个并发呢,实际上并不陌生啊,并发也好,并也好,实际上呢,都是我们这叫并发编程当中的一个概念啊,说在这个操作系统当中,你看什么叫并发操作系统当中,在一个时间段当中,对吧,这块大家一定要明确是在一个时间段当中有几个程序啊,它处于已启动运行和运行完毕之间,说白了就是它是在运行的这个状态当中的,那并且呢,这几个程序呢,都是在同一个处理器上来运行啊,这个呢,也非常关键,在同一个处理器上啊,大家比如说看我们下边这个图,我们这个横坐标呢,就看成是这个,比如像这个时间轴啊,随着这个时间轴的话呢,我们这个CPU呢,在做一个执行,或者这一个核是吧,在做一个执行那。
01:00
那在具体的某一个时刻来看的话呢,大家会发现呢,实际上是不是只有这样一个这个程序在执行,对吧,只有这一个程序在执行,当然我们如果放放眼到这个一段时间之内呢,你会发现呢,这三个程序那都在执行。哎,三个进程呢都在执行,这呢,就是我们可以理解为呢叫并发,换句话说呢,就是我们这一个CPU是不是快速的在切换这个任务,对吧?哎,那切换这个ABC这三个任务看似呢,这三个程序呢,都在同时的执行。那举一个生活中的例子呢,就比如说大家这块呢,嗯,以前呢,咱们只有一个CPU是吧,只有单核的场景下呢,大家一边听音乐呢,一边打游戏,听着音乐呢打游戏对吧?那这时候你音乐和这个打游戏这两个其实就两个具体的应用程序,两个进程了,那看似的话呢,都在同时的执行,主要原因是因为我们这个C部U的主频比较高,它快速的去切换这个任务对吧来造成的啊呃,那再举一个生活中的例子呢,就好比是大家呢,去一个这个饭店吃饭,其实北京呢,有很多这样的这个小饭店哈,就是嗯,不是那种大饭店,就是一个小饭店,门脸呢可能也很一般,但是这家店呢,他就专门做某一道菜呢,做的特别好,比如说像北京有一个,呃,那个然龙古巷那块有个叫做那个钵钵鸡的啊,就做的就非常啊,你不管什么时候去呢,晚上九点多我都去过一次啊,人还是特别多,在外边排队,那他可能这家饭店呢,他就只有一个厨师,就是这个老板对吧,这个老板的话呢,然后在后厨呢,去做这个诶钵钵鸡,然后呢,前边这块呢,有很多这个桌子,大家都在这吃。
02:30
那每一桌人呢,你看都像是一个应用程序对吧,那么其实后台这块呢,就只有一个厨师,但是的话呢,这个呃厨师或者这老板呢,他的这个手艺呢,已经非常熟练了,呃熟练到呢,就是你看似呢,每一桌上似乎都有一个单独的一个呃CPU或者一个厨师在给咱们服务一样,因为很快的这个菜展陆陆续续的就都上来了,像是他们在并发的,像是并行的在执行是吧,那实际上是一个并发的行为,因为呢,只有一个,我们说一个CPU或者一个厨师。啊,因为它这个呃,叫什么太熟练了,就像我们这个CPU主频很高是吧,它可以实现呢,快速的切换,看似呢,同时都在执行啊就这样子的。
03:07
那这里边我们一定要明确这个并发呀,它并不是真正意义上的这个同时执行,那只是说呢,咱们这个CPU呢,诶分成这个很多的时间片段是吧,然后快速的去切换啊,切换速度很快,看似呢是同时在执行一样,哎这个注意,所以这里边主要强调一个时间段内,一个呢是同一个处理器是吧?哎,这个情况好,然后下边呢,我们来看一下,这个叫并行啊parallel parallel并行说当系统有一个以上的这个CPU,当然主要呢,咱们说还是这个核是吧,你可能一个CPU单有是多核双核的,那也算是两个啊两个,那么当有一个以上的这个CPU的时候呢,当一个CPU执行一个进程时,另一个CPU呢,可以执行另外一个进程,那两个进程呢,它不涉及到呢,抢占资源。诶,他们不是去抢占资源的这样一个行为,他们就是真正意义上的同时执行,那我们就称为呢,叫做并行,那么大家从这个图当中应该也非常清晰的能够看到,那么在具体的某一个时刻的话呢,我们就是有三个线程。
04:05
三个进程对吧,哎,就有三个进程都在执行。啊,那对于咱们刚才说这个并发的话呢,在某一个时刻呢,只能有一个进程,那你在这个时间段之内呢,我们说诶才可能会出现有三个对吧?哎是这样的,哎,所以他们是有区别的,这里边儿呢,主要我们强调的第一个是一个以上的这个CPU。对吧,一个以上CPU,然后在某一个时间点上呢,他们都是有多个的啊,这呢叫para。那那其实啊,决定并行的因素呢,不是CPU个数,而是CPU的这个核心的数量,就是我们说里边有几核,一个CPU2个核,那也算是可以同时的运行两个进程,对吧?那么这呢,适合于我们说可以运算啊,后台处理等若交互场景啊,这个我们可以考虑使用这条并行的操作,OK。行,那么关于程序当中这个病情与并发他们二者的一个对比啊,这个大家呢,应该也都比较了解啊,咱们快速过一下,这个并发呢,咱们说是在一个时间段之内呢,他们同时发生了。
05:03
对吧,诶然后这个并行的话呢,那就真的是在某一个时间点上啊,它都是同时发生的,那时间点都是同时发生的,那你这个时间段那就更是了呗,没问题对吧?好,下一个说呢,并发的多个任务它是互相抢占资源的,因为当时咱们提到是只有一个CU嘛,那并行的话呢,因为多个CPU他们不互相抢占资源,哎,这是这样一个区别。那只有在呃,多CPU或者一个CPU多核的情况下呢,才会发生并行,否则的话呢,看似同时发生的事情,实际上都是并发执行的啊,这个大家要明白,那再举一个生活中的例子呢,就比如说我们这个什么呀,叫打篮球是吧?啊,那么这个篮球的话呢,比如说我们就好比是这里边这个CPU一样,那看似呢,很多人啊,这个一边五个人是吧,十个人大家都在打篮球啊,十个人就相当于是十个进程一样都在打篮球,但事实上呢,篮球就一个,也就是说呢,在某一个时间点上的话呢,是不是只能有一个人摸着这个篮球啊,只有他在操作这个篮球对吧?那其他的那九个人都得等着,但是你要放眼到整个这一场比赛当中的话呢,十个人可能谁都摸过篮球啊,谁都玩过这个篮球,那就他们实际上看似是一个并行的,实际上是不是一个并发的呀,因为就这一个篮球嘛,诶所以这个呢是一个很关键的啊,它那就好比是我们说的这个CPU啊,行,那么关于程序的这个病情与病发,大家应该是不陌生,这呢我们也算是一个复习啊,诶,我们就先说到这。
我来说两句