W jaki sposób Ubuntu może aktualizować uruchomione aplikacje bez konieczności ich zamykania, podczas gdy Windows nie może?

11

Uruchamianie Ubuntu 12.04 64-bit.

Najczęściej aktualizuję za pomocą terminala sudo apt-get update && sudo apt-get upgrade.

Nie rozumiem tego: aktywne działanie Firefoxa lub innej zintegrowanej aplikacji wraz z procesem aktualizacji działającym jednocześnie w terminalu, który aktualizuje Firefoksa do nowszej wersji. Wiem, że ponowne uruchomienie Firefoksa spowoduje, że Firefox zostanie otwarty jako nowsza wersja.

Na przykład podczas aktualizacji w MS Windows 7 prosi o zamknięcie aktywnej instancji tej samej aplikacji (jeśli jest aktywna) przed aktualizacją.

W jaki sposób Ubuntu zastępuje aktywną działającą aplikację do nowszej wersji bez ingerowania w jej aktywną instancję?

Co dokładnie dzieje się na zapleczu procesu aktualizacji w tym przypadku?

atenz
źródło

Odpowiedzi:

19

W przypadku przykładowej aktualizacji w MS Windows 7 prosi o zamknięcie aktywnej instancji tej samej aplikacji (jeśli jest aktywna) w celu aktualizacji.

W jaki sposób Ubuntu zastępuje aktywną działającą aplikację do nowszej wersji bez ingerowania w jej aktywną instancję. [Zauważono dla wielu pakietów]

Spróbuję wyjaśnić to tak prosto, jak to możliwe. Większość systemów plików Linux nieco różni się od systemów plików Windows (NTFS). W ich istocie oba zasadniczo zawierają tabelę indeksów nazw plików (wpisów) wskazujących na rzeczywiste dane przechowywane na dysku. W NTFS nazywa się to MFT (główna tablica plików) - być może widziałeś, jak ta nazwa przewija się po uruchomieniu chkdsk.

Jednak „niewielka różnica”, o której wspomniałem, polega na tym, że tabele indeksów Linuksa, jeśli wolisz, składają się z dwóch poziomów: indeksu i i- węzłów . I-węzły zawierają rzeczywiste metadane pliku, w tym jego fizyczną lokalizację na dysku; „nazwa pliku” w indeksie jest po prostu (twardym) linkiem do i-węzła.

Podczas aktualizacji / aktualizacji działającej aplikacji zaktualizowane pliki są zapisywane na dysku, i-węzły wskazują nowe utworzone / zaktualizowane dane, a nazwy plików są również aktualizowane w celu połączenia z tymi nowymi i-węzłami. Ale w przypadku wszystkich plików, które są już używane przez uruchomioną aplikację (tzn. Istnieją uchwyty plików), ich nazwy plików będą nadal wskazywać stare i-węzły (które zawierają stare dane), dopóki uchwyty plików nie zostaną zamknięte. Zwykle dzieje się tak po wyjściu z aplikacji lub w przypadku niektórych plików systemowych po ponownym uruchomieniu. W tym momencie stare dane są faktycznie usuwane z dysku.

ish
źródło