內存地址

系統RAM中的特定位置

內存地址指系統 RAM 中的特定位置,是一種用於軟體及硬體等不同層級中的數據概念,用來訪問電腦主存中的數據。通常以十六進位的數字錶示。

基本作用


8086的實模式下,把某一段寄存器左移4位,然後與地址ADDR相加后被直接送到內存匯流排上,這個相加后的地址就是內存單元的物理地址,而程序中的這個地址就叫邏輯地址(或叫虛地址)。在80386的保護模式下,這個邏輯地址不是被直接送到內存匯流排,而是被送到內存管理單元(MMU)。MMU由一個或一組晶元組成,其功能是把邏輯地址映射為物理地址,即進行地址轉換。

地址區分


當使用80386時,我們必須區分以下三種不同的地址:
邏輯地址:機器語言指令仍用這種地址指定一個操作數的地址或一條指令的地址。這種定址方式在Intel的分段結構中表現得尤為具體,它使得MS-DOS或Windows程序員把程序分為若干段。每個邏輯地址都由一個段和偏移量組成。
線性地址:針對32位CPU,線性地址是一個32位的無符號整數,可以表達高達2(4GB)的地址。通常用16進位表示線性地址,其取值範圍為0x00000000~0xffffffff。對64位CPU,線性地址是一個64位的無符號整數,可以表達高達2。
物理地址:也就是內存單元的實際地址,用於晶元級內存單元定址。物理地址也由32位無符號整數表示。

內存地址類型


內存地址有許多類型。換句話說,一個電腦,甚至在一個程序內,可能即存在數個不同的內存“定址空間”。
電腦的內存(尤其是指主存)是由許多“內存地址”所組成的,每個內存地址都有一個“物理地址”,能供CPU(或其他設備)訪問。一般,只有如BIOS、操作系統及部分特定之公用軟體(如內存測試軟體)等系統軟體,能使用機器碼的運算對象或寄存器對物理地址定址,指示CPU要求內存控制器之類的硬體設備,使用內存匯流排或系統匯流排,亦或分別之控制匯流排、地址匯流排及數據匯流排,運行該程序之命令。內存控制器的匯流排是由數條并行的線路所組成的,每條線路表示一個比特。匯流排的寬度因此依電腦不同,決定了可定址之存儲單位數量,以及每一單位內的比特數量。
計算機程序使用內存地址來運行機器碼、存儲及截取數據。大多數的應用程序無法得知實際的物理地址,而是使用電腦的內存管理單元及操作系統的內存映射,為“邏輯地址”或虛擬地址定址。