并发,并行?物理支持?

     今天在实践中遇到了一个多线程的问题,尽管这个问题已经被自己想了不知道多少遍,查了多少次资料。  但是每次碰到依然是傻傻分不清楚的状态。     今天又疯狂的转了下牛角尖。。  因为之前在看java源码篇,关于java的thread类有过一些查看,但是很多的源码核心都是c或者c++ 实现的。 所以也就没查到。   

      我经常听的较多的是  多线程并发,并发编程,多线程编程等等。。。

       并发与并行,从文字上来分析,还真不好分析,特容易混。。

       网上很多大牛举得例子很形象,也很好懂 。。 我也想自己举一个:

           并发:  当我们打绝地求生跑毒的时候,经常会一边跑,一边  alt 切换视角。   从视角方面,我们每一个特定的时间都盯着某一个视角,不可能说又看着前面又看着侧面。。  就算摆两个电脑屏幕也是这样,因为眼球的注意力不好分散。。。当然经过特殊训练应该也可以实现。。

           并行:  任然是跑毒的时候,我们跑步的这个动作,与我们看视野的这个动作就是同时执行。。 我们不是停下来看一下视野,然后又跑,又看。。。   当然如果从动画帧的角度理解,情况可能会有些不一样。。 

            所以,至少我长期理解的多线程是并行的意思。。 而非并发。。

       了解一个知识,了解它的历史显得很有必要:

           硬件历史:   

               cpu方面,1942第一台计算机问世,应该是没有cpu一说吧。。  因为当时的使用的电子管,一个计算机相当于一个楼房。

                                1947年12月16日,美国新泽西州墨累山的贝尔实验室里,世界上首颗晶体管问世。。

                                 1971年,世界上第一块微处理器4004在Intel公司诞生。 具有2300个晶体管,应该是八位的(同时期发生的技术变革:c语言同时期发明,早一年的1969年 fortran语言,为高级程序语言奠基;同年,unix操作系统诞生;1971,第一个电子邮件诞生,在更早的图灵时代,人工智能便已经开始萌芽,并提出图灵测试40年代,中间还出现的语言有: Lisp,语言编译器已经迭代了两个版本好像)。

                              1978年,Intel公司首次生产出16位的微处理器命名为i8086。  现在很多的单片机课上就是这个。。

                              1985年Intel推出了80386芯片,以i3处理器而出名,32位,具有跨时代的意义。(再过几年,貌似1989年,html就该诞生了。。咳咳。。)。

                               2002年,2004年,2006年左右把,奔腾系列提出的超线程技术,算是多线程并行的雏形了。。刚刚看资料貌似是2004的奔腾4吧?  懒得去翻了。。大差不差吧。。2006出现双核处理器。

                              2011, 2012,2013年左右,酷睿系列64位处理器问世。。    位数的每一次变化是质的,此外,针对不同的缓存的支持性能提升是显著的。。

               技术方面:

                      1976,首次出现多线程并发,并发,并发!   单处理器上的并发。

                      2004年左右,出现超线程技术,有点并行的意思了。

                      2006年左右,多处理器的出现。

                      酷睿系列大都支持超线程技术,搭配多核心处理器。   出现迭代原因据说是在2013年左右,摩尔定律失效,处理器性能达到瓶颈。。

     这些都是在网上搜的资料,加上自己乱七八糟的理解拼凑在一起。

     然而这些都太过理论化了!!  并不是我想要的结果。  尽管我绞尽脑汁的措辞,仍然百度不到我想要的信息。

     我大体的疑问是:

           1.多线程并行(不是并发哈!!),物理上如何给予支持。   高级程序语言,或者说汇编程序如何与硬件打交道,硬件如何支持?   怎么体现?    如果有大牛比较懂底层,将汇编程序拿来分析一通是最有说服力的,但是非常可惜的是并么有找到答案。。  可能是太过于底层了,或者说对非硬件人员来说太隐蔽了!

           2.我们通常所说的多线程编程,指的是并发编程还是并行编程?   如果是并发编程(因为我常常听到高并发编程),那么如何处理那些对事件要求特别严格的程序?因为他间隔不论有多小,始终是存在的。

           3.多线程并发操作系统是否给予支持,如何体现?

 我想,计算机的迷人之处也在于此吧,勾起人性欲,哦不兴趣。   待我学成之时,自己来处理这些问题,哼!!

猜你喜欢

转载自blog.csdn.net/qq_36285943/article/details/81209597
今日推荐