1. 程式人生 > >Linux 虛擬記憶體和實體記憶體的管理

Linux 虛擬記憶體和實體記憶體的管理

MMU進行虛擬地址到物理轉換的時候,並不是一個個地址轉換的,而是一段段地址轉換。
轉換的單位:
section  段   1MB    ----> u-boot
large page  大頁   64KB
small page  小頁    4kB   ----> linux內,page=4KB
tiny page   極小頁  1KB
MMU做地址對映的方法
1)查表的方式,而不是公式計算
2)查表的時候,使用的是page table
3)page table裡面存放的是虛擬地址和訪問屬性
4)查詢page table的索引是虛擬地址
5)page table在DDR2 記憶體,linux核心初始化的時候需要建立page table。
6)page table也可以動態的改寫,改寫的時候使用ioremap()--->動態改寫頁表的過程
7)page table可以預先做好。
8)page table的內容:entry(條目)-->實體地址和訪問屬性,條目的大小4B

linux核心也page(4KB)為單位
1)需要兩級頁表
2)一級頁表存放的是二級頁表的索引值;二級頁表中存放的是虛擬地址和訪問屬性。
3)以page(4KB)為單位進行對映的時候,VA[31:20]在一級頁表中索引二級頁表;VA[19:12]在二級頁表中索引PA和訪問屬性。
   
    

相關推薦

Linux 虛擬記憶體實體記憶體管理

MMU進行虛擬地址到物理轉換的時候,並不是一個個地址轉換的,而是一段段地址轉換。 轉換的單位: section  段   1MB    ----> u-boot large page  大頁   64KB small page  小頁    4kB   ----> linux內,page=4KB

Linux 虛擬記憶體實體記憶體的理解 (轉載)

轉載於:https://www.cnblogs.com/panchanggui/p/9288389.html 關於Linux 虛擬記憶體和實體記憶體的理解。 首先,讓我們看下虛擬記憶體: 第一層理解 每個程序都有自己獨立的4G記憶體空間,各個程序的記憶體空間具有類似的結構

深入淺出記憶體管理-虛擬地址實體地址轉換

談起記憶體管理,首先我們就要搞清楚虛擬地址和實體地址的關係。本文就是簡單介紹下這兩個基礎概念。 實體地址 實體地址指實際存在的實體記憶體地址,比我有一個2G的記憶體晶片,那麼系統的實體記憶體就是2G,我要訪問該記憶體中的一個地址,那就需要對應的實體記憶體。 虛擬地址 虛擬

自己學驅動13——記憶體管理單元MMU(虛擬地址實體地址)

1.MMU簡介     MMU負責完成虛擬地址到實體地址的對映,並提供硬體機制的記憶體訪問許可權檢查。現代的多使用者多程序作業系統通過MMU使得各個使用者程序都擁有自己獨立的地址空間:地址對映功能使得各個程序擁有"看起來"一樣的地址空間,而記憶體訪問許可權的檢查可以保護每個

Linux記憶體地址空間管理

本文以Linux 2.6版本核心為例,介紹了核心線性地址空間的佈局,並描述了80386架構處理器下的3種記憶體地址的概念及在分段、分頁機制下的相互轉換。 通過記憶體地址訪問,我們可以得到存在記憶體單元裡的內容,這很容易理解。但在不同的環境下,會涉及到幾種不同的記憶體地址的概

虛擬記憶體實體記憶體

第一層理解         1.每個程序都有自己獨立的4G(32位系統下)記憶體空間,各個程序的記憶體空間具有類似的結構           2.一個新程序建

程式設計思想(管理記憶體回收記憶體

-- Java的JVM的記憶體可分為3個區:堆(heap)、棧(stack)和方法區(method)也叫靜態儲存區。  堆區:(存放所有new出來的物件;) 1.儲存的全部是物件,每個物件都包含一個與之對應的class的資訊。(class的目的是得到操作指令)  2.jvm只有一

虛擬記憶體虛擬記憶體地址,實體記憶體實體記憶體地址

計算機會對虛擬記憶體地址空間(32位為4G)分頁產生頁(page),對實體記憶體地址空間(假設256M)分頁產生頁幀(page frame),這個頁和頁幀的大小是一樣大的,所以呢,在這裡,虛擬記憶體頁的個數勢必要大於實體記憶體頁幀的個數。在計算機上有一個頁表(page table),就是對映虛擬記憶體頁到實體

LINUX 邏輯地址、線性地址、虛擬地址實體地址

1、概念解釋 實體地址:   用於記憶體晶片級的單元定址,與地址匯流排相對應。這個概念應該是這幾個概念中最好理解的一個,但是值得一提的是,雖然可以直接把實體地址理解成插在機器上那根記憶體本身,把記憶體看成一個從0位元組一直到最大空量逐位元組的編號的大陣列,然

嵌入式 Linux驅動虛擬地址實體地址的對映

7)高階記憶體概念的由來:如上所述,Linux將4GB的線性地址空間劃分成兩部分,從0x00000000到0xBFFFFFFF共3GB空間作為使用者空間由使用者程序獨佔,這部分線性地址空間並沒有固定對映到實體記憶體空間上;從0xC0000000到0xFFFFFFFF的第4GB線性地址空間作為核心空間,在嵌入式

