作業系統課程設計實體地址和虛擬位址的聯絡及區別

2021-03-04 08:55:59 字數 1764 閱讀 4402

1樓:止語

cpu通過位址來訪問記憶體中的單元,位址有虛擬位址和實體地址之分,如果cpu沒有mmu(memory management unit,記憶體管理單元),或者有mmu但沒有啟用,cpu核在取指令或訪問記憶體時發出的位址將直接傳到cpu晶元的外部位址引腳上,直接被記憶體晶元(以下稱為物理記憶體,以便與虛擬記憶體區分)接收,這稱為實體地址(physical address,以下簡稱pa),如下圖所示。

如果cpu啟用了mmu,cpu核發出的位址將被mmu截獲,從cpu到mmu的位址稱為虛擬位址(virtual address,以下簡稱va),而mmu將這個位址翻譯成另乙個位址發到cpu晶元的外部位址引腳上,也就是將虛擬位址對映成實體地址,如下圖所示。

mmu將虛擬位址對映到實體地址是以頁(page)為單位的,對於32位cpu通常一頁為4k。例如,虛擬位址0xb700 1000~0xb700 1fff是乙個頁,可能被mmu對映到實體地址0x2000~0x2fff,物理記憶體中的乙個物理頁面也稱為乙個頁框(page frame)。

實體地址(physical address)

用於記憶體晶元級的單元定址,與處理器和cpu連線的位址匯流排相對應。

——這個概念應該是這幾個概念中最好理解的乙個,但是值得一提的是,雖然可以直接把實體地址理解成插在機器上那根記憶體本身,把記憶體看成乙個從0位元組一直到最大空量逐字節的編號的大陣列,然後把這個陣列叫做實體地址,但是事實上,這只是乙個硬體提供給軟體的抽像,記憶體的定址方式並不是這樣。所以,說它是「與位址匯流排相對應」,是更貼切一些,不過拋開對物理記憶體定址方式的考慮,直接把實體地址與物理的記憶體一一對應,也是可以接受的。也許錯誤的理解更利於形而上的抽像。

虛擬記憶體(virtual memory)

這是對整個記憶體(不要與機器上插那條對上號)的抽像描述。它是相對於物理記憶體來講的,可以直接理解成「不直實的」,「假的」記憶體,例如,乙個0x08000000記憶體位址,它並不對就實體地址上那個大陣列中0x08000000 - 1那個位址元素;

之所以是這樣,是因為現代作業系統都提供了一種記憶體管理的抽像,即虛擬記憶體(virtual memory)。程序使用虛擬記憶體中的位址,由作業系統協助相關硬體,把它「轉換」成真正的實體地址。這個「轉換」,是所有問題討論的關鍵。

有了這樣的抽像,乙個程式,就可以使用比真實實體地址大得多的位址空間。(拆東牆,補西牆,銀行也是這樣子做的),甚至多個程序可以使用相同的位址。不奇怪,因為轉換後的實體地址並非相同的。

——可以把連線後的程式反編譯看一下,發現聯結器已經為程式分配了乙個位址,例如,要呼叫某個函式a,**不是call a,而是call 0x0811111111 ,也就是說,函式a的位址已經被定下來了。沒有這樣的「轉換」,沒有虛擬位址的概念,這樣做是根本行不通的。

打住了,這個問題再說下去,就收不住了。

邏輯位址(logical address)

intel為了相容,將遠古時代的段式記憶體管理方式保留了下來。邏輯位址指的是機器語言指令中,用來指定乙個運算元或者是一條指令的位址。以上例,我們說的聯結器為a分配的0x08111111這個位址就是邏輯位址。

——不過不好意思,這樣說,好像又違背了intel中段式管理中,對邏輯位址要求,「乙個邏輯位址,是由乙個段識別符號加上乙個指定段內相對位址的偏移量,表示為 [段識別符號:段內偏移量],也就是說,上例中那個0x08111111,應該表示為[a的**段識別符號: 0x08111111],這樣,才完整一些」

線性位址(linear address)或也叫虛擬位址(virtual address)

跟邏輯位址類似,它也是乙個不真實的位址,如果邏輯位址是對應的硬體平台段式管理轉換前位址的話,那麼線性位址則對應了硬體頁式記憶體的轉換前位址。

什麼是課程設計,什麼是課程設計

教師在備課過程中,對一節課上課方法的規劃,怎樣上,怎樣匯入,引課,複習,方法等等等等 什麼是課程設計 30 課程設計指的是大學某一課程的綜合性實踐教學環節,如 計算機程式設計課程的課程設計,一般是完成一項涉及本課程主要內容的綜合性 應用性的計算機程式開發題目 又如 公共建築 課程設計,一般是完成一項...

DSP的課程設計,DSP的課程設計

給你兩個pdf,肯定對你有幫助.乙個是讓你了解具體乙個數碼拍照裝置是如何制出來的的,從原理圖到pcb製板全都有.另乙個是zc0301pl的技術文件了,裡面寫的很清楚效能引數,管腳定義,原理等等,你所需要的一切都在裡面.相信這個對你是至關重要的.雖然是英文的,但只18頁,相信很容易讀懂.這類技術文件一...

的作業系統,最新的作業系統

樓上說win8,現在外洩版的,恐怕不好吧。樓主說ubuntu,的確,ubuntu不錯。ubuntu是乙個以桌面應用為主的linux作業系統,其名稱來自非洲南部祖魯語或豪薩語的 ubuntu 一詞 譯為吾幫託或烏班圖 意思是 人性 我的存在是因為大家的存在 是非洲傳統的一種價值觀,類似華人社會的 仁愛...