2015-10-12 64 views
1

我對於術語映射有點困惑,例如,當我們說爲數據庫映射內存時,這意味着我們在某個內存位置爲該數據庫分配了特定數量的內存?映射和分配

也是分配內存預留內存的同義詞嗎?

很多時候我遇到這兩個術語,他們對我來說並不那麼清楚。

如果有人能澄清這兩個術語,我會非常感謝。

+4

這不是電子產品。 –

回答

1

這可能是一個更好的問題,軟件社區stackoverflow。不過,我是CS。

我會說,術語並不總是準確和精確地使用。

一般而言,分配內存使得程序可用於活動目的的內存,例如爲緩衝區分配內存以保存文件或在內存中結構現在爲

保留內存通常用於表示相同的事物。但是,它有時更被動。例如,如果預留內存是將來的需求,或者爲了不同的目的而防止內存分配過多。

通常當使用術語「映射」時,它是用於文件的。這可能意味着與分配完全相同。或者它意味着更多;映射可能會使用由虛擬內存管理系統提供的底層機制,其中虛擬內存的一部分被「映射」到文件,而不實際將文件讀入物理內存。訣竅是,當存儲器映射文件被訪問時,被訪問的塊/頁面在必要時被'不可見地'讀入進程。這使用稱爲請求分頁的機制。這樣做的好處是程序可以訪問文件,就好像它全部讀入內存一樣,但只有實際訪問的部分從永久存儲系統(磁盤,閃存,任何內容)中檢索,如果只有小部分的該文件是必需的。

此外,它簡化了程序,可以將整個文件寫入內存。而不是應用程序開發人員試圖跟蹤文件的哪些部分已被加載到內存中,操作系統會這樣做。

更好的是,可以要求操作系統跟蹤哪些塊/頁面的內容已更改,並且可以要求操作系統定期將其寫回永久存儲器。這甚至可以進一步簡化應用程序。

這在一些數據庫中很受歡迎。

+0

http://meta.electronics.stackexchange.com/questions/4070/answering-questions-which-are-off-topic – David

+0

@David - 我認爲關於分配vs保留的第一部分與嵌入式開發有關。但是,恕我直言'映射'將更好地遷移到計算器,而不是關閉。它們都可能與EE相關,因爲越來越多的人使用功能更強大的CPU(例如ARM A7/A8),這些CPU可以支持映射;但堆棧溢出似乎比這裏更合適。不幸的是,我不知道如何將它轉移到SO上。 – gbulmer

+0

對於虛擬內存,映射實際上比這更強大 - 當文件被映射爲讀/寫時,對文件的任何其他進程讀取或映射文件所看到的任何對內存的更改都會立即反映* *。因此,在這種情況下,該文件就像是共享內存的後備存儲,您可以使用原子讀取/修改/寫入指令在進程之間進行同步。 –

0

映射主要是指分配。除了功能情況下我們經常需要1比1的映射。如果你定義了一個對象的物理或邏輯的功能,並定義它的關係以及它在變換下的變化,那麼你已經映射了它。