91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)故事輕松看懂CPU內(nèi)存管理技術(shù)

Linux愛好者 ? 來源:編程技術(shù)宇宙 ? 作者:編程技術(shù)宇宙 ? 2020-12-07 15:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

還記得我嗎,我是阿Q,CPU一號車間的那個(gè)阿Q。

今天忙里偷閑,來到廠里地址翻譯部門轉(zhuǎn)轉(zhuǎn),負(fù)責(zé)這項(xiàng)工作的小黑正忙得滿頭大汗。

看到我的到來,小黑指著旁邊的座椅示意讓我坐下。

坐了好一會兒,小黑才從工位上忙完轉(zhuǎn)過身來,“實(shí)在不好意思阿Q,今天活太多,沒來得及招待你”

“剛忙什么呢,看你滿頭大汗的”,我問道。

“嗨,別提了,老是發(fā)現(xiàn)內(nèi)存頁面錯(cuò)誤,不停地要通知操作系統(tǒng)那邊去處理,真是懷念以前啊,沒有這么多破事兒要管”,小黑嘆了口氣。

我一聽來了興趣,“小黑你給我說說你們的工作唄,地址翻譯是怎么一回事兒,為什么懷念以前呢?”

小黑調(diào)整了下坐姿,咕嚕咕嚕喝了幾口水說道,“這話說來可就話長了”

接下來小黑開始給我講起了歷史故事······

8086

原來咱們的祖先叫8086,小黑還給我看了他的照片

那是一個(gè)純真質(zhì)樸的年代,雖然工作性能不高,不過那個(gè)年代的程序都很簡單,我們的祖先一問世就成為了明星,稱得上那個(gè)時(shí)代的頂流了。

看到照片中的那些金屬針腳了嗎?那是我們CPU和外界打交道的觸角,每一根都有不同的作用。

通過這些觸角,CPU就可以跟內(nèi)存打交道,獲取指令和數(shù)據(jù),辛勤的干活啦。

那個(gè)年代,條件比較差,能湊合的就湊合,能共用的就共用。這不,你看祖先CPU的地址總線針腳和數(shù)據(jù)總線針腳就共用了。

祖先是一個(gè)16位的CPU,數(shù)據(jù)(Data)總線就有16位,一次性可以傳輸16個(gè)比特位。和地址(Address)總線湊合著一起共用,于是就取名AD0-AD15。

不過祖先的地址總線卻不止16個(gè),還多出了A16-A19整整4個(gè)呢!這樣有20個(gè)地址線,可以尋址1MB的內(nèi)存了!

但是祖先的寄存器都是16位的啊,只能存放16位的地址。不過他們很聰明,發(fā)明了一個(gè)叫分段式存儲管理的方法,把內(nèi)存劃分為最大64KB的小塊,為什么是64KB呢,因?yàn)?6位地址最多只能尋址這么大了。然后又加了幾個(gè)叫做段寄存器的東西,指向這些塊的開頭,這樣,通過段地址+段內(nèi)偏移地址的方式,就能訪問更多的內(nèi)存了。

32位時(shí)代

后來啊,祖先的那點(diǎn)計(jì)算能力越來越捉襟見肘,實(shí)在是跟不上時(shí)代了。家族中的年輕一代開始挑大梁,80286和80386CPU相繼問世,尤其是80386,成為了劃時(shí)代的存在。

到了80386時(shí)代,我們與外界通信的引腳就更多了,并且變成了32位的CPU,那個(gè)時(shí)候,生活條件就變好了,地址線和數(shù)據(jù)線再也不用共享引腳了。

后來,人類變得越來越貪心,想要一邊聽音樂,一邊還要上網(wǎng),同時(shí)還要編輯文檔,這就同時(shí)需要運(yùn)行多個(gè)程序。

這個(gè)時(shí)候,有人發(fā)現(xiàn)了商機(jī),開發(fā)了一個(gè)叫操作系統(tǒng)的東西,原來那些程序不再直接和我們CPU打交道了,而是和操作系統(tǒng)打交道,操作系統(tǒng)再和我們打交道,中間商賺差價(jià)說的就是他們!

