在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

誰(shuí)才是管理內(nèi)存的大BOSS

jf_78858299 ? 來(lái)源:碼農(nóng)的荒島求生 ? 作者:碼農(nóng)的荒島求生 ? 2023-02-17 14:26 ? 次閱讀

對(duì)于C/C++程序員來(lái)說,內(nèi)存分配再正常不過,C語(yǔ)言中的malloc:

int* a = (int*)malloc(sizeof(int));

C++中的new:

int* a = new int(10);

接下來(lái)的問題是變量a占用的內(nèi)存是誰(shuí)給我們分配的呢?

答案是運(yùn)行在用戶態(tài)的內(nèi)存分配器,如果你愿意,也可以繞過內(nèi)存分配器自己來(lái)管理內(nèi)存。

接下來(lái)的問題是a占用的內(nèi)存在哪里呢?

答案是進(jìn)程地址空間中的堆區(qū),堆區(qū)在這里:

圖片

內(nèi)存中真的有像圖中這樣的布局嗎?

答案是: 沒有

這就是所謂的虛擬內(nèi)存。

既然是虛擬內(nèi)存那么這里的堆區(qū)又是從哪里來(lái)的呢?

答案是操作系統(tǒng)

當(dāng)我們?cè)贑/C++中分配內(nèi)存時(shí),內(nèi)存分配器從堆區(qū)中找到可用內(nèi)存,但如果沒有找到則向操作系統(tǒng)申請(qǐng)。

那么操作系統(tǒng)又是從哪里找到的內(nèi)存呢?

答案是:操作系統(tǒng)從物理內(nèi)存中找到一塊可用內(nèi)存分配出去。

問題來(lái)了,既然操作系統(tǒng)管理的是物理內(nèi)存,而操作系統(tǒng)分配給進(jìn)程的又是虛擬內(nèi)存,精神分裂啊有沒有,這是怎么一回事呢?

原來(lái)這并不沖突,操作系統(tǒng)會(huì)為每個(gè)進(jìn)程分配一張表,記錄了從虛擬內(nèi)存到物理內(nèi)存的映射,這張表就叫頁(yè)表。

圖片

因此,盡管操作系統(tǒng)管理的是物理內(nèi)存,但進(jìn)程或者說程序員是看不到物理內(nèi)存的,我們只能看到虛擬內(nèi)存,程序運(yùn)行時(shí)在發(fā)送內(nèi)存讀寫指令時(shí)MMU會(huì)將虛擬內(nèi)存轉(zhuǎn)換為物理內(nèi)存。

接下來(lái)的問題是頁(yè)表在哪里?

答案是: 在內(nèi)存中

你可以將頁(yè)表放在內(nèi)存中的任何位置上,只要能告訴CPU在哪里即可。

誰(shuí)來(lái)負(fù)責(zé)構(gòu)造頁(yè)表呢?答案是操作系統(tǒng),操作系統(tǒng)負(fù)責(zé)創(chuàng)建頁(yè)表,頁(yè)表本質(zhì)上就是一個(gè)數(shù)組,處理器規(guī)定頁(yè)表的格式,操作系統(tǒng)按照這種格式構(gòu)建好頁(yè)表,創(chuàng)建好后即可告訴CPU。

該怎樣告訴CPU呢?

答案是:通過寫特定的寄存器

CPU中有特定的寄存器,以x86處理器為例,其中的控制寄存器cr3就用來(lái)保存頁(yè)表的地址,假設(shè)指針pagetable指向頁(yè)表,那么可以這樣設(shè)置:

mov   $(pagetable), %eaxmov   %eax, %cr3

pagetable必須是物理地址,頁(yè)表本身就用來(lái)將虛擬地址轉(zhuǎn)為物理地址,因此向cr3中寫入虛擬地址是沒有道理的。

接下來(lái)的問題是什么時(shí)候?qū)㈨?yè)表寫入cr3寄存器呢?

答案是:很多時(shí)候,操作系統(tǒng)初始化階段、進(jìn)程切換時(shí)等。

現(xiàn)在你應(yīng)該知道了吧,其實(shí)內(nèi)存管理(段式管理、頁(yè)式管理)是處理器提供的一種機(jī)制,操作系統(tǒng)只是這種機(jī)制的使用者,我們常說的虛擬內(nèi)存是處理器本身的一種能力, 如果處理器本身不提供這種能力,那么操作系統(tǒng)自己是很難高效實(shí)現(xiàn)虛擬內(nèi)存的

CPU才是管理內(nèi)存真正的大boss。

實(shí)際上如果你去看類似x86這樣的處理器編程手冊(cè)時(shí)就會(huì)發(fā)現(xiàn),我們?cè)诓僮飨到y(tǒng)課中熟悉的很多概念其實(shí)是處理器這種硬件提供的,操作系統(tǒng)僅僅是利用這些硬件的一層軟件。

