Чому в Лінуксі можна оновлювати та встановлювати програми без перезавантаження.
В деяких операційних системах під час встановлення тої чи іншої програми або драйвера комп'ютер часто просить перезавантажити систему. Інколи ця процедура починає випробовувати наше терпіння. Наприклад, коли на свіжевстановлену систему інсталюється відразу багато програм та драйверів. В Лінуксі ж ви можете встановлювати та оновлювати програму без перезавантаження, мало того, в більшості випадків навіть не треба закривати саму програму під час оновлення. Давайте розберемося чому це так.
Справа в архітектурі тих файлових систем, які використовуються в Лінукс. Мало того, що вони не піддаються фрагментації, що виключає необхідність проводити таку нудну процедуру як дефрагментація, так ще Linux особливим чином обробляє файли.
Скажімо ви запустили програму, яка відкрила деякий файл (чи сукупність файлів — наприклад сам виконуваний файл програми). Доки програма запущена цей файл тримається відкритим (наприклад виконуваний код самої програми) і в системі виникає спеціальний вказівник, який вказує на місце файлової системи де розташовані необхідні дані. Якщо ви видалили файл, то на диску зникає запис про те, що цей файл існує, але вказівник всеодно вказує на місце на диску, де розташований відкритий в минулому файл. Ви можете створити новий файл з точно тим самим іменем як і видалений файл, фактично замінивши старий файл. Але запис на файловій системі буде вказувати на фізично інше місце. Оскільки місце, де був розташований старий файл ще вважається зайнятим.
І тут починається саме цікаве. Програми які звернулися до нашого файла до його видалення будуть бачити старий варіант, а ті, які звернулися після запису нового - новий. І місце на диску не звільниться до тих пір, доки не закриється остання програма, яка використовувала стару версію.
Іншими словами Лінукс не видаляє файл, доки він використовується, а тільки помічає його як “для видалення”. А тільки він звільниться — видаляє всі посилання на стару версію. Як тільки програма завершить роботу і запуститься знову - запускається вже її нова версія.
Цей метод спрацьовує з усіма файлами в Лінуксі, включаючи драйвери та системні файли. Неможливо так оновити лише один файл в системі - це файл ядра Лінкса (Linux Kernel). Тому що якщо ядро неможливо перезапустити не вимкнувши всю систему. Хоча ні. Є можливість вживу змінити ядро, якщо у вас хоча б два процесори. Існує хитра процедура, яка дозволяє на одному процесорі залишити старе ядро Лінукс, а на іншому процесорі запустити нове. Потім перекинути запущені програми з одного ядра на інше і погасити старе. Таку процедуру інколи роблять на критичних серверах, які неможна вимикати, а ядро треба оновити з певних причин.
Підсумуємо все сказане: кожна окрема програма в Лінуксі може бути оновлена навіть під час активної роботи. Єдине, що необхідно зробити - це перезапустити програму після оновлення, щоб активною стала нова версія. Причиною, яка може викликати необхідність перезавантаження комп'ютера лише одна — це заміна ядра Лінукс. І то не у всіх випадках.
Що це значить ? Це значить, що вся Лінукс система може бути оновлена в реальному часі, коли вона працює на повну катушку працюючи 24/7 (24 години в день, 7 днів на тиждень). Тому можна зрозуміти чому деякі інші операційні системи ніколи не зможуть досягнути такої роботоздатності і гнучкості як Лінукс.
Більш детально можна почитати відвідавши наступне посилання: Why linux can be updated without rebooting .
Коментарі
В виндовсе перезагрузка требуется только при установке программ работающих на уровне ядра и драйверов. Обычно это антивирусники.
Большинство драйверов можно установить несколько штук подряд, а потом перезагрузиться один раз....
Здається десь проскакував патч для ядра, що дозволяє оновлювати його під час роботи і на одному процесорі...
Написати нове повідомлення