Wie kann Ubuntu laufende Anwendungen aktualisieren, ohne sie schließen zu müssen, während Windows dies nicht kann?

11

Ausführen von Ubuntu 12.04 64-Bit.

Ich aktualisiere meistens über das Terminal mit sudo apt-get update && sudo apt-get upgrade.

Ich verstehe das nicht: Firefox oder eine andere solche integrierte Anwendung wird aktiv ausgeführt, und der Aktualisierungsprozess wird gleichzeitig im Terminal ausgeführt, wodurch Firefox auf eine neuere Version aktualisiert wird. Mir ist bekannt, dass durch einen Neustart von Firefox Firefox als neuere Version geöffnet wird.

Wenn Sie beispielsweise in MS Windows 7 aktualisieren, werden Sie aufgefordert, die aktive Instanz derselben Anwendung (falls aktiv) vor dem Aktualisieren zu schließen.

Wie ersetzt Ubuntu die aktive Arbeitsanwendung durch eine neuere Version, ohne die aktive Instanz zu beeinträchtigen?

Was genau passiert in diesem Fall am Backend des Aktualisierungsprozesses?

atenz
quelle

Antworten:

19

Bei der Beispielaktualisierung in MS Windows 7 werden Sie aufgefordert, die aktive Instanz derselben Anwendung (falls aktiv) zum Aktualisieren zu schließen.

Wie ersetzt Ubuntu die aktive Arbeitsanwendung durch eine neuere Version, ohne die aktive Instanz zu beeinträchtigen? [Bei vielen Paketen bemerkt]

Ich werde versuchen, dies so einfach wie möglich zu erklären. Die meisten Linux-Dateisysteme unterscheiden sich geringfügig von den Windows-Dateisystemen (NTFS). Beide enthalten im Kern eine Indextabelle mit Dateinamen (Einträgen), die auf die tatsächlich auf der Festplatte gespeicherten Daten verweisen. In NTFS wird dies als MFT (Master File Table) bezeichnet. Möglicherweise haben Sie gesehen, dass dieser Name durchläuft, wenn Sie a ausführen chkdsk.

Der "kleine Unterschied", den ich erwähnt habe, besteht jedoch darin, dass die Linux-Indextabellen, wenn Sie so wollen, aus zwei Ebenen bestehen: dem Index und den Inodes . Die Inodes enthalten die tatsächlichen Dateimetadaten, einschließlich des physischen Speicherorts auf der Festplatte. Der "Dateiname" im Index ist einfach eine (harte) Verknüpfung zum Inode.

Wenn Sie eine laufende Anwendung aktualisieren / aktualisieren, werden die aktualisierten Dateien auf die Festplatte geschrieben, Inodes verweisen auf die neu erstellten / aktualisierten Daten, und die Dateinamen werden ebenfalls aktualisiert, um eine Verknüpfung zu diesen neuen Inodes herzustellen. Aber , für alle Dateien , die bereits von einer laufenden Anwendung (zB Datei - Handles vorhanden sind ), werden ihre Dateinamen verweisen auf die alte Inodes weiter (die die alten Daten enthalten) , bis die Datei - Handles geschlossen sind. Dies geschieht normalerweise beim Beenden der Anwendung oder bei einigen Systemdateien beim Neustart. Zu diesem Zeitpunkt werden die alten Daten tatsächlich von Ihrer Festplatte entfernt.

ish
quelle