成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CPU竟然才是管理內存的大BOSS ?

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

?家好,我是小風哥

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

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

C++中的new:

int* a = new int(10);

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

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

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

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

圖片

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

答案是:沒有。這就是所謂的虛擬內存。

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

答案是操作系統。當我們在C/C++中分配內存時,內存分配器從堆區中找到可用內存,但如果沒有找到則向操作系統申請。那么操作系統又是從哪里找到的內存呢?

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

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

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

圖片

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

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

答案是:在內存中。

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

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

該怎樣告訴CPU呢?

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

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

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

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

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

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

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

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

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

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

責任編輯:武曉燕 來源: 碼農的荒島求生
相關推薦

2022-07-20 10:33:50

RustGo內存管理

2023-05-22 06:53:43

CPU顯卡電腦

2011-05-23 09:24:09

程序員BOSS

2020-12-28 09:50:50

Python內存管理語言

2020-08-03 09:57:52

網絡安全數據技術

2019-01-02 10:49:54

Tomcat內存HotSpot VM

2021-06-11 07:26:16

操作系統內存管理Cpu

2021-10-17 23:53:17

內存管理方式

2019-07-10 05:08:05

CPU內存分頁管理

2018-12-06 12:58:50

CPU內存模塊

2019-03-05 14:37:55

程序員加薪老板

2017-06-02 10:57:29

Android內存泄漏Dialog

2021-03-22 11:51:22

Java內存棧上

2019-12-10 14:51:00

CPU緩存內存

2017-11-02 15:44:11

內存降價價格

2009-09-16 13:38:33

運維管理

2009-08-14 17:49:07

最好的企業Wi-Fi

2011-03-25 11:28:35

Cacti數據

2023-10-31 17:26:09

2018-06-22 15:59:46

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线观看网站 | 国产亚洲精品区 | 久久九七 | 亚洲一区二区三区免费 | 日韩精品免费看 | 精品国产免费人成在线观看 | 天天干天天操天天射 | 在线一区二区三区 | 国产ts人妖另类 | 正在播放国产精品 | 欧美淫片 | 黄一区二区三区 | 亚洲一区精品在线 | 国产免费一区二区 | 色综合99| 黄色免费观看 | 曰韩三级 | 日本激情一区二区 | 亚洲精品一区二三区不卡 | 日韩精品在线观看一区二区三区 | 国产精品18久久久 | 久久亚洲精品国产精品紫薇 | 免费观看一级特黄欧美大片 | 欧美11一13sex性hd | 国产精品区二区三区日本 | 在线电影日韩 | 精品无码久久久久久久动漫 | 婷婷精品 | 中文字幕在线观看www | 中文字幕一级毛片视频 | 天堂久| 国产精品久久久久久久免费大片 | 精品伊人久久 | 一区二区视频 | 国产精品久久久久久久久久软件 | 国产一区二区三区色淫影院 | 国产日韩久久 | 欧美国产精品一区二区三区 | 麻豆精品国产免费 | 精品91av| 成人亚洲网站 |