Linux, PAE, memory mapping?
От: Sergeem Израиль  
Дата: 18.12.03 14:01
Оценка:
Известно что Linux поддерживает режим PAE процессоров Интел, реализующий поддержку до 64GB физической памяти на одном 32-битном компутере. Т.е., грубо говоря это дает возможность запускать больше процессов. При этом каждый процесс по прежнему ограничен 4Gb виртуальной памяти.

В w2k есть возможность откусить большой кусок памяти (> 4 гиг) и юзать его через маленькое окошко, которое мапируется в приватную память процесса.
Ну а в Линуксе есть такой фичер?
Serge.

Hасколько проще была бы жизнь, если бы она была в исходниках.
Re: Linux, PAE, memory mapping?
От: Murr Россия  
Дата: 19.12.03 00:42
Оценка: 6 (1)
Здравствуйте, 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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.