Как Ubuntu может обновлять запущенные приложения, не закрывая их, а Windows - нет?

Запуск Ubuntu 12.04 64-bit.

Я в основном обновляю через терминал, используя sudo apt-get update && sudo apt-get upgrade.

Я не понимаю этого: активную работу Firefox или любого другого такого интегрированного приложения вместе с процессом обновления, запущенным одновременно в терминале, который обновляет Firefox до более новой версии. Мне известно, что перезапуск Firefox приведет к открытию Firefox как более новой версии.

Например, при обновлении в MS Windows 7 он запрашивает закрытие активного экземпляра того же приложения (если оно активно) перед обновлением.

Как Ubuntu заменяет активное работающее приложение на более новую версию, не мешая его активному экземпляру?

Что именно происходит в серверной части процесса обновления в этом случае?

9
задан 11 October 2017 в 15:57

1 ответ

При обновлении примеров в MS Windows 7 запрашивается закрытие активного экземпляра того же приложения (если оно активно) для обновления.

Как Ubuntu заменяет активное рабочее приложение на более новую версию, не мешая его активному экземпляру. [Замечено для многих пакетов]

Я постараюсь объяснить это как можно проще. Большинство файловых систем Linux немного отличаются от файловых систем Windows (NTFS). По своей сути оба содержат индексную таблицу имен файлов (записей), указывающих на фактические данные, хранящиеся на диске. В NTFS это называется MFT (главная таблица файлов) - вы могли видеть прокрутку этого имени, если запускаете chkdsk.

Однако «небольшая разница», о которой я упоминал, состоит в том, что индексные таблицы Linux, если хотите, состоят из двух уровней: индекс и иноды . Иноды содержат фактические метаданные файла, включая его физическое местоположение на диске; «имя файла» в индексе - это просто (жесткая) ссылка на индекс.

Когда вы обновляете / обновляете работающее приложение, обновленные файлы записываются на диск, иноды, указывающие на новые создаваемые / обновляемые данные, и имена файлов также обновляются для связи с этими новыми инодами. Но , для любых файлов, которые уже используются запущенным приложением (т. Е. Существуют файловые дескрипторы), их имена будут продолжать указывать на старые inode (которые содержат старые данные), пока файловые дескрипторы не будут закрыты , Это обычно происходит, когда вы выходите из приложения, или для некоторых системных файлов, при перезагрузке. На этом этапе старые данные фактически удаляются с вашего диска.

0
ответ дан 11 October 2017 в 15:57

Другие вопросы по тегам:

Похожие вопросы: