Powiedz, że przydzielam dużą pamięć (40 MB) za pomocą mmap używając/dev/zero w następujący sposób.mmap z/dev/zero
fd = open("/dev/zero", O_RDWR);
a = mmap (0, 4096e4, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FILE, fd, 0);
Co rozumiem, jest to, że jądro zainicjuje pamięć do zera, gdy strony są wprowadzone do pamięci fizycznej (przypuszczam nowoczesne jądra Linuksa używać Demand stronicowania). Na przykład, kiedy pierwsza strona zostanie dotknięta i przeniesiona do pamięci fizycznej, jądro zainicjuje wszystkie 4096 bajtów na zero, a kiedy dotknie drugiej strony, robi to samo i tak dalej.
Czy moje zrozumienie jest prawidłowe?
Krótka odpowiedź: Tak – hirschhornsalz
Tak długo jak dotyk oznacza pisanie, tak. W przeciwnym razie, jeśli po prostu czytasz ze strony zerowej, jest rzeczywiście jedna strona zerowa, która będzie KROKOWANA przy pierwszym zapisie. – ninjalj
To będzie ciężko działać na Androidzie 5.0, ponieważ SELinux zablokuje takie dziwactwo. Dlatego Inkscape w chroot nie uruchamia się na Androidzie. – pelya