电脑该怎么实现并发?处理器、内存两者怎么好好共存?这几点就可避免

发表于 讨论求助 2019-09-17 06:13:51

联想oemwin7


每当程序员在编写代码的时候,一般都会是从各种方面来考量,进而把一套软件的并发性都给做齐整了,也为的是能够保证在多种使用者的状态下,多线程的条件之下,其程序都还能够有条不乱的进行。

而一个软件开发的程序员,每一天可能都会面临百万级或者是千万级的数据,面对这样庞大的数据处理,并发当然是不可少的,因此它们都会在多方考量之下处理完成。那么今天我们就来了解一下,一个程序员所要面临的世界,它们都会怎么去考虑?透过相关资料我们可以知道,他们所考量的不仅仅只有我们所想的,还有很多像是使用到同步方法、同步代码块、并发锁等等一些方式,来去保证程序的并发中途,不会有任何错误产生。

首先我们必须了解到一点,庞大的数据都是需要高并发性的,不过我们很少去从硬件的角度考量并发问题,甚至还会因为不知道我们的电脑在怎么进行并发的,因此我们今天就来了解单单是电脑的问题,服务器还有各种硬件,都是怎么样的实现并发呢?一探究竟吧!相信有学过Java语言的人都知道,Java拥有JVM,也就是所谓的Java的虚拟机,JVM拥有很好的并发能力,因此所谓的物理计算机之并发与JVM有许多相似之处,因此其实只要理解了物理计算机之并发之后,对于JVM的学习了解,都有很大的帮助的!

然而计算机又该怎么进行并发呢?又为何要并发?其实这是由于我们人类的“欲望”,人类都会想要好在更好的进步,因此为了能够有更高效率的使用计算机,便会研发出更多方式。在高速处理器以及低速存储两者之间的矛盾。

大家也都清楚知道,计算机的处理器,取决了计算机的处理速度,现今的处理器之计算速度可以说是相当吓人的,不过处理器是不可能自己单独行动的,至少还得在进行运算的时候,有进行内存交互,以利读取数据,或者是写入数据,内存这一种存储的设备速度,是没有办法与处理器相互比拟的,这也就造就了处理器计算能力的浪费了。

而又该怎么去调和处理器的矛盾问题呢?其实这就得仰赖于专业人士的处理了,因此聪明的人类也就研发出一种方式,在处理器以及内存两者中间,添加一层高速的缓存,而这一层缓存身为处理器和内存间的缓冲区,就会把需要处理的数据,添加进入到高速缓存当中,在处理结束之后,会在重新添加进入到内存当中,这样一来,处理器就不用再无尽的等待与内存间的相互交互作用了,就此来看可以看到这一波操作其实是非常完美的,但其实却不尽然!

往往每一种新的研发出来的方法,看似“很好、很完美”,但其实也都是会伴随着一连串的问题,好比说高速缓存这一项方法其实也有隐藏着并发的问题,它虽然看似很像完美的解决了高速的处理器,以及低速缓存两者间的矛盾,但其实这个问题也被直接给复杂了,在多个处理器的系统当中,每一个处理器都会拥有自己的高速缓存,数据也都会被复制到高速缓存当中,进行相关的处理,在处理之后就会放回主内存,因为主内存是属于共享的,因此如果有不同的处理器在高速缓存当中的数据有所不同了,那就会有缓存不一的问题产生了!

那么又该怎么解决高速缓存之下造成的缓存不一的问题呢?这一种现象其实就好比小孩子吵架一样,吵到最后都是需要家长出面把矛盾给解决掉。因此对计算机来说,“家长”也就是缓存的协议,在读写操作的时候,按照协议来操作,就可以避开并发的问题,也就解决了所有会遇到的问题了!

其实计算机锁遇到的问题,一定都会被专业人员给完美的解决,这其中的问题也都还是会煲藏着一些相关的问题,那么也就必要有一些“更进阶”的方法,来解决方式所产生的问题,好比说处理器、高速缓存、缓存协议、主内存这几个阶段面临的问题。而计算机要能有高效并发的操作,其实也有别种方式,除了像是高效缓存机制之外,其实还是有很多种方式,是能够有效提升效率的,好比说像是JAVA的指令重新排序,处理器其实也都会依照值性效率,把代码重新的编排后,在进行有效率的执行,当然除此之外还有很多种办法的!毕竟也是一个超科技的时代了。


发表
26906人 签到看排名