我希望(in * nix)分配一个庞大的,连续的地址空间,但是不会立即消耗资源,即我想要稍后保留一个地址范围.
假设我做foo = malloc(3 * 1024 * 1024 * 1024)来分配3G,但是在1G的交换文件的1G计算机上.它会失败,对吧?
我想做的是说“给我一个内存地址范围foo … foo 3G我将分配给我”,所以我可以保证在这个区域内的所有分配是连续的,但没有实际分配.
在上面的例子中,我想使用一个bar = malloc(123)调用来执行foo = reserve_memory(3G)调用,因为reserve_memory还没有消耗任何资源,所以它应该是成功的,它只是保证这个bar不在范围内foo … foo 3G.
后来我会做一些像alloc_for_real(foo,234)这样的东西来消耗foo范围的0..234的字节.在这一点上,内核将分配一些虚拟页面并将其映射到foo … foo 123 N
这是否可能在用户空间?
(这里的意思是,foo中的对象需要是连续的,创建后不能被合理地移动.)
谢谢.