Известно что Linux поддерживает режим PAE процессоров Интел, реализующий поддержку до 64GB физической памяти на одном 32-битном компутере. Т.е., грубо говоря это дает возможность запускать больше процессов. При этом каждый процесс по прежнему ограничен 4Gb виртуальной памяти.
В w2k есть возможность откусить большой кусок памяти (> 4 гиг) и юзать его через маленькое окошко, которое мапируется в приватную память процесса.
Ну а в Линуксе есть такой фичер?
Serge.
Hасколько проще была бы жизнь, если бы она была в исходниках.
Здравствуйте, Sergeem, Вы писали:
S>Известно что Linux поддерживает режим PAE процессоров Интел, реализующий поддержку до 64GB физической памяти на одном 32-битном компутере. Т.е., грубо говоря это дает возможность запускать больше процессов. При этом каждый процесс по прежнему ограничен 4Gb виртуальной памяти.
S>В w2k есть возможность откусить большой кусок памяти (> 4 гиг) и юзать его через маленькое окошко, которое мапируется в приватную память процесса.
S>Ну а в Линуксе есть такой фичер?
#define _LARGEFILE64_SOURCE
#include <sys/mman.h>
#include <fcntl.h>
#define KB 1024LLU
#define MB 1024LLU*KB
#define GB 1024LLU*MB
int main() {
int fd = shm_open ("my_memory_piece", O_RDWR|O_CREAT, 0600); // Creating a map with read/write acess; permissions for external access are rw-------
char *map;
ftruncate64(fd, 10LLU*GB); // Expanding map to 10 GB
map = mmap64(0, 4LLU*MB, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 5LLU*GB); // Map a 4 MB region starting from 5 GB
// ...
munmap (map, 4LLU*MB);
close (fd);
shm_unlink ("my_memory_piece");
return 0;
}