亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是虛擬內存與進程地址空間

發布時間:2021-10-12 15:40:24 來源:億速云 閱讀:118 作者:iii 欄目:編程語言

本篇內容主要講解“什么是虛擬內存與進程地址空間”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“什么是虛擬內存與進程地址空間”吧!

虛擬內存

虛擬內存,是操作系統物理內存和進程之間的中間層,它為進程隱藏了物理內存這一概念,為進程提供了更加簡潔和易用的接口以及更加復雜的功能。

什么是虛擬內存與進程地址空間

虛擬內存使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數據交換。

使用虛擬內存的好處

虛擬內存技術使得每個進程都可以獨占整個內存空間,地址從零開始,直到內存上限。

程序可以使用一系列相鄰的虛擬地址來訪問物理內存中不相鄰的大內存緩沖區。

程序可以使用一系列虛擬地址來訪問大于可用物理內存的內存緩沖區。

不同進程使用的虛擬地址彼此隔離。

進程地址空間的劃分

現代操作系統對每個進程都分配了完整的虛擬內存地址空間,所謂的進程地址空間,也就是用戶空間,用戶態。

進程地址空間,分為幾個區域,分別是代碼段(code/text)、數據段(data/gvar)、BSS段、堆區和棧區。

每個進程都將這部分空間(從低地址到高地址)分為六個部分:

  1. TEXT段:整個程序的代碼,以及所有的常量;這部分內存是是固定大小的,只讀的

  2. DATA段,又稱GVAR:初始化為非零值的全局變量

  3. BSS段:初始化為0或未初始化的全局變量和靜態變量

  4. HEAP(堆空間):動態內存區域,使用malloc或new申請的內存

  5. 未使用的內存

  6. STACK(棧空間):局部變量、參數、返回值都存在這里,函數調用開始會參數入棧、局部變量入棧;調用結束依次出棧

其中堆空間和棧空間的大小是可變的,堆空間從下往上生長,棧空間從上往下生長。

由于常量存儲在TEXT段中,所有對常量的賦值都將產生segment fault異常。

可以認為BSS段中的所有字節都是0。因為未初始化的全局變量、靜態變量都在BSS段中, 所以它們都會被初始化為0,同時類的成員變量也會被初始化為0,但編譯器不保證局部變量的初始化。

上面說棧(STACK)是從上到下(高地址到低地址)分配的,而且我們知道, 函數的局部變量的空間是在進入函數體后才分配的,在棧空間里。

CPU尋址

現代的操作系統都引入了虛擬內存,虛擬內存的尋址需要硬件與操作系統之間互相合作。

CPU中含有一個被稱為內存管理單元(Memory Management Unit, MMU)的硬件,它的功能是將虛擬地址轉換為物理地址。

MMU需要借助存放在內存中的頁表來動態翻譯虛擬地址,該頁表由操作系統管理。

什么是虛擬內存與進程地址空間

頁面置換算法

操作系統以頁為單位管理內存,當進程發現需要訪問的數據不在內存時,操作系統可能會將數據以頁的方式加載到內存中。

當發現要訪問的頁面不在內存中時就會產生缺頁中斷,如果內存中沒有空閑的內存,操作系統就需要選擇一個頁面移出內存,為新的頁面騰出空間。

頁面置換算法的作用就是實現虛擬存儲管理。

常見的頁面置換算法

OPT頁面置換算法(最佳頁面置換算法)

FIFO頁面置換算法(先進先出頁面置換算法)

LRU頁面置換算法(最近未使用頁面置換算法)

LFU頁面置換算法(最少使用頁面排序算法)

內核空間和用戶空間

下圖以64位系統為例,虛擬內存空間的劃分如下:

從0x0000000000000000到 0x00007FFFFFFFFFFF為用戶空間。

從0xFFFF800000000000 到0xFFFFFFFFFFFFFFFF為內核空間。

什么是虛擬內存與進程地址空間

到此,相信大家對“什么是虛擬內存與進程地址空間”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南阳市| 法库县| 乌兰察布市| 江津市| 襄垣县| 西藏| 罗甸县| 澄城县| 高陵县| 尉犁县| 息烽县| 威信县| 肇源县| 定日县| 靖江市| 和硕县| 英吉沙县| 滦南县| 巴楚县| 津市市| 泾川县| 佛冈县| 图片| 甘洛县| 普定县| 崇义县| 玛纳斯县| 项城市| 萨嘎县| 富源县| 剑阁县| 临湘市| 扎鲁特旗| 乌鲁木齐县| 盘山县| 右玉县| 化州市| 县级市| 博罗县| 阿克苏市| 缙云县|