[英]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.