00:00
是什么来看几个概念,在讲这个group GR之前呢,我们先给大家介绍几个比较重要的概念,这些概念呢,嗯,可能同学们听起来有点吃力啊,呃,因为呢,它涉及到一点点操作系统的东西,但是我尽量呢给他讲解清楚一点,再说一点啊,同学们我们在学这个G的时候呢,我会讲到一点操作系统的东西,但不会太多。呃,因为我们毕竟不是讲操作系统,如果哪一天我们有机会给他讲讲操作系统,那我们再讲细一点,那现在我们不是站在这个操作系统这个层面来讲的,在这个更多是几个概念,概念层面来讲的,好我们来看看,呃,在学这个group的时候呢,我们需要明确这么几个概念,第一个进程。第二个线程。各位,那么进程和线程指的是什么?举个例子,同学,进程就是程序。程序在就是程这个这个这句话不要啊,就是程序在操作系统中的一次执行过程。
01:03
哎,这句话说的还是比较经典的,打个比方,我们前面写了很多的程序,比如说刚才你们的点exe文件,比如说前面我们讲的这个叫客户关系管理系统,那么你你整完了过后,其实它是一个exe的这么一个一个一个文件,这个呢并不能叫程序啊,这个你可以叫做这这个可能叫一个文件,那么源代码呢,你也叫文件,那指的什么呢?你也可以把这个叫程。叫做一个什么呢?叫叫做我们的一个源码程序指的是程序指的呃,进程指的是什么呢?进程是我们去运行的这个东西,我们运行它,让它在内存里面,让操作系统开始执行呢,好,我们把这个叫做一个进程,它是什么呢?是系统进行资源分配和调度的基本单位,最直接的同学们看,同学们你们可以看到在任务管理器里边,同学们打开它怎么看这里。
02:00
我们都可以叫做一个一个的进程。哎,你看这个都叫一个进程,进程很多,但有些进程呢是后台进程,有些进程呢是前台,就是它有界面,你比如说word文档,你看我们打开的这个word文档,其实它一双击,它就会是一个以一个进程的形式来执行的。包括你们用的最多的,你们可能用的这个迅雷用的最多,比如说我起个迅雷,你们就看看,可以看到在这里就会抓住一个进程,那么给大家起,呃就进,呃,迅雷我是不敢起起的,因为迅雷太猛了,上来后吃的资源太狠了啊,上来后它是个重量级的,我们就举一个最简单的吧,各位同学我把这个关掉。这个是一个notepad。我待会找一下这个罗啊,输一下。我先这个N好,大家看现在N打头的没有这个记事本,没有这个记事本啊,我双击一下打开一个,你们就会看到多了一个东西。好,我我把这个就定位到这,然后我双击一个,你们会看到多了一个啊进程的名字就是notepad双击。
03:07
大家可以看到是不是多了一个。Notepad这个就是刚才我们双击这个这个notepa的时候产生的,那如果我关闭它,同学们看,一旦我结束这个进程,那么这个界面也会被关闭。好,这个意思好很简单啊,很简单,这个呢就叫一个进程,就是一个程序执行啊,就叫一个进程,那么这个进程呢,它会系统就会分配资源啊,它也是个基本调度单位进程的概念,说到这里,那么有一个问题,什么是线程呢?哦,限制也很重要,限制指的是这个意思啊,限制是进程的一个执行的实例,这个有点不好理解。说老师啊,那个进程不仅已经跑起来,怎么还有一个线程呢?是这样子的啊,同学们,最经典最好的可以这么理解,是程序执行的最小单位,它是比进程更小的人独立的基本单位。
04:01
那说完这个大家可能还是不理解,那如果我举这个例子,大家可能一下就明白了,大家看同学们呢,都用过这个迅雷啊,没有用过迅雷的呢,应该比较少,同学们看,当我们打开一个迅雷的时候,各位朋友,那么这个时候你双击这个迅雷,其实它就会起一个什么玩意儿呢?它就会起一个进程。但是这个进程里面呢,我们每一个迅雷可以同时下载多个文件,这个大家都是知道的,比如说我下载这个封神英雄榜,我一共下载这么多,你们可以看到每每下载的一个这个,每下载的一个这个文件呢,就可以相当于是一个什么是一个线程。啊,这个线程呢,也是独立的,它相当于说一个进程下面可以有很多很多的线程,那为什么他这么去设计呢。其实这样才能最大的发挥我们CPU的一个性能,它是这么一种设计片,同时呢,线程呢,它相对来说它吃的资源要少一些。
05:10
啊,所以说是这样这样子一个关系啊,说你可以这么去理解,好,接着我们往下看。一个进程可以创建和创建和销毁这个,这个写错了和销毁多个线程,同一个进程中的多个线程可以并发执行。并发,注意,我说的是并发,并没有写并行。待会儿我再讲并发和并行的区别啊,并发执行就是说从效果上来说,好像是我们这有五个,有五个这个文件同时下载。好,从效果上说,好像是五个同时下载,但实际上各位同学,实际上从一个微观的角度来看,其实它只是那个时间片很短。来回切换,其实从一个微观来看呢,其实在一个微观的角度来看,一个时间点只有一个文件在下载。
06:03
对吧,如果你不是并行的情况下,它就是这样子的。那么这个是我们所说的一个说的这个概念还有一点,一个程序至少有一个进程,一个进程至少有一个线程。就一个一个进程必须有一个线程,他们的关系是这样子的,如果画一个图的话呢,它的关系是这样子的来说有一个程序打开了。比如说这儿有一个迅雷。这个迅雷,我们就是迅雷。迅迅雷,迅雷呢,点一个一好,这个呢,我们把它叫做是一个什么呢?是一个程序啊,或者叫做一个文件。啊,一个文件。一个程序结,那么这时我们运行它,当我们运行它的时候,它就起一个进程,当。当。我们运行时运行。那一旦运行,一旦运行的话呢,它就会。
07:00
把它调入到我们内存里面去执行,这个时候呢,这个程序我们就管它叫做一个具体的进程了。这就是一个一个进程。这个就是一个进程。当然有同学说了,说老师这个进程叫什么呢?这个呢,一般来讲,我们就一般来讲会以他的这个文件名为为名啊,比如说像像迅雷可能类似于tender啊,点DR类类似于这样一个名字吧,我我也没去看,好像是这种名字,那么有些同学老师我一个程序能不能起多个进程呢?这就要看这个程序允不允许和操作系统允不允许,有些是可以的,我记得以前最早的时候那个暴风影音啊,现在暴风影音你看你打开一个,你再双击。他就会把原先打开给你调过来,但是最早的时候我记得。好像那个那个那个就是那个暴风影音可以起好多了。以前我们有个学生在上大学那小时看看电视剧太猛了,你知道吗?同时起三个去的,我都都不知道怎么看电视连续剧的,就说三个三部电影同时看,你这是什么,见过鬼了这都啊,我说你这是这有病啊,你在看这个,他说我时间太紧了啊,时间时间太紧了,时间太紧了就同时看三部电影啊,就是那种人啊,那种人很怪,因为上大学你们都知道吗?以前我们上大学的时候最喜欢的,我们上大学的时候跟你们不一样,我们最流行的是到那个FTP,就那个FTP国外资愿网啊,那上面好多好多外国电影啊,高清的啊,都特别好看啊,然后呢,后边后面又流行的一段时间,就是那个BT下载也被抓起了,BT下载,一个BTBT站长那个人为为所有的这个网民做了巨大贡献的人,其实赚了100多万,还被抓起来了,现在啊,所以说在网络上你现在不好不好赚钱啊,不好赚钱,那么。
08:54
那么这一个进程里面呢,诶,它可以起很多线程,各位朋友就这一个进程可以起很多很多线程,这是没问题的。
09:03
先把这个关系要弄清楚,就说我一个进程里面可以起多个线程,那么相当于是这个这个这个关系进程里面可以对应很多线程,哎,这样子大家可能就变得比较轻松了,哎,这是一个线程,线程一。哦,这个地方是线程二。啊,这线程二以此类推,那比如说刚才你们看到这个图,哎,你们看这个图就是相当于说我这一个进程里面呢,有五个正在执行的,另外呢,在排队啊,啊到底起几个,这个要看程序本身啊,有些有些程序是可以让你起很多,有些程序可能就阻止你了,说诶最多下载几个,好像迅雷是可以设置的。迅雷同时下载几个是有个设置,可以设置五还是十对不对啊这样子的好,它的关系就大概这在程序或者有些叫代码,然后呢,双击运行成一个进程,进程呢里面可以有多个线程关系,就这样子的好,大家把这个关系漏洞。好,有了这个关系过后呢,这个图我也画清楚了,对吧,我这画的比刚才那个更清楚一点,好,我们现在板述一下,这个叫做什么呢?我们做了一个叫做呃,GR的一个基本介绍,对做了一个基本介绍,我们讲了什么呢?
10:15
做了一个基本的介绍,各位朋友基本介绍我刚才讲的是进程和线程的关系。进程和线程的关系。啊,他们的介绍吧,介绍OK,给大家一个标题三。标题上我一共呢,总结了这么几句话,把它板述一下时间的关系啊,我就不写了,干脆直接把它拿过来吧。啊,把它拿过来就行,OK。将其板书。将其板书。好,它的示意图进程,还有就是程序,进程和线程的一个示意图画过来了就是程序。还有这个进程和线程的一个关系示意图。关系示意图,我也把它拿到比里面去,这是第三点啊,各位朋友OK,然后呢,我把这个Excel表拿过来。
11:08
对,看清楚了啊,我我这为什么没大家对齐,就是因为有些有些程序啊,是可以同时起多个这个进程的,就说我双击再双击一次,它又起一个啊也也有这样的这样的程序啊,现在就看这个,就看现在操作系统啊,它支不支持这种。啊OK,这个就呃基本介绍,咱们就就说到这儿,下面接着看并发和并行。这个玩意儿呢。这个玩意儿我要画图的话,就要看看这个东西了。可以这样理解,什么叫做并发?什么叫做并行?听其名而知其并发是指多线程程序在单核上运行,我们叫做并发。就你的CPU,假设只有一颗,或者说你的程序运行作用在一颗CPU,我们叫做。
12:00
并发。简单来讲就是说这个CPU它的这个切换的时间。单位是以0.0几。秒或者叫几毫秒来以切换的,对于我们人来说,我们人的反应根本就反应不过来,所以说对于我们来说好像是同时在跑。实际上他是在一个时间点上,其实他只是在执行一个一个任务。对不对,就好像同学们,你们你们可以去这样子,比如说你打开一个网页,你打开一个网页,假设你是单核的啊,网页你看了,你你打开打开了两个那个视频,你感觉你感觉两个视频呢,在同时播放,其实它在一个时间点上,它实际上是在执行在一个任务上面而已,我我说的是一个单核啊,如果你是你是多核,那是另外一回事,说单核我们把它叫并发。在这个概念叫并发啊,但是这个并发的概念,注意听跟我们外部的并发不是同一个含义,外部并发那不一定哦,外部并发是指的是比如说我这有个CPU啊,我我这个那个啪乘1万过来好,它这个时候呢,可能是同时的啊,我们说的是这个G这个构成学的地方,那么什么叫做病情呢?哎,这个有点意思了,它指的是。
13:14
这个是在单核,那么并行是在多核上,多核上运行我们就叫并行,那我画个图给大家描述一下,这个示意图的话呢,它应该是这样画的,注意听说现在我们有这么几个任务,注意听好现在呢,说韩老师的电脑上只有一个CPU,当然我也有可能有多个CPU。假设我假设我有这个一个CPUCPU1。这是我的一个,呃,这个CPU,这个CPU上面呢,我跑了有这么三四个任务啊,我任务呢,就简单这样写啊。好,这是一个任务。注意听,这是任务一,这是任务二。这是任务三好假设呢,我有这么三个任务,他是个一。
14:00
啊,就叫TASK01,这是我的第一个任务,各位朋友好,这个呢是我的第二个任务,各位朋友。好,这个呢是我的第三个任务,好,假设我这三个任务呢,是直接作用在这一颗CPU的。比如说我这我这画一个这张图啊各位朋友。好,我们画画一个这个这个这个线,画一个这个曲线吧,曲线好看,好我作用在这了,这是这是一个,然后呢,我还作用在这儿,好这有这一个。好,假设呢,我还住在这儿。就说我这一个任务,我是同时跑在这一颗CPU的,大家想一想,如果是这种情况,你们自己琢磨一下,显然在同一个时间点上来说,其实CP一个CPU,他不可能在一个微观时间上,他说诶我既执行零一又执行零二,这不不可能的,所以说这种这种呢,我们叫做并发。啊,并发的特点是。
15:00
注意听并发的特点,并发的特点第一个是啊,作用在多个多个任务,多个任务作用在作用在呃一个CPU。啊,第二点呢,是从微观的角度来看,从微观。微观的角度看,角度看什么呢?在一个时间点上,在一个时间点上,时间,时间点就那一瞬间。时间点上。点点上啊,点上只有啊,只有其实啊,也就是说其实其实其实只有一个任务,只有啊,只有一个任务在执行。只有一个任务在执行。在执行。在执行。啊,当然,嗯,从这个从这个宏观上看呢,从人的角度来看,你感觉是都在执行啊,从人的角度来看,感觉是在同时执行啊好,这个叫并发,那并行是什么意思呢?大家知道并行是这个意思,就是说它能够把这三个任务分配到三颗CPU上去做。
16:07
这就是为什么构语言他为什么要这么做呢?因为现在传统的编程语言啊,现在传统的编程语言你有多任务,它也是分配在一个CPU的,所以有时候这个多核它不能发挥威力,那么我们构语言呢,它是这样子的,它能够把这个所谓的我们把它叫做这个并发呢,转成并行。有他这地方可以做一个改进,所以我们购物语言呢,它支持这个并行。还有什么啊,这个购员的一个改进,重大的一个改进,它这样子的。好,他怎么做呢?好,我还是这么一个任务,但是情况发生了变化,他怎么做。我把这个啊选一下啊,各位同学把它粘贴拷贝到下一个地方。他会这样这样子改进。他要怎么改进呢?他说这样子啊,你这个效率太低了啊,你这效率太低了,呃,一个CPU,另外还有你假设有三个CPU,另外另外两个CPU在干什么,在睡觉啊,不划算,那怎么办呢?我这样做。
17:07
啊,我这样做。好,第一个CPU。第一个CPU就做这一件事情。我这儿再来两个CPU。这一个CPU2,好,我让这个CPU2呢,你别你别这样干了,好把你的CPU2拿过来,我我这里不改了,我直接让这个CPU。去做塔斯克,假设我还有一颗CPU。我有个CPU3啊,但是CPU一般不会是基数啊,一般呢,就是四八十六三十二这样子涨啊很少说是呃三个五个那种那种比较少啊,我我是个亿,说我让这个33CPU,三号CPU干什么呢?哎,三号CPU你也别去干了,你就专门给我干这件事,你做用在这个。它是个三生句型,好,同学们看这个呢,我们把它叫做并行,并行的特点一看就看出来了,并行的特点是这样子的啊,叫并行。
18:04
并行的特点是多个任务作用在多个。多个啊,多个这个CPU上啊,CPU啊,CPU上他说的多个CPU,从微观的角度呢,在同一个时间点有多个,其实有多个就是有啊,就是有多个任务,就是有多个任务在同时执行有多个。有多个任务。多个多个任务在同时执行。注意是同时啊,不是说哎,不是说他真的是在切,不是那样切的,它就是真的在同时执行好,这样子来看呢,我们说并行的效果,就它执行的速度肯定是要比这个并发要快的哦,这样看来呢,这样看来啊。这样看来,看来我们的并行的速度,并行的速度肯定要快。好,同学们,关于这个并发和并行,老师画了一个图,应该大家看的比较清楚了。来针对这个图,我再总结几句话,看这里并发因为是在一个CPU,比如有十个线程,每个线程执行十毫秒,进行轮训操作。
19:11
其实他是轮巡操作,但是十毫秒太快了啊,给我们人感觉好像都在自行。好,从人的角度来看,好像十个线程都在中心,都在运行,但是从微观上看,某一个时间点其实只有一个线程在执行,这叫并发,反过来啊,并行因为是在多个CPU上,比如有十个CPU,比如有十个这个线程,每个线程执行十毫秒啊,在各自不同的CPU,从人的角度来看,十个现在都在于从微观上也是十个,好,这就是他的一个并发和并行,搞清楚了啊,好,我把并发和并行给各位朋友板书到笔记里面来。好,并发和并行给他说清楚了,下面我们接着看。壁画和并行,我先做了一个文字的介绍,哎,然后呢,我画了一个示意图。并发和并行这个地方,我们把它叫做并发。
20:04
对,这是并发,并发和并行啊。好,第一个。第二个,然后呢,我们画了一个示意图。示意图,示意图就是刚才老师在这个Excel文件表里面画的,大家可以看的比较清楚,我缩小一下。好,缩小大家大家一下就可以把它全部粘贴下来。这是并发和并行。报到这里来。把它勾一下啊,这种是并发,这是并行。很形象。然后呢,我把它放到我们的笔里面去,对不对,好,然后呢,我们这再做一个小结啊,小结了一下,这有个小结,好把它拿过来。做了一个小结。小姐。给他来一个这样的标题。可以了。好,同学们,那关于这个就是GR的一个基本介绍的这一部分,我们先介绍到这里。
我来说两句