因此,從這個(gè)角度看,操作系統(tǒng)僅僅是CPU的一個(gè)“驅(qū)動(dòng)程序”而已。

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

    關(guān)注

    68

    文章

    11001

    瀏覽量

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

    關(guān)注

    8

    文章

    3099

    瀏覽量

    74850
  • 分配器
    +關(guān)注

    關(guān)注

    0

    文章

    202

    瀏覽量

    26060
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux的內(nèi)存管理是什么,Linux的內(nèi)存管理詳解

    Linux的內(nèi)存管理 Linux的內(nèi)存管理是一個(gè)非常復(fù)雜的過程,主要分成兩個(gè)大的部分:內(nèi)核的內(nèi)存管理
    的頭像 發(fā)表于 05-11 17:54 ?6341次閱讀
    Linux的<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>是什么,Linux的<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>詳解

    電子發(fā)燒友到底誰(shuí)是大俠?誰(shuí)才是真正的高手?

    本帖最后由 會(huì)飛的鴨子 于 2014-4-2 16:59 編輯 選出誰(shuí)才是真正的高手,誰(shuí)才是大牛!吳鑒鷹單片機(jī)項(xiàng)目詳細(xì)解析系列(連載)之基于單片機(jī)的實(shí)戰(zhàn)項(xiàng)目社區(qū)之星-單片機(jī)達(dá)人-
    發(fā)表于 04-01 13:29

    工業(yè)以太網(wǎng)與現(xiàn)場(chǎng)總線誰(shuí)才是主流?

    現(xiàn)場(chǎng)總線、以太網(wǎng)、無(wú)線技術(shù)各有優(yōu)劣,那么誰(shuí)才會(huì)是未來(lái)的主流呢?顯然對(duì)所有生產(chǎn)商或機(jī)器并非只有一種技術(shù)才是“正確的”方案?生產(chǎn)商必須權(quán)衡各類方案帶來(lái)的價(jià)值。有沒有比采用普通方案帶來(lái)的利益更有
    發(fā)表于 09-29 09:49

    華為、蘋果、三星、高通誰(shuí)才是SOC的無(wú)冕之王?

    四大旗艦處理器相繼曝光,華為、蘋果、三星、高通誰(shuí)才是SOC的無(wú)冕之王?
    發(fā)表于 06-03 14:41

    如何分辨誰(shuí)才是真正的工程師?

    有時(shí)候你會(huì)想弄清楚某位工程師的基本技術(shù)能力與背景,到底誰(shuí)才是擁有“真才實(shí)料”的真正工程師,誰(shuí)又只會(huì)在那里自我吹噓。
    發(fā)表于 02-07 10:27 ?1554次閱讀

    揭秘手機(jī)為什么卡?誰(shuí)才是決定手機(jī)卡頓的關(guān)鍵

    處理器、內(nèi)存、GPU誰(shuí)才是決定手機(jī)卡頓的關(guān)鍵安卓手機(jī)使用一段時(shí)間后會(huì)出現(xiàn)卡頓,相信不少用戶都遇到過。
    發(fā)表于 04-01 10:43 ?1.5w次閱讀

    iPhone7、iPhone8、iPhone7plus誰(shuí)才是最值得買

    蘋果手機(jī)價(jià)格相差很大,特別是新款,更是被炒得火熱,iPhone7、iPhone8、iPhone7plus誰(shuí)才是最值得買?那款才是最值得買的iPhone?蘋果手機(jī)憑借著出色的系統(tǒng)體驗(yàn),以及強(qiáng)大的品牌
    發(fā)表于 03-13 14:45 ?8.6w次閱讀

    安卓驍龍855與蘋果A12的對(duì)決,誰(shuí)才是最強(qiáng)旗艦?

    到目前為止,三大高配處理器都已紛紛亮世,蘋果A12,華為麒麟980,驍龍855。各位都看好誰(shuí)呢?下面我們就來(lái)分析對(duì)比一下三大高配處理器到底誰(shuí)才是旗艦之王。
    發(fā)表于 01-01 16:05 ?3.7w次閱讀
    安卓驍龍855與蘋果A12的對(duì)決,<b class='flag-5'>誰(shuí)</b><b class='flag-5'>才是</b>最強(qiáng)旗艦?

    充電樁還是換電站誰(shuí)才是市場(chǎng)的未來(lái)

    最近一段時(shí)間,隨著特斯拉的輪番降價(jià),新能源汽車的普及顯得越來(lái)越容易,面對(duì)著新能源汽車的發(fā)展,一個(gè)重要的問題擺在大家的問題,從充電樁到換電站,誰(shuí)才是新能源汽車的真正未來(lái)?
    的頭像 發(fā)表于 11-16 16:33 ?4464次閱讀

    到底誰(shuí)才是頂級(jí)旗艦?

    到底誰(shuí)才是頂級(jí)旗艦?自從驍龍888手機(jī)上市之后,這個(gè)問題就很難有答案。因?yàn)椴簧偃藦?qiáng)調(diào),驍龍888真的翻車了,驍龍865依然能打。那真是這樣嗎?其實(shí)看看跑分就有答案,安兔兔公布了今年1月的旗艦手機(jī)跑分,從跑分情況來(lái)看,驍龍888穩(wěn)坐第一還是沒懸念的,只不過最大的問題,也許是
    的頭像 發(fā)表于 02-04 17:08 ?1772次閱讀

    什么是內(nèi)存管理?如何進(jìn)行內(nèi)存管理?及內(nèi)存管理的方案與分析

    前面已經(jīng)將所有的硬件驅(qū)動(dòng)實(shí)現(xiàn),驗(yàn)證了硬件功能。但是每一個(gè)硬件都是單獨(dú)測(cè)試的,而且并不完善。下一步,我們需要對(duì)各個(gè)驅(qū)動(dòng)進(jìn)行整合完善。在整合之前,需要做一些基礎(chǔ)工作。其中之一就是實(shí)現(xiàn)內(nèi)存管理。什么叫內(nèi)存
    的頭像 發(fā)表于 03-26 13:38 ?7345次閱讀
    什么是<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>?如何進(jìn)行<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>?及<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>的方案與分析

    STM32內(nèi)存管理

    內(nèi)存管理詳解1、介紹內(nèi)存管理,是指軟件運(yùn)行時(shí)對(duì)計(jì)算機(jī)內(nèi)存資源的分配和使用的技術(shù)。其最主要的目的是如何高效,快速的分配,并且在適當(dāng)?shù)臅r(shí)候釋放和
    發(fā)表于 12-24 19:37 ?14次下載
    STM32<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>

    智慧家庭系列文章 | 控制權(quán)大作戰(zhàn):誰(shuí)才是智能家居系統(tǒng)的控制中心?

    智慧家庭系列文章 | 控制權(quán)大作戰(zhàn):誰(shuí)才是智能家居系統(tǒng)的控制中心?
    發(fā)表于 10-31 08:23 ?0次下載
    智慧家庭系列文章 | 控制權(quán)大作戰(zhàn):<b class='flag-5'>誰(shuí)</b><b class='flag-5'>才是</b>智能家居系統(tǒng)的控制中心?

    誰(shuí)才是最有發(fā)展前途的封裝材料呢?

    目前,常用電子封裝陶瓷基片材料包括氧化鋁(Al2O3)、氮化鋁(AlN)、氮化硅(Si3N4)、氧化鈹(BeO)、碳化硅(SiC)等。那么,誰(shuí)才是最有發(fā)展前途的封裝材料呢?
    的頭像 發(fā)表于 04-13 10:44 ?1424次閱讀

    Linux 內(nèi)存管理總結(jié)

    一、Linux內(nèi)存管理概述 Linux內(nèi)存管理是指對(duì)系統(tǒng)內(nèi)存的分配、釋放、映射、管理、交換、壓縮
    的頭像 發(fā)表于 11-10 14:58 ?678次閱讀
    Linux <b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>總結(jié)
    主站蜘蛛池模板: 好男人社区www在线观看 | 欧美爽爽爽爽爽爽视频 | 美女张开腿让男生桶出水 | 免费大秀视频在线播放 | 福利视频一区二区牛牛 | 欧美一级欧美三级在线 | 国产午夜精品福利 | 亚洲毛片免费在线观看 | 亚洲国产福利精品一区二区 | 五月丁五月丁开行停停乱 | 日本特级黄录像片 | 亚洲先锋资源 | 亚洲综合激情丁香六月 | 天天操狠狠操夜夜操 | 最好看最新的中文字幕1 | 免费国产一区二区三区 | 三级在线观看视频网站 | 国产黄网站在线观看 | 色秀视频免费网站在线观看 | 欧美69xx性欧美 | 国内精品久久久久影院免费 | 国产清纯白嫩大学生正在播放 | 亚洲综合一二三区 | 日本三级香港三级三级人!妇久 | 日韩特级毛片免费观看视频 | 99国产成人精品2021 | 免费在线观看视频网站 | 天天夜天干天天爽 | 成人综合激情 | 国产成在线人视频免费视频 | 成人国产激情福利久久精品 | 天天操网站 | 欧洲综合网 | 免费大片黄国产在线观看 | 精品免费视在线观看 | 日日操天天射 | 天天色踪合合 | 欧美成人在线网站 | yezhulu在线永久网址yellow | 51影院在线观看成人免费 | 天堂网www在线观看 天堂网www在线资源中文 |