32/64位处理器、操作系统、应用程序和库之间有什么关系?
先說(shuō)結(jié)論:
32位程序和64位程序本質(zhì)上的區(qū)別,是兩者在CPU上運(yùn)行的指令不同。
文章目錄
- 32位CPU處理器與64位CPU處理器的不同?
- 什么是64位系統(tǒng)?什么是32位系統(tǒng)?
- 32位系統(tǒng)與64位系統(tǒng)的不同?
- 什么是64位應(yīng)用程序?什么是32位應(yīng)用程序?
- 32位應(yīng)用程序與64位應(yīng)用程序的不同?
- 什么是64位庫(kù)?什么是32位庫(kù)?
- 32位庫(kù)與64位庫(kù)的不同?
- 64位系統(tǒng)能運(yùn)行32位庫(kù)嗎?32位系統(tǒng)能運(yùn)行64位庫(kù)嗎?
- 64位庫(kù)兼容32位系統(tǒng),32位庫(kù)兼容64位系統(tǒng)。
由于是和CPU處理器相關(guān),因此我們從CPU開(kāi)始說(shuō)起。
什么是64位?什么是32位? #### 什么是64位CPU處理器?什么是32位CPU處理器?
32位處理器是指cpu處理器一次能處理32個(gè)0和1 64位處理器是指cpu處理器一次能處理64個(gè)0和1 通俗一點(diǎn)說(shuō):
32位,就相當(dāng)于你擁有32個(gè)工人,每次能完成32個(gè)工人的工作量 64位,就相當(dāng)于你擁有64個(gè)工人,每次能完成64個(gè)工人的工作量 總結(jié):
由32位系統(tǒng)過(guò)渡到64位系統(tǒng),CPU處理數(shù)據(jù)能力提升了一倍。
之所以叫做“64位處理器”,是因?yàn)殡娔X內(nèi)部都是實(shí)行2進(jìn)制運(yùn)算,處理器(CPU)一次處理數(shù)據(jù)的能力也是2的倍數(shù)。8位處理器、16位處理器、32位處理器和64位處理器,其計(jì)數(shù)都是2的倍數(shù)。一次處理的數(shù)據(jù)越大,該電腦處理信息的能力越來(lái)越大;因此64位處理在先天就比32位處理器具有快速的能力。那為什么不用更高級(jí)的128位處理器呢?因?yàn)槲粩?shù)越高,處理器芯片的設(shè)計(jì)也就越復(fù)雜,目前的技術(shù)水平暫時(shí)無(wú)法制造這么復(fù)雜的芯片。
思考: 32位處理器能裝64位系統(tǒng)嗎(裝上64位系統(tǒng)是否一定可以運(yùn)行64位軟件)?
現(xiàn)在對(duì)于主流的處理器,64位的CPU是能夠兼容32位指令架構(gòu)的。雖然理論上可以(只要重寫(xiě)32位處理器對(duì)應(yīng)的編譯器,使之支持64位系統(tǒng)),但是軟件基本上是不會(huì)向下兼容,因此現(xiàn)實(shí)是不會(huì)實(shí)現(xiàn)。
32位CPU處理器與64位CPU處理器的不同?
這兩者的指令集合、操作數(shù)位數(shù)、寄存器名稱(chēng)和個(gè)數(shù)等等都不相同。
1.從指令集合上:
比如一條mov eax,1指令,可能在32bCPU上對(duì)應(yīng)的機(jī)器指令是0x1201;在64位機(jī)器上就是0x123401。
2.從處理速度上:
64位CPU的數(shù)據(jù)寬度為64位,64位指令集可以運(yùn)行64位數(shù)據(jù)指令,也就是說(shuō)處理器一次可提取64位數(shù)據(jù)(只要兩個(gè)指令,一次提取8個(gè)字節(jié)的數(shù)據(jù)),比32位(需要四個(gè)指令,一次提取4個(gè)字節(jié)的數(shù)據(jù))提高了一倍,理論上性能會(huì)相應(yīng)提升1倍。
3.從寄存器數(shù)量上:
64位CPU里的寄存器數(shù)量也多于32位CPU。32位系統(tǒng)里寄存器個(gè)數(shù)為8個(gè),函數(shù)的形參都是存儲(chǔ)在棧里面(內(nèi)存),且函數(shù)內(nèi)的局部變量如果太多的話也會(huì)存入棧中。而64位系統(tǒng)含有16個(gè)寄存器,比32位系統(tǒng)多了8個(gè),它的函數(shù)形參是放在寄存器中,形參個(gè)數(shù)超過(guò)6個(gè)則放在棧中,而寄存器的訪問(wèn)速度比內(nèi)存要快,所以從函數(shù)形參的存儲(chǔ)可以的知64位要比32位要快。
4.從操作位數(shù)上:
32位CPU的地址總線不一定是32位的,還有可能是48位的,同樣64位的CPU地址總線也不一定是64位,往往都是48位。
5.從尋址能力上:
內(nèi)存中一個(gè)地址占用8bit,即一個(gè)字節(jié),32位cpu含有32根地址線,尋址能力為2的32次方個(gè)字節(jié),相當(dāng)于4G內(nèi)存(所以,如果我們裝32位系統(tǒng),安裝8G內(nèi)存實(shí)際上是沒(méi)有用的)。而64位cpu理論上尋址能力為2的64次方個(gè)字節(jié),但目前硬件還達(dá)不到這個(gè)水準(zhǔn),當(dāng)然也用不了這么大的內(nèi)存。
64位CPU有更大的尋址能力。
什么是64位系統(tǒng)?什么是32位系統(tǒng)?
32位系統(tǒng)與64位系統(tǒng)的不同?
32位的操作系統(tǒng)是專(zhuān)門(mén)為32位CPU設(shè)計(jì)的,同樣64位的操作系統(tǒng)是為64位的CPU設(shè)計(jì)的。
前面也說(shuō)了,64位的CPU能夠兼容32位指令架構(gòu),因此在64位CPU上也可以安裝32位操作系統(tǒng)。
32位系統(tǒng)理論上最大只能使用4G的物理內(nèi)存(受地址總線影響,對(duì)應(yīng)2^32 )64位的win系統(tǒng),理論上尋址范圍能夠達(dá)到2^64,因此64位的系統(tǒng)擁有更高的性能,能夠使用更大的內(nèi)存,能夠更快的處理數(shù)據(jù)。
什么是64位應(yīng)用程序?什么是32位應(yīng)用程序?
32位應(yīng)用程序與64位應(yīng)用程序的不同?
32位的程序就是將源碼用32位的編譯器編譯的,64位的程序就是將源碼用64位的編譯器編譯的。
應(yīng)用程序只接觸邏輯地址,并不接觸真實(shí)的物理地址。
32位的程序理論上可以申請(qǐng)利用4GB的地址空間,64位的程序則可以申請(qǐng)利用大于4GB 的地址空間,這也是64位程序的一個(gè)巨大優(yōu)勢(shì)。
什么是64位庫(kù)?什么是32位庫(kù)?
32位庫(kù)與64位庫(kù)的不同?
我們知道應(yīng)用程序的運(yùn)行是需要操作系統(tǒng)作為支撐的,這些程序在運(yùn)行時(shí)常常需要進(jìn)行一些系統(tǒng)調(diào)用,還有各種庫(kù)函數(shù)等。
這些可執(zhí)行文件能否順利運(yùn)行有著兩個(gè)最重要的地方。 1)動(dòng)態(tài)鏈接庫(kù)。 2)系統(tǒng)API。
64位的系統(tǒng)往往具有32位系統(tǒng)的庫(kù),因此在64位系統(tǒng)上能夠運(yùn)行32位的程序,但是反過(guò)來(lái)就不行了,因?yàn)?2位系統(tǒng)一般沒(méi)有64位系統(tǒng)的庫(kù)。
64位系統(tǒng)能運(yùn)行32位庫(kù)嗎?32位系統(tǒng)能運(yùn)行64位庫(kù)嗎?
64位庫(kù)兼容32位系統(tǒng),32位庫(kù)兼容64位系統(tǒng)。
首先,操作系統(tǒng)內(nèi)核肯定是分體系結(jié)構(gòu)的,如x86_64、ppc64、aarch64等,不同的體系結(jié)構(gòu)肯定是要編譯出針對(duì)性的內(nèi)核來(lái)運(yùn)行(兼容的除外)。上層軟件分為體系結(jié)構(gòu)相關(guān)和體系結(jié)構(gòu)不相關(guān),如果是體系結(jié)構(gòu)相關(guān)的也要分不同的體系結(jié)構(gòu)分開(kāi)編譯,如果是體系結(jié)構(gòu)不相關(guān)的則可以一次編譯處處運(yùn)行。
不同的程序運(yùn)行平臺(tái)上對(duì)不同數(shù)據(jù)類(lèi)型分配的字節(jié)數(shù)是不同的。 個(gè)人對(duì)平臺(tái)的理解是CPU+OS+Compiler。
64位系統(tǒng)兼容32位庫(kù)(向下兼容),32位的系統(tǒng)理論上可以兼容64位庫(kù)(前提是對(duì)老的編譯器進(jìn)行優(yōu)化,一般軟硬件的設(shè)計(jì)思想都是向后兼容,即新產(chǎn)品兼容老產(chǎn)品,但是基本沒(méi)有讓老產(chǎn)品兼容以后的新產(chǎn)品這樣的做法)
CPU(32/64位處理器)屬于硬件上的概念,它具體一次性處理多少位的數(shù)據(jù)是由編譯器決定的。
總結(jié): 32位處理器不能裝64位系統(tǒng),64位處理器可以運(yùn)行32位系統(tǒng)。
64位系統(tǒng)可以兼容32位軟件,32位系統(tǒng)基本不能使用64位軟件。(體系結(jié)構(gòu)不相關(guān)除外)
總結(jié)
以上是生活随笔為你收集整理的32/64位处理器、操作系统、应用程序和库之间有什么关系?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于stm32的温湿度检测案例串口通信屏
- 下一篇: 自定制emoji替换系统的emoji键盘