国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux中的32位與64位

Linux愛好者 ? 來源:Linux愛好者 ? 作者:Linux愛好者 ? 2020-12-11 16:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在通用PC領域,不論是windows還是linux界,我們都會經常聽到"32位"與"64位"的說法,類似的還有"x86"與"x86_64","i386"與"amd64",這兩組概念之間有著怎樣的聯系和區別呢?

實際上這兩組概念涉及了三個層次:硬件,系統和軟件。

1、硬件

早期的intel處理器,如i386,486,586,奔騰系列的CPU架構,都是32位的(32位的寄存器,32位的虛擬地址空間),統稱為x86架構。

隨著技術的發展,32位CPU已經無法滿足需求,intel與AMD采用不同的方法開發64位架構的CPU,intel使用與x86完全不同的IA64架構,由于與原來的X86完全不兼容,因此在PC領域沒有得到應用,只在服務器領域有一些使用。

而AMD開發的架構稱為amd64(將寄存器擴充為64位,支持64位虛擬地址),能夠完全兼容x86指令集,不用任何修改就能運行老的操作系統和應用軟件,在PC界得到廣泛的應用,現在市場上幾乎所有的PC用途的CPU都是支持amd64指令集的了。

當然intel也很快開發出支持該指令集的CPU,不過intel將其稱為x64架構,而不是用amd64這個名字。而在linux中則稱為x86_64,即x86架構的64位擴展。

有關x86_64的詳細描述可翻閱《深入理解計算機系統》一書。

在linux中查看CPU是否64位的方法:如果/proc/cpuinfo內的flags字段中含有"lm",則表示使用的是64位CPU(運行“grep 'lm' /proc/cpuinfo”命令,輸出不為空)。

2、系統

系統同樣可分為32位與64位。在x86_64架構的CPU出現之前,PC的操作系統都是用32位,例如windows 2000,xp,當時的unix,linux等。

在x86_64架構出現后,系統也就有了兩個版本:32位和64位,兩者的主要區別在于與硬件體系結構相關的操作中。

由于x86_64架構完全兼容x86架構,因此,32位的系統完全可以在x86_64位上運行,只不過它只使用了x86部分,沒有完全發揮硬件的功能而已。

而64位系統專門針對64位的擴展功能而開發的,就是為了最大限度地發揮硬件的能力,它無法在x86架構的cpu上運行。

另外,不論是windows還是linux,驅動程序都需要加載到內核空間中,因此它的類型(32位或64位)需要跟系統完全相同。

系統與CPU的關系如下圖所示:

68279c0a-348a-11eb-a64d-12bb97331649.jpg

查看linux系統是32位還是64位的方法:執行shell命令“arch”,顯示為x86_64表示當前系統為64位,顯示為i386,i486等表示系統是32位的。

3、軟件

在系統上運行的應用軟件同樣有32位和64位之分,老的應用軟件運行在32位CPU及32位系統中,屬于32位軟件。

出現了64位系統之后,也出現了專門運行在64位系統,能夠最大限度使用64位系統的擴展功能的原生64位程序。

對于C程序來說,64位程序相比32位程序最大的區別就是int,long以及指針數據類型的長度都是64位的,可以使用64位的虛擬地址空間。

實際遠不止這些,編繹器在將64位C程序翻譯成匯編語言或者機器語言時,會盡量使用64位處理器的寄存器,盡量避免訪問內存,例如把函數的參數,及局部變量優先放在寄存器,而不是在用戶棧中。

另外在64位系統中,為了兼容數量眾多的老的應用程序,系統都會增加一個虛擬層,用來翻譯x86指令,這樣32位程序也可以在64位系統中運行(windows和linux都支持)。

同樣在64位系統中,使用64位編繹器一般也可以選擇編譯成32位程序(gcc使用-m32編譯成32位可執行文件)。

另外在PC上,軟件能否運行,只需看系統是否支持即可,可以不用理會CPU的架構。軟件與系統的關系如下圖所示:

68490b10-348a-11eb-a64d-12bb97331649.jpg

linux中查看可執行文件是32位還是64位的方法:執行shell命令“file /usr/bin/xxx", 如果是32位程序,顯示為"ELF 32-bit ...";如果是64位,則顯示為:"ELF 64-bit..."。

4、linux發行版與內核

在linux發行版中,一般會針對不同的架構發布不同的安裝光盤,以debian為例,可用于PC的就有i386和amd64這兩個版本。

根據上面的描述,這兩個版本的系統都可以安裝在使用64位的CPU的機器上,而使用32位CPU的機器上則只能安裝i386版本的系統。

在debian amd64光盤中帶的內核及軟件包全都是64位版本的,而debian i386光盤中則有32位和64位的內核,以及32位的軟件,可能是考慮到有些用戶想用64位內核來運行32位程序吧。

內核源代碼是沒有32位,64位之分的,在編譯內核時可以用ARCH參數手工指定編譯成哪一個架構。例如:"make ARCH=i386 menuconfig","make ARCH=i386"用于配置,編譯32位內核;

