Dlaczego czasami muszę ponownie uruchomić komputer po zainstalowaniu nowego oprogramowania, a innym razem nie?
Czy jest jakiś powód, dla którego potrzebuje tego ponownego uruchomienia lub dlaczego nie zawsze jest tak czy inaczej?
Dlaczego czasami muszę ponownie uruchomić komputer po zainstalowaniu nowego oprogramowania, a innym razem nie?
Czy jest jakiś powód, dla którego potrzebuje tego ponownego uruchomienia lub dlaczego nie zawsze jest tak czy inaczej?
Odpowiedzi:
To zależy.
Jeśli instalowane oprogramowanie wpływa na integralną część systemu operacyjnego, konieczne jest ponowne uruchomienie. Na przykład nowe jądro dla systemu operacyjnego.
W systemach Windows jest często używany, ponieważ użytkownicy są uważani za zbyt głupich, aby prawidłowo używać swoich komputerów. Na przykład Microsoft publikuje szczegółowe informacje na temat zmiany „Typu węzła” używanego do pracy w sieci na swojej stronie internetowej , w tym instrukcję „restartowania komputera”, gdy wszystko, co jest wymagane, to ponowne uruchomienie usługi sieciowej, jak opisano tutaj . Ponieważ my, jako użytkownicy jesteśmy zbyt głupi, aby zrestartować usługę, kazano nam zrestartować wszystko.
W przypadku niektórych programów doszedłem do wniosku, że jest to nawyk i często nie jest konieczny, nawet jeśli otrzyma takie polecenie. Jeśli nie sądzę, że oprogramowanie powinno zrobić coś ważnego dla systemu operacyjnego, zwykle nie zawracam sobie głowy i nie doświadczyłem żadnych problemów (a jeśli byłyby problemy, byłyby łatwe do rozwiązania).
Czasami oprogramowanie wprowadzi zmianę, która nie może wejść w życie, gdy komputer jest używany. Może być kilka przyczyn - plik jest w użyciu, zmiana może nastąpić tylko podczas uruchamiania komputera, może istnieć problem bezpieczeństwa, który można zrobić tylko przed włączeniem sieci do komputera, być może skaner antywirusowy zakłóci działanie zainstalować.
Czasami jest to po prostu niechlujne programowanie przez programistów.
Jestem pewien, że jest ich znacznie więcej.
Często podczas instalowania nowego oprogramowania dll (plik) używany przez wiele innych pakietów oprogramowania musi zostać uaktualniony do nowej wersji. (Jest to znacznie bardziej prawdopodobne w przypadku aktualizacji aplikacji, którą już zainstalowałeś).
Jeśli dll jest używany przez działającą aplikację, jej część zostanie załadowana do pamięci, a reszta zostanie odczytana z dysku, gdy będzie to potrzebne. Dlatego dll zostanie zablokowany na dysku. (Pomyśl o problemach, jeśli nie były zablokowane!)
Zablokowanej biblioteki DLL nie można zaktualizować, więc przy następnym uruchomieniu komputera instalator poprosi system Windows o zastąpienie biblioteki DLL nową wersją. Stąd potrzeba ponownego uruchomienia.
Niektórzy lepsi instalatorzy powiedzą ci, które aplikacje powinny zostać zamknięte przed uruchomieniem instalatora, więc zezwolenie na aktualizację biblioteki DLL bez ponownego uruchomienia. Jednak to sprawia, że interfejs instalatora jest bardziej złożony i prowadzi do większej liczby wezwań pomocy technicznej.
Instalator aplikacji może również sprawić, że aplikacja zapisze swój stan, zamknie się, a następnie uruchom ponownie po zaktualizowaniu biblioteki DLL. Można to zrobić tylko wtedy, gdy biblioteka DLL jest używana przez jedną aplikację. Większość samo-aktualizujących się aplikacji to robi - taka powinna być norma dla aplikacji masowego rynku, gdy jest wielu użytkowników.
Wszystkie powyższe mogą prowadzić do skomplikowanej logiki, która jest trudna do przetestowania. Testowanie instalatorów zajmuje dużo czasu, ponieważ musisz zgadnąć, w jakim stanie może być maszyna użytkownika. Często najlepiej jest, aby instalator był prosty i zawsze działał, nawet jeśli prowadzi to do kilku ponownych uruchomień dla użytkownika .
Często zdarza się, że użytkownik decyduje się na zakup innej aplikacji ze względu na restart instalatora, więc sprzedawca poświęca czas (pieniądze) na pracę nad tym, co jest potrzebne, aby użytkownik kupił swoje aplikacje.
Jak często miałeś problem po zainstalowaniu aplikacji, która rozwiązała się po ponownym uruchomieniu? Pomyśl o kosztach wsparcia wielu użytkowników dzwoniących z problemami, które zostaną rozwiązane po ponownym uruchomieniu. Może szybko stać się bardzo kuszący jako programista, aby zawsze zachęcał użytkownika do ponownego uruchomienia po zainstalowaniu oprogramowania, nawet jeśli uważasz, że nie jest to potrzebne.
Większość systemów operacyjnych i oprogramowania powstało w czasach, gdy przestrzeń dyskowa i pamięć kosztują dużo pieniędzy. Nastąpił ruch, aby aplikacje miały prywatną kopię wszystkich używanych bibliotek dll, dzięki czemu aktualizacja gumki jest większa, ale zajmuje więcej miejsca.
Na serwerach odbywa się to za pomocą „kontenerów”, jednak „kontenery” nie działają dobrze w przypadku oprogramowania komputerowego, ponieważ chcesz mieć dostęp do danych zapisanych przez jedną aplikację z inną aplikacją. (W przeciwnym razie wystarczy użyć iPhone'a.)
Powodem jest to, że jeśli nie: rozbijesz się. Od Raymond Chen :
Nawet jeśli zastąpisz używany plik, w systemie może nadal znajdować się kod, który chce użyć starej wersji. Załóżmy na przykład, że masz dwa pliki, które współpracują ze sobą:
- A.dll
- B.dll
Wydajesz łatkę, która aktualizuje oba pliki, ale
A.dll
jest używana. Nie ma problemu. Po prostu wymieniasz oba. W rezultacie programy, które nadal używały,A.dll
nadal korzystają ze starej wersji, ale nowe programy będą korzystać z nowej. Wszystkie programy otrzymują nową wersjęB.dll
.Teraz program, który używał starej,
A.dll
decyduje się na wywołanie funkcji. Naturalnie oczekuje starej wersjiB.dll
, ale zamiast tego pobiera nową wersję. W zależności od tego, jaką zmianę wprowadziłeśB.dll
, to połączenie może działać - lub może ulec awarii. Obie biblioteki DLL zakładają, że jego partner pochodzi z tego samego dopasowanego zestawu.
Szczerze mówiąc, jest to mniej pracy (a zatem i mniej $$) ze strony twórców oprogramowania, aby założyć, że aktualizacje zawsze spowodują ponowne uruchomienie. Jest to prawdopodobnie tyle samo decyzja liczników bean, co twórców.
Ostatecznie jest bardzo niewiele aktualizacji, których w idealnym świecie nie można byłoby wykonać bez ponownego uruchomienia, ale wymaga to dużo wstępnego planowania i wiąże się z pewnym ryzykiem, biorąc pod uwagę różnorodność możliwych konfiguracji systemu.
Ma to związek z tym, że bardzo trudno jest zmienić kod, ponieważ działa bez powodowania poważnych problemów. Rozwiązanie: zatrzymaj wszystko przed zmianą kodu, dzięki czemu będziesz mieć pewność, że nic nie działa. Jest to hack brutalny, który w większości przypadków jest niepotrzebny, ale jest absolutnie konieczny, szczególnie jeśli aktualizujesz szczególnie ważny kod. W rzeczywistości istnieje cała firma specjalizująca się w aktualizacjach, które NIE wymagają ponownego uruchomienia tego szczególnie ważnego kodu. Sposób, w jaki to robią, znajduje się w tym dokumencie http://www.ksplice.com/paper .
Wymagane jest ponowne uruchomienie komputera podczas modyfikowania ważnych plików systemowych dla systemu Windows, ponieważ system Windows nie zezwala na modyfikowanie tych plików podczas ich używania. Dlatego większość aktualizacji z Windows Update wymaga ponownego uruchomienia, podobnie jak programy integrujące się z Windows (jak antywirus). Do momentu ponownego uruchomienia system Windows nie może wykonać kilku ostatnich kroków niezbędnych do „zainstalowania” programu.
Możesz to porównać do Linuksa, który rzadko wymaga ponownego uruchomienia. Nawet gdy zostaniesz poproszony o ponowne uruchomienie komputera, zwykle wystarczy wylogować się i zalogować ponownie. Jest tak, ponieważ typowe środowisko Linux składa się z wielu różnych programów współpracujących ze sobą w celu stworzenia kompletnego systemu operacyjnego. Jeśli ważny plik zostanie zmodyfikowany podczas instalacji, zwykle w najlepszym wypadku wystarczy zrestartować tylko jeden konkretny program, który używa tego pliku.