Jeśli mam program działający z wątkami i wywołujący fork()
system uniksowy, czy wątki są kopiowane? Wiem, że pamięć wirtualna dla bieżącego procesu jest kopiowana 1: 1 do nowego spawnowanego procesu. Wiem, że wątki mają swój własny stos w wirtualnej pamięci procesu. Dlatego przynajmniej stos wątków powinien zostać skopiowany. Nie wiem jednak, czy w wątkach jest coś więcej, co nie znajduje się w pamięci wirtualnej i dlatego NIE jest kopiowane. Jeśli nie, to czy dwa procesy współużytkują wątki, czy są to niezależne kopie?
From The Open Group bazowej Specyfikacja Numer 7, 2018 wydania za widelec :
źródło
Początkowo „rozwidlenie” było osiągane poprzez zapisanie zadania na dysku, a następnie, zamiast czytania w innym wątku (co byłoby zrobione, gdyby zamienić zadanie na inny), modyfikując identyfikator zadania obrazu nadal w pamięci i kontynuując z jego wykonaniem (jako nowe zadanie). To była bardzo prosta modyfikacja podstawowego mechanizmu przełączania zadań, w którym tylko jedno zadanie zajmowałoby pamięć RAM jednocześnie.
Oczywiście, gdy zarządzanie pamięcią stało się bardziej skomplikowane, schemat ten został zmodyfikowany w celu dopasowania do nowego środowiska.
źródło