操作系統(tǒng)這玩意兒很聰明啊,通過時(shí)間片劃分讓我們CPU來輪流執(zhí)行多個(gè)程序,一會兒讓我們執(zhí)行音樂播放,一會兒讓我們執(zhí)行瀏覽器程序,一會兒又讓我們執(zhí)行文檔編輯程序。我們是無所謂啊,給什么代碼不是代碼啊,我們不挑,埋頭苦干就是了。人類的反應(yīng)速度跟我們就差得遠(yuǎn)了,他們還以為這些程序真的是同時(shí)執(zhí)行的呢。

虛擬內(nèi)存

不過隨之而來出現(xiàn)了一個(gè)大問題,這么多程序都要運(yùn)行,大家擠在一個(gè)內(nèi)存里,經(jīng)常發(fā)生摩擦,沖突不斷。

先祖?zhèn)優(yōu)榱舜耸職椌邞],終于想出了一個(gè)好辦法,一直沿用至今。

他們提出了一個(gè)虛擬地址的東西,所有程序使用的地址都是一個(gè)虛擬的地址,在真正和內(nèi)存打交道的時(shí)候,咱們CPU內(nèi)部工作人員再給翻譯成真實(shí)的內(nèi)存地址,關(guān)于這事兒,內(nèi)存那家伙一直被我們蒙在鼓里。

這樣一來,每個(gè)程序都可以用的是0x00000000到0xffffffff總共4GB這么大范圍的地址空間,當(dāng)然不會真的給他們那么多空間,內(nèi)存那家伙總共才4GB呢,而是要按需申請分配。分配的單元是按照頁來進(jìn)行的,32位的CPU一個(gè)頁是4KB。這些分配管理的累活就讓操作系統(tǒng)來干了,中間商不能光拿好處不干正事,至于我們CPU,做好地址翻譯的工作就好了。

為此,在我們寄存器內(nèi)部專門添置了一個(gè)新的寄存器CR3,用來指向一個(gè)地址翻譯查詢字典,字典劃分了兩級目錄。我們把一個(gè)32位的地址劃分了3部分,前面兩部分分別指向兩級目錄中的條目,用來定位這個(gè)地址在物理內(nèi)存的哪個(gè)頁面,最后一部分就是指向物理內(nèi)存頁面的偏移,這樣就完成了地址的翻譯工作。

每個(gè)進(jìn)程有不同的地址空間,切換進(jìn)程的時(shí)候,把CR3的內(nèi)容換一下就使用新進(jìn)程的翻譯字典,特別的方便。

我們把這種內(nèi)存管理方式叫做分頁式內(nèi)存管理。

真佩服先祖?zhèn)兊闹腔?,這樣巧妙的把各個(gè)程序隔離開來,后來我們把這種工作模式叫做保護(hù)模式,把之前那種直接使用真實(shí)內(nèi)存地址的工作模式叫做實(shí)地址模式。

分頁交換

人類變得越來越貪婪,程序變得越來越多,對內(nèi)存的需求也越來越大。隨著這些程序都不斷申請內(nèi)存頁面,內(nèi)存空間很快就要耗盡了。

我們看在眼里,急在心里,后來找操作系統(tǒng)協(xié)商,看看這問題該怎么辦。

操作系統(tǒng)那家伙也不賴,想出了一個(gè)好辦法。內(nèi)存的大小有限,但是硬盤給力啊,硬盤空間大的多,去硬盤上劃一塊區(qū)域來,把內(nèi)存里長時(shí)間沒有用到的頁面給換到這塊區(qū)域里去,然后做個(gè)標(biāo)記。如果后面誰要訪問那個(gè)頁面,咱們CPU就檢查如果有這個(gè)標(biāo)記,就發(fā)送一個(gè)頁錯(cuò)誤的中斷信號告訴操作系統(tǒng)去把這個(gè)頁面換回來。

通過我們之間的配合,解決了內(nèi)存緊張的危機(jī)。后來我們把這個(gè)技術(shù)叫做內(nèi)存分頁交換。

現(xiàn)在

時(shí)間過得很快,到了我們這一輩,內(nèi)存變得更大了,16GB都是小case,32GB也很常見。

除了內(nèi)存,我們CPU本身也更先進(jìn)了,別的不說,你光看看咱們現(xiàn)在的引腳數(shù)那比先祖?zhèn)兡菐纵吘筒豢赏斩Z。

