簡體   English   中英

mmap會一次分配所有內存嗎?

[英]Does mmap allocate all the memory at once?

我正在開發一個JIT編譯器,它將在內存中生成機器代碼。 該JIT主要針對64位POSIX x86系統,我擔心代碼中的跳轉總是可編碼為32位相對偏移量。 我想做的是將2-4GB的可執行內存塊映射為機器代碼,然后自己管理該內存區域。

我特別想知道的是:在64位系統上,即使系統沒有4GB的內存,一次映射4GB的內存對我來說是否安全? 我假設大多數(或所有)操作系統都不會真正分配我不寫的頁面,因此,如果我始終總是先分配低位地址,那我就可以了,只要我實際上不會使用比系統物理上更多的內存。

我也很想聽到關於如何管理機器代碼分配的替代建議,以便機器代碼始終駐留在64位機器上的相同4GB空間中。

您4GB的mmap可能會成功分配虛擬內存,並且物理頁將按照其“已臟”或由程序修改的方式進行分配。 如果物理內存用完,則過程可能會終止。 另請參閱此問題

暫無
暫無

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

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