而"make ARCH=x86_64 menuconfig","make ARCH=x86_64"則用于配置,編譯64位內核。

但是,在debian amd64光盤安裝的系統里編譯的32位內核是無法引導的,因為系統安裝的所有軟件包都是原生64位程序,無法在32位內核上運行,典型的錯誤是提示引導時找不到能運行的init程序;

而使用debian i386光盤安裝的系統中編譯的64位內核卻可以使用,只是需要在配置內核時加上IA32 Emulation支持(menuconfig的:"Executable file formats/Emulations"-->"IA32 Emulation")。

基于這樣的原因,我原來用搭建的debian amd64光盤安裝的系統(http://www.cnblogs.com/xiongyuanxiong/p/3523306.html),現在也改成用debian i386光盤來安裝了,這樣就能同時編譯新的32位和64位官方內核進行對比測試。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    20255

    瀏覽量

    252273
  • 寄存器
    +關注

    關注

    31

    文章

    5608

    瀏覽量

    129985
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219032

原文標題:Linux 中的32位與64位

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    LuatOS選型指南:基于Air780EPM的32/64性能實測分析

    面對3264LuatOS固件的選擇難題,本文通過在Air780EPM開發板上的實際測試,詳細解析兩者在整數處理能力、浮點數精度以及系統性能方面的差異,結合應用場景給出專業建議,助力開發者實現
    的頭像 發表于 02-25 18:05 ?95次閱讀
    LuatOS選型指南:基于Air780EPM的32/<b class='flag-5'>64</b><b class='flag-5'>位</b>性能實測分析

    32還是64?答案藏在你的項目里

    LuatOS系統具備強大的跨芯片平臺支持能力,并為開發者同時提供 3264雙版本固件 。 本文將基于LuatOS在Air780EPM開發板上的測試結果,詳細分析32
    的頭像 發表于 02-23 21:36 ?393次閱讀
    32<b class='flag-5'>位</b>還是<b class='flag-5'>64</b><b class='flag-5'>位</b>?答案藏在你的項目里

    音叉液開關的故障解決辦法!

    開關
    華泰天科
    發布于 :2026年01月26日 14:35:48

    電極液開關作用有哪些?

    開關
    jzyb
    發布于 :2025年12月16日 15:21:28

    值得關注的電極液開關作用!

    開關
    jzyb
    發布于 :2025年10月22日 17:24:00

    PIC64GX1000 RISC-V MPU:一款面向嵌入式計算的高性能64多核處理器

    Microchip Technology PIC64GX1000 64RISC-V四核微處理器 (MPU) 支持Linux^?^ 操作系統,基于RISC-V指令集架構,提供高效節能的
    的頭像 發表于 09-30 14:47 ?936次閱讀
    PIC<b class='flag-5'>64</b>GX1000 RISC-V MPU:一款面向嵌入式計算的高性能<b class='flag-5'>64</b><b class='flag-5'>位</b>多核處理器

    請問各位dayu200是不是不支持燒錄64的OpenHarmony

    我自己編譯了OpenHarmony5.0.2的鏡像,發現如果使用arm64參數編譯為64版本,燒錄后卡在開機動畫無法開機,如果編譯為32就可以正常。請問dayu200不支持
    發表于 08-16 17:39

    瑞薩電子推出64RZ/G3E MPU

    瑞薩電子于2025年7月推出64RZ/G3E MPU,為需要AI加速和邊緣計算的高性能HMI系統設計提供助力。
    的頭像 發表于 08-04 13:55 ?2032次閱讀
    瑞薩電子推出<b class='flag-5'>64</b><b class='flag-5'>位</b>RZ/G3E MPU

    如何下載 SDK 來構建 64 版本的庫?

    我正在嘗試獲取 64 版本的 CySuiteUSB dll 文件,但是當我轉到SuiteUSB 3.4 頁面時,沒有任何鏈接可以下載 SDK。如何下載 SDK 來構建 64 版本的
    發表于 07-23 08:25

    值得學習的電極液開關作用!

    開關
    jzyb
    發布于 :2025年07月18日 15:31:42

    基于瑞薩64MPU RZ/G2L進行32應用軟件開發

    本文主要介紹基于瑞薩64MPU RZ/G2L進行32應用軟件開發的介紹,用于解決客戶32軟件移植相關問題,供客戶參考。
    的頭像 發表于 06-26 15:48 ?1986次閱讀
    基于瑞薩<b class='flag-5'>64</b><b class='flag-5'>位</b>MPU RZ/G2L進行32<b class='flag-5'>位</b>應用軟件開發

    音叉液開關的作用!

    開關
    華泰天科
    發布于 :2025年04月29日 16:28:04

    音叉液開關的重要作用!

    開關
    jzyb
    發布于 :2025年04月23日 15:34:42

    浮球液開關的作用有哪些?

    開關
    華泰天科
    發布于 :2025年04月22日 15:49:24

    儀表包括哪些?

    儀表
    jzyb
    發布于 :2025年03月18日 20:06:55