当前位置:首页 > 网站运营杂谈 > 正文

x64和x86到底有什么区别?一篇文章帮你彻底搞懂!

x64和x86到底有什么区别?一篇文章帮你彻底搞懂!

我以前在那个大厂里,眼睛里只有架构、微服务这些光鲜亮丽的东西,根本就瞧不上什么x64 x86这种老掉牙的问题。我觉着那是运维或者搞芯片的才管的事儿,跟我一个写业务逻辑的...

我以前在那个大厂里,眼睛里只有架构、微服务这些光鲜亮丽的东西,根本就瞧不上什么x64 x86这种老掉牙的问题。我觉着那是运维或者搞芯片的才管的事儿,跟我一个写业务逻辑的没关系。结果?那家公司把我给一脚踢开了。

就因为我多说了两句实话,说他们搞的那套新架构就是中看不中用的花架子,他们就立马给我穿小鞋,先是边缘化,直接找个莫须有的由头把我给裁了。我拿着那点儿可怜的赔偿金,心里那个窝囊和憋屈。但没办法,生活还得过。

我只好灰溜溜地跑到了一个做工业控制的小作坊,想着先混口饭吃,起码有张饭票。结果这一进去,我就一头扎进了x86的泥潭里,被狠狠地教育了一顿,不得不把以前瞧不上的东西从头到尾搞清楚。

我是怎么在实践中搞懂x64和x86的?

我接手的第一项活,就是把车间里那个老得快散架的工控机升级。上面跑着一个十多年前的老控制软件,是整个生产线的命根子。我当时那个自信,决定直接换一台新的64位机器,那速度不得起飞?

我兴冲冲地,尝试把那套老软件直接拷贝,安装,然后双击运行。结果,直接报废,软件崩了,生产线立马停了。我当时汗都下来了,差点被领导当场炒鱿鱼。那系统,在新机器上就是跑不起来,各种奇奇怪怪的报错。

x64和x86到底有什么区别?一篇文章帮你彻底搞懂!

我吓得赶紧把那台老机器又搬回了原位,让生产线先动起来。然后我就开始了我的地狱式研究和实践,我得搞清楚到底错在哪儿:

  • 动手拆机对比:我先是拆开了两台机器,对比了一下主板和芯片的型号,发现老家伙就是个纯粹的32位结构,内存上限是焊死的。它只能认到4GB,你多给一根内存条都没用,系统就是不理会。这是x86的命!而新的x64,那内存随便插,能认到的容量基本上用不完。
  • 研究底层软件:我翻箱倒柜,找到了那套老软件的配置文件和一些库。它在调用各种底层指令集的时候,就是死死地写死了32位的那一套规则。你把它扔到64位环境里,地址空间对不上,寄存器也对不上,它立马就傻了,根本不知道怎么读数据和写数据。
  • 核心的区别总结:我总结出来了,x86和x64,最根本的区别,就在于处理数据的“水管”的粗细。x86的水管是32位的,一次只能流过32位的数据。而x64的水管是64位的,能流过双倍的数据。水管粗了,能处理的地址空间自然就大了,能管到的内存也就多了。这直接影响了程序跑起来的方式和存储数据的位置。

后来我花了一整个礼拜,才搞明白怎么用各种兼容模式或者虚拟机,欺骗那个老软件,让它以为自己还在32位的环境里运行。搞定之后,我才真正明白,那些以前在大厂瞧不上的、觉得不重要的底层知识,才是吃饭的家伙。以前只会喊口号,不懂原理,只会像我一样,被社会和市场一脚踢飞,不得不从头补课。

x64和x86到底有什么区别?一篇文章帮你彻底搞懂!

最新文章