Jakie są zalety rozwiązania fork w systemach Unix?

Autor:abdullah farhat

Czym różni się od prostego uruchomienia **** & gt; / dev / null & amp ;?

Odpowiedzi

joann bubonic paulek
Nic. Jest to po prostu przestarzała koncepcja, która wciąż jest kompatybilna. Single Unix Specification mówi:
Istnieją dwa powody, dla których programiści POSIX nazywają fork (). Był to program, który był w trakcie tworzenia nowego procesu; program działa. W drugim przypadku następowały funkcje exec.
Oznacza to, że dosłownie są dwa zastosowania fork: tworzenie nowego procesu z nowego pliku binarnego i tworzenie nowego "wątku" w bieżącym procesie. W obu przypadkach ma wady wynikające z samej zasady fork:
1) Podczas tworzenia procesu, przestrzeń adresowa jest najpierw kopiowana (nie pamięć, ale przestrzeń adresowa - każdy proces ma swój własny sposób), deskryptory i inne zasoby, aby je natychmiast uwolnić (ten problem częściowo rozwiązuje vfork)
2) Podczas tworzenia strumienia przestrzeń adresowa jest ponownie kopiowana zamiast odtwarzania w tym samym.

Jedyną pożyteczną rzeczą, która przychodzi mi do głowy, jest tworzenie "piaskownicy" Chrome / IE7. Stworzenie nowego procesu kopiowania starego będzie o kilka milionów (kilka milisekund na nowoczesnych procesorach) tańszych zegarków - dla tych, którzy są ważni, aby tworzyć piaskownice w ogromnych ilościach (i z jakiegoś powodu pula wstępna takich piaskownic nie jest odpowiednia) może to być znaczące. < br />
Jest jeszcze jeden problem poza stosunkowo niewielkim spadkiem wydajności w dwóch najczęściej używanych scenariuszach. Oto jak ten sam SUS opisuje problem:
Istnieją dwie alternatywy. Skopiuj do wszystkich nowych wątków. Zostało zawieszone dla nowego procesu. Wzywa do fork (). Stwarza to najnowocześniejszy stan zasobów. To nie do tej pory proces się odbył.

W nowoczesnym oprogramowaniu istnieje taka ważna koncepcja, jak link. Tak więc tradycyjny proces unix ma niską łączność. Jest jednocześnie pojemnikiem zasobów (aby uprościć, można powiedzieć, że jest to abstrakcja pamięci) i jednostką wykonawczą (abstrakcja procesora).
Gwinty Posix służą do rozwiązania tego problemu, ale nie są kompatybilne z widelcem. Lepiej więc zastosować podejście opisane w tym samym SUS:
Jest to funkcja programu wielowątkowego. Jest to funkcja polegająca na niezdefiniowaniu siebie.
Użyj TYLKO WIDMA, aby wykonać nowy program, użyj pthread_create dla wszystkich pozostałych.
duyenngoc auth
Mogę się mylić, ale moim zdaniem "****" / dev / null &&; otrzyma SIGHUP po zerwaniu terminala
Odpowiedzi:
jest absolutnie prawdziwe! - stephanie wilga
tylko nie HUP ale TERMINOWI (tutaj mogę się mylić) - amaya
kathy doyle
Status transferu, taki jak.
Odpowiedzi:
W tym sensie, że podczas generowania widelca jest tworzona kopia procesu, na przykład już zainicjowana. W przypadku "prostego startu **** & gt; / dev / null &? "będzie musiał inicjować za każdym razem od nowa (nie wspominając o przesyłaniu danych dla niego).

Jeśli chcesz rozpocząć własny proces od zera, nie ma żadnych korzyści, a widelec jest bardzo powolny. - eva truesdale
Czy można dowiedzieć się więcej na temat inicjalizacji, interesuje mnie różnica w zasobach systemowych, która metoda będzie działać szybciej i zużywać mniej pamięci?
Chcę zrozumieć przyszłość, nie jest jasne, dlaczego pytanie zasługiwało na minus? To nie jest temat Habr? - sharad sundararajan
, dla których mam minus, również nie do końca rozumiem =)
jesteś opisany poniżej ideologii, jestem bardziej praktyczny:
jeśli chcesz wykonać pewne polecenie oddzielnie od głównego procesu i pracować dalej, "łatwy start" będzie szybszy i nie będzie pochłaniał dodatkowej pamięci na początku polecenia.
jeśli chcesz pobrać kopię głównego procesu, to widelec będzie wygodniejszy, ponieważ wszystko zostanie zainicjowane w procesach potomnych. tutaj inicjalizacja nie polega na zrozumieniu systemu operacyjnego, ale z punktu widzenia samego procesu (abstrakcyjny przykład: czytanie konfiguracji, tworzenie jądra, określanie, co i dlaczego robimy - wszystko to zostanie wykonane za pomocą fork w procesach potomnych). - majella
camron
bardzo ideologicznie jasne idei podziału procesu
Doradztwo galerii na jQuery z możliwością komentowania obrazów :: Light CMS: kto używał, jakie recenzje? :: Zastąpienie "captcha"? :: Tworzenie plików .pyc i .pyo? :: Gdzie znaleźć tłumacza dwujęzycznego RU EN, aby przetłumaczyć interfejs silnika bloga.?
Zostaw odpowiedź
Linki