摘要: 本文主要對內存管理基礎知識及分段與分頁介紹。
關鍵字:Armv8、體系結構、ARM架構、內存管理、分段、分頁
1. 內存管理基礎
最早的程序是放在卡紙上的,計算機每讀取一張卡片就運行一條指令,這種從外部存儲介質上直接運行指令的效率很低。后來出現了內存存儲器,也就是說程序要運行,首先要加載,然后執行,這就是是所謂的“存儲程序”。
單道編程的內存管理,整個系統只有一個用戶進程和一個操作系統。用戶程序獨占整個用戶空間,實現簡單,無外部碎片,存儲器利用率極低。
多道編程的內存管理,系統可以同時運行多個進程。內存管理出現了固定分區和動態分區兩種技術。
固定分區是在系統編譯階段,內存被劃分成許多靜態分區,進程可以裝入大于或等于自身大小的分區。
動態分區是在一整塊內存中劃出一塊內存共操作系統本身使用,剩下的內存在進程裝入時,根據進程的大小動態的建立分區,并使分區的大小正合適進程的需要。動態分區沒有內部碎片,但是有外部碎片。
內部碎片,分配給某進程的內存區域中,如果有部分沒有用上。
外部碎片,指內存中某些空閑分區由于太小而難以利用。
內存管理的功能:
內存控群的分配與回收,地址轉換(邏輯地址轉換成物理地址),內存空間擴充(利用虛擬存儲或交換覆蓋技術),內存保護(避免相互干擾和破壞)。
進程如何使用內存?進程大概在3個地方需要用到內存。
進程本身。比如,代碼段及數據段用來存儲程序本身需要的數據。
棧空間。程序運行時用來保存函數調用關系、局部變量、函數參數以及函數返回值等內容。
堆空間。程序運行時需要動態分配程序需要使用的內存,比如存儲程序需要使用的數據存儲空間。
2. 分段與分頁機制
基于進程地址空間這個概念,人們最早想到的一種機制叫分段機制,其基本思想是把程序所需的內存空間的虛擬地址映射到某個物理地址空間。
分段機制可以解決地址空間保護問題。分段機制對虛擬內存到物理內存映射以進程為單位。當物理內存不足時,換出到磁盤的依然是整個進程,因此會有大量的磁盤訪問,進而影響系統性能。
分頁機制是讓程序中一部分不使用的內存可以存放到交換磁盤中,而程序正在使用的內存繼續保留在物理內存中。
分頁機制系統中,處理器直接尋址虛擬地址,這個地址不會直接發給內存控制器,而是先發給內存管理單元(Memory Management Unit,MMU)。MMU負責虛擬地址到物理地址的轉換和翻譯工作。
一級頁表,虛擬地址VA[31:0]分為兩部分,VA[31:12]共20位,用于查詢頁表項;VA[11:0]共12位,是頁面偏移量。
處理器采用一級頁表,虛擬地址空間的位寬32位,尋址范圍0-4GB,物理地址空間也是32位,因此最多支持4GB物理內存。如果每個頁表項占用4個字節,需要220×4B=4MB空間。
二級頁表中,VA[31:20]被用作一級頁表項索引,共有12位,最多可以索引4096個頁表項;VA[19:12]被用作二級頁表項索引,共有8位,最多可以索引265個頁表項。
當一級頁表項中如果為null,表示對應的1024個虛擬頁沒有使用,所以就不需要二級頁表了,節省了空間。當然,如果虛擬地址頁完全映射的話,二級頁表的占用=一級頁表項(1024 * 4B) + 二級頁表項(1024 *1024* 4B) = 4M + 4K,比一級映射多了4K,不過這種情況基本上沒有可能,因為進程的地址空間很少有完全映射的情況。正是因為省卻了大量未映射的頁表項使得頁表的空間大幅減少。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
關于億道電子
億道電子技術有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國內資深的研發工具軟件提供商,公司成立于 2002 年,面向中國廣大的制造業客戶提供研發、設計、管理過程中使用的各種軟件開發工具,致力于幫助客戶提高研發管理效率、縮短產品設計周期,提升產品可靠性。
20 年來,先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰略合作伙伴關系,并作為他們在中國區的主要分銷合作伙伴服務了數千家中國本土客戶,為客戶提供從芯片級開發工具、EDA 設計工具、軟件編譯以及測試工具、結構設計工具、仿真工具、電氣設計工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經驗積累,真正的幫助客戶實現了讓研發更簡單、更可靠、更高效的目標。

歡迎關注“億道電子”公眾號
了解更多研發工具軟件知識

首頁 > 新聞資訊