虛擬記憶體實體記憶體的區別

第一層理解 1.每個程序都有自己獨立的4G記憶體空間,各個程序的記憶體空間具有類似的結構 2.一個新程序建立的時候,將會建立起自己的記憶體空間,此程序的資料,程式碼等從磁碟拷貝到自己的程序空間,哪些資料在哪裡,都由程序控制表中的task_struct記錄,task_

虛擬記憶體實體記憶體的區別,

第一層理解 1.每個程序都有自己獨立的4G(32位系統下)記憶體空間,各個程序的記憶體空間具有類似的結構 2.一個新程序建立的時候,將會建立起自己的記憶體空間,此程序的資料,程式碼等從磁碟拷貝到自己的程序空間,哪些資料在哪裡,都由程序控制表中的task_struc

c#中利用WMI物件獲取實體記憶體可用記憶體大小資訊

通常我們在獲取記憶體資訊時會呼叫Win32 API的GlobalMemoryStatus和GlobalMemoryStatusEx函式,但是,當您的電腦上裝有2根或2根以上的記憶體條時,這兩個API只能獲取1根記憶體條的使用資訊,並不能正確獲取記憶體資訊。 經過一番折騰

linux下檢測定位記憶體洩漏位置的方法

gtest:http://code.google.com/p/googletest/,可以下載最新的程式碼。下載後,可以參考gtest-1.6.0\make\Makefile寫自己的Makefile。 程式記憶體的資訊(/proc/self/smaps): VMSIZE:

程序的虛擬記憶體實體記憶體,共享記憶體

想必在linux上寫過程式的同學都有分析程序佔用多少記憶體的經歷,或者被問到這樣的問題——你的程式在執行時佔用了多少記憶體(實體記憶體)?通常我們可以通過top命令檢視程序佔用了多少記憶體。這裡我們可以看到VIRT、RES和SHR三個重要的指標,他們分別代表什麼意思呢

MMU虛擬記憶體實體記憶體

MMU的主要作用:虛擬地址到實體地址的轉換;訪問許可權控制;設定虛擬儲存空間的緩衝。 虛擬儲存器:程式一般存於掉電不丟失的硬碟中,但是硬碟讀寫速度慢。所以系統上電後一般只在ROM中完成小部分硬體初始化程式,並把程式搬運到記憶體中。然後,從記憶體中開始執行程式。但是,記憶體有限

淺析Linux 64位系統虛擬地址實體地址的對映及驗證方法

# 虛擬記憶體 先簡單介紹一下作業系統中為什麼會有虛擬地址和實體地址的區別。因為Linux中有程序的概念,那麼每個程序都有自己的獨立的地址空間。 現在的作業系統都是64bit的,也就是說如果在使用者態的程序中建立一個64位的指標,那麼在這個程序中,這個指標能夠指向的範圍是0~0xFFFFFFFFFFFFFF

Linux系統管理(一)Linux設備內核管理

linux設備和內核管理一. 設備管理概述1.Linux設備的分類字符設備(c):以字符為單位,傳輸速率較低,無需緩沖區。塊設備(b):以數據塊為單位組織和傳輸數據,需要建立緩沖區網絡設備(s):一種通過SOCKET接口進行主機通信的設備2.設備文件(1)功能用於用戶訪問設備進行輸入和輸出操作(2)常見的設

Linux中關機磁盤管理命令

down -a -o gpo power post boot 計算 退出登錄 常用的關機命令 shutdown -h 關機 -r 重啟 halt poweroff reboot 重啟 logout 退出登錄命令 磁盤管理命令 df -h 以1024進制計

深入了解Java虛擬內存管理

nor jdk7 c語言 str display 必須 left mem col 1.java程序的執行過程 java源文件->解析器->class文件->java類加載器->java運行時數據區->執行引擎 2.我們接下來看