Standardowym sposobem tworzenia nowych procesów w systemie Linux jest kopiowanie śladu pamięci procesu nadrzędnego, który staje się środowiskiem procesu potomnego, dopóki nie execv
zostanie wywołany.
O jakim śladzie pamięci mówimy, wirtualnym (o co prosił proces) czy rezydentnym (co jest faktycznie używane)?
Motywacja: Mam urządzenie z ograniczoną przestrzenią wymiany i aplikację z dużą różnicą między powierzchnią pamięci wirtualnej a rezydentną. Aplikacja nie może rozwidlać się z powodu braku pamięci i chciałaby sprawdzić, czy próba zmniejszenia wirtualnego rozmiaru śladu pomogłaby.
If enough is available the kernel will commit to the full virtual size of the parent for both processes after the fork.
Tak dziękuję. Oznacza to, że zmniejszenie wirtualnego śladu procesowego w środowisku o ograniczonej pamięci (RAM i swap) może rozwiązać problem niemożności rozwidlenia.