我們不僅從32位變成了64位,還從單核變成了多核,像我所在的CPU就有8個(gè)車間,8核并行執(zhí)行,比起先祖那個(gè)年代簡直有云泥之別。

彩蛋

和小黑閑談間,我們車間的老K突然出現(xiàn)在了門口。
“阿Q原來你在這里,讓我好找,趕快回去吧,隔壁二號車間的虎子說我們改了他們的數(shù)據(jù),上門來鬧事了······”

原文標(biāo)題:一個(gè)故事看懂 CPU 內(nèi)存管理技術(shù)

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5609

    瀏覽量

    130019
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11281

    瀏覽量

    225117
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3212

    瀏覽量

    76387

原文標(biāo)題:一個(gè)故事看懂 CPU 內(nèi)存管理技術(shù)

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    探秘DS2731:緩存內(nèi)存電池備份管理IC的卓越性能與應(yīng)用

    探秘DS2731:緩存內(nèi)存電池備份管理IC的卓越性能與應(yīng)用 在電子設(shè)備的設(shè)計(jì)中,電源管理個(gè)至關(guān)重要的環(huán)節(jié),尤其是對于需要可靠備份電源的應(yīng)
    的頭像 發(fā)表于 02-24 16:40 ?324次閱讀

    張圖看懂遠(yuǎn)動(dòng)通信裝置的工作流程

    ,就像場精準(zhǔn)的“信息接力賽”。西格電力提供遠(yuǎn)動(dòng)通信裝置,咨詢服務(wù):1.3.7-5.0.0.4-6.2.0.0,下面我們步步拆解,配合邏輯梳理,輕松看懂它的運(yùn)作邏輯。
    的頭像 發(fā)表于 01-23 11:57 ?509次閱讀
    <b class='flag-5'>一</b>張圖<b class='flag-5'>看懂</b>遠(yuǎn)動(dòng)通信裝置的工作流程

    rk基于linux/android內(nèi)存管理

    內(nèi)存分布 ? U-Boot 由前級 Loader 加載到 CONFIG_SYS_TEXT_BASE 地址,初始化時(shí)會探明當(dāng)前系統(tǒng)的總內(nèi)存容 量, 32 位平臺上認(rèn)為最大 4GB 可用(但是不影響
    的頭像 發(fā)表于 12-15 10:42 ?217次閱讀
    rk基于linux/android<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>

    不同位數(shù)的CPU的變量所占的內(nèi)存

    )上述表格適用于KEIL C51 和 KEIL MDK兩個(gè)版本中,不定適用于其它編輯器,具體內(nèi)容,請查看KEIL軟件手冊。 2)CPU的位數(shù)不能決定int占幾個(gè)字節(jié),int是
    發(fā)表于 12-09 07:30

    分享個(gè)嵌入式開發(fā)學(xué)習(xí)路線

    如果你想要學(xué)習(xí)嵌入式開發(fā),我建議按照這個(gè)學(xué)習(xí)路線準(zhǔn)備: 1. 基礎(chǔ)鋪墊期(1-2個(gè)月) 理解嵌入式系統(tǒng)的“硬件基礎(chǔ)”和“編程入門”,能看懂簡單電路,寫出基礎(chǔ)C語言代碼。這階段的學(xué)習(xí)對學(xué)歷沒有
    發(fā)表于 12-04 11:01

    WebGL/Canvas 內(nèi)存泄露分析

    在構(gòu)建高性能、長周期運(yùn)行的 WebGL/Canvas 應(yīng)用(如 3D 編輯器、數(shù)據(jù)可視化平臺)時(shí),內(nèi)存管理個(gè)至關(guān)重要且極具挑戰(zhàn)性的課題。 開發(fā)者通常面臨的
    的頭像 發(fā)表于 10-21 11:40 ?420次閱讀
    WebGL/Canvas <b class='flag-5'>內(nèi)存</b>泄露分析

    看懂晶豐明源BP2525x系列的區(qū)別

    看懂BP2525x之間的區(qū)別
    的頭像 發(fā)表于 09-13 15:22 ?2871次閱讀
    <b class='flag-5'>一</b>圖<b class='flag-5'>看懂</b>晶豐明源BP2525x系列的區(qū)別

    科普:什么AI 內(nèi)存技術(shù)

    AI 內(nèi)存種專為人工智能 (AI) 應(yīng)用設(shè)計(jì)的新型內(nèi)存技術(shù)。與傳統(tǒng)的通用內(nèi)存(如 DDR5 或 LPDDR5)不同,AI
    的頭像 發(fā)表于 09-03 15:44 ?1411次閱讀

    連載|業(yè)余無線電史話():個(gè)漫長的故事

    180米波段用莫爾斯電碼(CW)發(fā)射信號。資料來源:火花博物館。個(gè)漫長的故事)如同任何科學(xué)故事
    的頭像 發(fā)表于 06-29 07:07 ?1151次閱讀
    連載|業(yè)余無線電史話(<b class='flag-5'>一</b>):<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>漫長的<b class='flag-5'>故事</b>

    黑芝麻智能芯多域零拷貝共享內(nèi)存技術(shù):破解車載大數(shù)據(jù)傳輸效能困局

    通過 零拷貝共享內(nèi)存技術(shù) ,黑芝麻智能解決車載多域間大數(shù)據(jù)傳輸?shù)难舆t與資源消耗問題。核心技術(shù)包括 全局內(nèi)存管理單元 和 dmabuf機(jī)制優(yōu)化
    發(fā)表于 06-23 17:53 ?1726次閱讀
    黑芝麻智能<b class='flag-5'>一</b>芯多域零拷貝共享<b class='flag-5'>內(nèi)存</b><b class='flag-5'>技術(shù)</b>:破解車載大數(shù)據(jù)傳輸效能困局

    主板和CPU個(gè)東西嗎?有什么區(qū)別?

    在數(shù)字化浪潮席卷的時(shí)代,電腦早已成為現(xiàn)代生活的核心樞紐。而在計(jì)算機(jī)硬件體系中,主板與CPU堪稱兩大支柱,共同構(gòu)筑了整臺機(jī)器的運(yùn)算中樞。雖然主板和CPU在功能定位上不同,但它們的協(xié)同運(yùn)作,卻如同精密齒輪的咬合,直接決定了電腦性能的上限。
    的頭像 發(fā)表于 06-11 09:19 ?3317次閱讀

    博鼎彈簧發(fā)布數(shù)字目錄實(shí)現(xiàn)穩(wěn)定高效且易于操作的技術(shù)數(shù)據(jù)管理

    CADENAS****技術(shù)顛覆產(chǎn)品數(shù)據(jù)提供方式:種全新的、行業(yè)領(lǐng)先的數(shù)字目錄 Mollificio Bordignon公司是家以生產(chǎn)各種高質(zhì)量彈簧而聞名的公司,為了進(jìn)步提高產(chǎn)品
    發(fā)表于 05-23 10:52

    HarmonyOS優(yōu)化應(yīng)用內(nèi)存占用問題性能優(yōu)化

    應(yīng)用開發(fā)過程中注重內(nèi)存管理,積極采取措施來減少內(nèi)存占用,以優(yōu)化應(yīng)用程序的性能和用戶體驗(yàn)。 HarmonyOS提供了內(nèi)存
    發(fā)表于 05-21 11:27

    RISC-V五級流水線CPU設(shè)計(jì)

    本文實(shí)現(xiàn)的CPU個(gè)五級流水線的精簡版CPU(也叫PCPU,即pipeline),包括IF(取指令)、ID(解碼)、EX(執(zhí)行)、MEM(內(nèi)存
    的頭像 發(fā)表于 04-15 09:46 ?1773次閱讀
    RISC-V五級流水線<b class='flag-5'>CPU</b>設(shè)計(jì)

    文詳解AXI DMA技術(shù)

    ,SG)功能還可以將數(shù)據(jù)移動(dòng)任務(wù)從位于于處理器系統(tǒng)中的中央處理器(CPU)中卸載出來??梢酝ㄟ^個(gè)AXI4-Lite從接口訪問初始化、狀態(tài)和管理寄存器。如圖4. 8展現(xiàn)了DMA IP的
    的頭像 發(fā)表于 04-03 09:32 ?2529次閱讀
    <b class='flag-5'>一</b>文詳解AXI DMA<b class='flag-5'>技術(shù)</b>