2010-08-08 34 views
2

指針中的地址是指什麼,主存儲器中的實際地址位置還是虛擬地址。可以配置嗎?指針中的哪個位置地址引用

如果它指的是虛擬地址,並存儲經理需要這個地址轉換爲被訪問

回答

12

這取決於您的系統和操作系統。

對於典型的windows/linux用戶空間應用程序,地址是虛擬內存地址。用戶空間應用程序無法使用物理地址訪問內存 - 這是操作系統爲每個進程提供的抽象之一。

MMU(內存管理單元)爲每個內存訪問執行此翻譯,並由操作系統爲您的進程設置corect映射。

+0

在Linux上,用戶空間應用程序可以通過/ dev/mem讀取和映射物理內存。顯然,它必須是一個特權應用程序,儘管在用戶空間中。 http://lwn.net/Articles/147901/ – 2010-08-08 16:46:12

4

如果你的系統使用虛擬機的真實地址每次,然後在地址是虛擬的,如果它不,它不是。這與C或C++無關。

+1

-1對於那些沒有貢獻任何東西,並沒有努力找出提問者試圖提問的努力。 – Edmund 2010-08-08 11:47:45

+1

我沒有看到無用的瑣事,指出這是獨立於編程語言是一個有效的和一些啓發性的評論。 – 2010-08-08 13:02:27

+1

這不是瑣事,這是無知。匿名顯然不知道什麼是虛擬內存。 – 2016-07-12 16:06:42

1

換句話說,作爲開發人員/程序員,您不必擔心地址是虛擬的還是真實的。指針在所有情況下完美運作。

+0

除非你正在管理內存映射IO等等...... – 2010-08-08 17:50:19

1

在某些操作系統中,您正在與實際的物理地址進行交互,例如在舊的MS-DOS/Apple]中[OS可以直接在實際的圖形內存中查找。然而,這有一個侷限性,就是你的程序停留在內存中的某個地方。一個簡化的現代操作系統有一個內存管理器,通常屏蔽應用程序與實際物理內存,這使操作系統能夠以更有效的方式處理多個進程並允許應用程序虛擬內存。

1

在具有虛擬內存的實際操作系統上,當然不能配置,因爲普通進程沒有權限偷看和捅入物理內存;他們只能看到虛擬內存。