Co sprawia, że ​​system Windows wymaga ciągłego ponownego uruchamiania, podczas gdy Linux nie? [duplikować]

21

Jak wiele osób, na moim komputerze działają dwa systemy. Ważne aktualizacje wymagają ciągłego ponownego uruchamiania w systemie Windows, choć nie sądzę, że kiedykolwiek tak się stało w systemie Linux. Jakie właściwości każdego systemu operacyjnego decydują, czy jest to możliwe?

Benjamin Lindqvist
źródło
5
Nadal muszę ponownie uruchomić system Linux, aby zainstalować aktualizację jądra. Wiem, że istnieją nawet sposoby na to, ale nie wymagam tak ekstremalnej dostępności. Chociaż rzadko jest aktualizacja jądra dla moich serwerów lub instalacje z długoterminową obsługą, dostaję sporadyczne aktualizacje jądra w moich najnowocześniejszych systemach - nie widzę tutaj dużej różnicy między Linuksem a Windowsem. Jednak aktualizacje systemu Linux są znacznie mniej przeszkadzające niż aktualizacje systemu Windows, ponieważ nie zamieniają ponownego uruchamiania w grę oczekującą.
amon
1
Cóż, właściwie ... 1. To mniejszy problem w systemie Windows niż kiedyś. Kiedy tak się dzieje, dzieje się tak zwykle dlatego, że ktoś zapomniał zamknąć aplikację blokującą niektóre pliki, które Windows musi zaktualizować, i zamiast nieudanej instalacji, Windows po prostu rejestruje te zmiany plików do następnego uruchomienia. 2. Zimny ​​restart na moim bieżącym komputerze z systemem Windows 10 zajmuje około 15 sekund, z czego połowa to POST.
Robert Harvey
@ Robert-Jaka jest twoja definicja zakończenia uruchamiania? Dostanie się do ekranu logowania / pulpitu nie jest takie złe, czeka na uruchomienie wszystkich tych usług, abyś mógł faktycznie korzystać z komputera, który jest uciążliwy. Jeśli Twój czas obejmuje uruchomienie usług, jaka jest Twoja konfiguracja? To prawda, że ​​nie mam najnowszych i najlepszych, ale mam wystarczająco przyzwoitych komputerów, a mój komputer służbowy zajmuje około 3 minut, a mój dom około 2 1/2 zanim zacznę nad nimi pracować.
Dunk
@Dunk: Kup dysk SSD.
Ben Voigt,
@ Ben-nie jestem następny w moim domu po nowy komputer, ale mój syn jest. Więc zbuduję mu jeden na Boże Narodzenie i sprawdzę go z pierwszej ręki. Jednak raporty z testów porównawczych, które przeczytałem, pokazują około 50% poprawę prędkości, a nie 1000%, jak Robert widzi w moich systemach. 1000% jest zdecydowanie warte kłopotów z aktualizacją. 50% nie tak bardzo.
Dunk

Odpowiedzi:

49

Jest to konsekwencja decyzji inżynierskich.

W systemie Linux możliwe jest usunięcie pliku, który jest nadal w użyciu; system plików używa zasadniczo formy liczenia odniesień, a otwarcie pliku to po prostu kolejne odniesienie do niego. Po zamknięciu plik zostanie wyczyszczony. W rezultacie możliwe jest zastąpienie podstawowego kodu systemu operacyjnego i plików danych bez konieczności ich zamykania i ponownego uruchamiania (inaczej restart).

W systemie Windows otwarcie pliku blokuje go w systemie plików i nie można go usunąć. Oznacza to, że obecnie działającego kodu nie można zaktualizować bez ponownego uruchomienia. Ale oznacza to również, że zawsze możesz dokładnie wiedzieć, która wersja działa w twoim systemie; w modelu Linux możliwe jest otrzymanie ważnej aktualizacji oprogramowania systemowego, pomyślne jej zastosowanie i wciąż nie działa w systemie, ponieważ stara, nieaktualna wersja nadal działa.

Jest to kompromis inżynieryjny, jak większość rzeczy w informatyce.

Mason Wheeler
źródło
6
@Ian Nie, możesz ponownie uruchomić swoje usługi, aby zastosować aktualizacje. Lub, w przypadku jądra, możesz użyć ksplice, kpatch itp. Lub nowych funkcji w Linuksie 4.0.
niania
2
@Deduplicator, jasne; Jestem tylko pesymistą co do tempa adopcji. Jeden zespół programistów, z którym współpracuję, ogłosił, że nie będzie już akceptować żadnych poprawek dodających obsługę opcjonalnych funkcji systemowych po błędzie w wystarczająco starożytnej obsłudze systemowej watchdoga opartego na powiadamianiu o gniazdach, co zaowocowało nową kopią demona wirowanie (oprócz starych!) raz na sekundę.
Charles Duffy
1
@krlmlr: To nie pozwala usunąć otwartego pliku. Z dokumentacji : „Funkcja DeleteFile zaznacza plik do usunięcia po zamknięciu. Dlatego usunięcie pliku nie następuje, dopóki ostatni uchwyt pliku nie zostanie zamknięty”. Można go nadal zastąpić, używając, MoveFileaby usunąć stary .
Ben Voigt
1
@Ian, przez „trywialny” mam na myśli, że każdy odpowiedzialny za zbudowanie systemu aktualizacji dystrybucji Linuksa będzie wiedział, jak to zrobić z góry, więc pojawia się pytanie, czy dobrym pomysłem jest uruchomienie automatyczne (lub jak go ujawnić) dla użytkownika), a nie czy jest to możliwe.
Charles Duffy
2
@CharlesDuffy Nie wiem, jak to działa pod maską, ale pakiet needrestart Debiana wykonuje opisywane zadanie, tj. Automatycznie restartuje usługi, których pliki wykonywalne / biblioteki zostały właśnie zaktualizowane.
zwolnienie
3

Jest to konsekwencja przewidywanych oczekiwań użytkowników.

Systemy Linux są modelowane po uruchomieniu Unixa na serwerach. Przestój był chwaleniem się w tych społecznościach. Wszystko, co skracało czas przestoju, było złe. Jest to efekt uboczny oczekiwania, że ​​komputer ma wielu użytkowników, a przestoje w harmonogramie muszą być koordynowane z wieloma użytkownikami.

Windows został zaprojektowany na rynek komputerów PC. W momencie jego wprowadzenia wiedza o tym, że można zamknąć jeden program i uruchomić inny bez ponownego uruchamiania, była oznaką doświadczonego użytkownika komputera. Z tego powodu nie było powodu, aby nie używać nazw plików jako podstawowego identyfikatora podczas projektowania NTFS.

Hildred
źródło