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

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

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

3天內不再提示

誰才是管理內存的大BOSS

jf_78858299 ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2023-02-17 14:26 ? 次閱讀

對于C/C++程序員來說,內存分配再正常不過,C語言中的malloc:

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

C++中的new:

int* a = new int(10);

接下來的問題是變量a占用的內存是誰給我們分配的呢?

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

接下來的問題是a占用的內存在哪里呢?

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

圖片

內存中真的有像圖中這樣的布局嗎?

答案是: 沒有

這就是所謂的虛擬內存。

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

答案是操作系統

當我們在C/C++中分配內存時,內存分配器從堆區(qū)中找到可用內存,但如果沒有找到則向操作系統申請。

那么操作系統又是從哪里找到的內存呢?

答案是:操作系統從物理內存中找到一塊可用內存分配出去。

問題來了,既然操作系統管理的是物理內存,而操作系統分配給進程的又是虛擬內存,精神分裂啊有沒有,這是怎么一回事呢?

原來這并不沖突,操作系統會為每個進程分配一張表,記錄了從虛擬內存到物理內存的映射,這張表就叫頁表。

圖片

因此,盡管操作系統管理的是物理內存,但進程或者說程序員是看不到物理內存的,我們只能看到虛擬內存,程序運行時在發(fā)送內存讀寫指令時MMU會將虛擬內存轉換為物理內存。

接下來的問題是頁表在哪里?

答案是: 在內存中

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

誰來負責構造頁表呢?答案是操作系統,操作系統負責創(chuàng)建頁表,頁表本質上就是一個數組,處理器規(guī)定頁表的格式,操作系統按照這種格式構建好頁表,創(chuàng)建好后即可告訴CPU。

該怎樣告訴CPU呢?

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

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

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

pagetable必須是物理地址,頁表本身就用來將虛擬地址轉為物理地址,因此向cr3中寫入虛擬地址是沒有道理的。

接下來的問題是什么時候將頁表寫入cr3寄存器呢?

答案是:很多時候,操作系統初始化階段、進程切換時等。

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

CPU才是管理內存真正的大boss。

實際上如果你去看類似x86這樣的處理器編程手冊時就會發(fā)現,我們在操作系統課中熟悉的很多概念其實是處理器這種硬件提供的,操作系統僅僅是利用這些硬件的一層軟件。

因此,從這個角度看,操作系統僅僅是CPU的一個“驅動程序”而已。

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

    關注

    68

    文章

    10882

    瀏覽量

    212236
  • 內存
    +關注

    關注

    8

    文章

    3037

    瀏覽量

    74150
  • 分配器
    +關注

    關注

    0

    文章

    194

    瀏覽量

    25778
收藏 人收藏

    評論

    相關推薦

    Linux的內存管理是什么,Linux的內存管理詳解

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

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

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

    工業(yè)以太網與現場總線才是主流?

    現場總線、以太網、無線技術各有優(yōu)劣,那么才會是未來的主流呢?顯然對所有生產商或機器并非只有一種技術才是“正確的”方案?生產商必須權衡各類方案帶來的價值。有沒有比采用普通方案帶來的利益更有
    發(fā)表于 09-29 09:49

    華為、蘋果、三星、高通才是SOC的無冕之王?

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

    內存管理概述及原理

    記錄一下,方便以后翻閱~主要內容:1) 內存管理概述及原理;2)相關實驗代碼解讀。官方資料:《STM32中文參考手冊_V10》-第19章 靈活的靜態(tài)存儲器控制器(FSMC)。實驗要求:系統啟動后
    發(fā)表于 02-23 06:15

    如何分辨才是真正的工程師?

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

    揭秘手機為什么卡?才是決定手機卡頓的關鍵

    處理器、內存、GPU才是決定手機卡頓的關鍵安卓手機使用一段時間后會出現卡頓,相信不少用戶都遇到過。
    發(fā)表于 04-01 10:43 ?1.4w次閱讀

    iPhone7、iPhone8、iPhone7plus才是最值得買

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

    充電樁還是換電站才是市場的未來

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

    到底才是頂級旗艦?

    到底才是頂級旗艦?自從驍龍888手機上市之后,這個問題就很難有答案。因為不少人強調,驍龍888真的翻車了,驍龍865依然能打。那真是這樣嗎?其實看看跑分就有答案,安兔兔公布了今年1月的旗艦手機跑分,從跑分情況來看,驍龍888穩(wěn)坐第一還是沒懸念的,只不過最大的問題,也許是
    的頭像 發(fā)表于 02-04 17:08 ?1687次閱讀

    什么是內存管理?如何進行內存管理?及內存管理的方案與分析

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

    STM32內存管理

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

    智慧家庭系列文章 | 控制權大作戰(zhàn):才是智能家居系統的控制中心?

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

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

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

    Linux 內存管理總結

    一、Linux內存管理概述 Linux內存管理是指對系統內存的分配、釋放、映射、管理、交換、壓縮
    的頭像 發(fā)表于 11-10 14:58 ?549次閱讀
    Linux <b class='flag-5'>內存</b><b class='flag-5'>管理</b>總結
    主站蜘蛛池模板: 国产精品久久久亚洲第一牛牛| 国产福利久久| 国产成人久视频免费| www.看片| 午夜小视频男女在线观看| 午夜手机视频| 立即播放免费毛片一级| 3344免费播放观看视频| 在线观看中文字幕一区| 国产美女精品久久久久中文 | wwwxx在线观看| 亚色在线| 国产亚洲情侣久久精品| 俺也啪| 成人网中文字幕色| 亚洲国产高清精品线久久| 涩五月婷婷| 黄色视屏日本| 一级一片一a一片| 黄a免费| 日本一区二区三区视频在线| 中文在线最新版天堂bt| 日韩在线视频一区| 国产综合色精品一区二区三区| 在线免费看黄的网站| 久久精品乱子伦免费| 在线观看视频一区二区三区| 一本二卡三卡四卡乱码二百| 日本黄色短片| 爱婷婷视频在线观看| 久久精品免费观看久久| 亚洲精品第三页| 婷婷的五月| 精品xxxxxbbbb欧美中文| 夜间视频在线观看| 3344a毛片在线看| 曰曰摸天天摸人人看久久久| 欧美十次| 婷婷毛片| 亚洲天堂一区二区三区| 四虎a级欧美在线观看|