簡體   English   中英

如何映射內存中的_particular_區域?

[英]How do I mmap a _particular_ region in memory?

我有一個程序。 我希望它能夠通過不同的運行來映射內存的特定區域。

  1. 我有程序的源代碼。 C / C ++
  2. 我控制程序的編譯方式。 海灣合作委員會
  3. 我控制程序的鏈接方式。 海灣合作委員會
  4. 我控制程序的運行方式(Linux)。

我只想擁有這個特定的內存區域,比如說我映射到特定文件的0xabcdabcd到0xdeadbeef。 反正有保證嗎? (我必須以某種方式確保沒有將其他內容加載到該特定區域中)。

編輯:

如何確保沒有其他需要該特定區域的內存?

您需要做兩件事:

  1. 將起始地址指定為mmap的第一個參數。
  2. 包括MAP_FIXED標志。

對於起始地址,您需要確保它是頁面大小的倍數。 要獲取頁面大小,請使用調用sysconf(_SC_PAGESIZE) (在Linux上是適當的調用,其他平台可能有所不同)。

將地址傳遞給addr map。 嘗試在8KB的邊界上獲取它。 您可以嘗試使用mlock()代替。

您無法確保沒有其他東西占用該內存區域-先到先得。 但是,由於您需要內存的特定部分,所以我猜您有一個非常專業的環境,因此您只需要確保自己是第一名(使用開始腳本)即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM