Что заставляет Windows постоянно перезагружаться, а Linux нет? [Дубликат]

21

Как и многие люди, я использую двойные системы на своем компьютере. Важные обновления требуют постоянной перезагрузки в Windows, хотя я не думаю, что это когда-либо происходило со мной в Linux. Какие свойства каждой ОС решают, возможно ли это?

Бенджамин Линдквист
источник
5
Я все еще должен перезагрузить свои системы Linux, чтобы установить обновление ядра. Я знаю, что есть даже способы обойти это, но мне не нужно такое чрезвычайное время безотказной работы. Несмотря на то, что редко обновляются ядра для моих серверов или установок с долгосрочной поддержкой, я иногда получаю обновления ядра на своих более совершенных системах - я не вижу большой разницы между Linux и Windows здесь. Тем не менее, обновления Linux гораздо менее опасны, чем обновления Windows, поскольку они не превращают перезагрузку в игру ожидания.
Амон
1
Ну, на самом деле ... 1. Сегодня это меньше проблем с Windows, чем раньше. Когда это происходит, обычно это происходит потому, что кто-то забыл закрыть приложение, блокирующее некоторые файлы, которые нужно обновить Windows, и вместо сбоя установки Windows просто регистрирует эти изменения файлов для следующей загрузки. 2. Холодный перезапуск на моем текущем компьютере под управлением Windows 10 занимает около 15 секунд, половина из которых - время POST.
Роберт Харви
@ Robert-Какое у тебя определение завершения стартапа? Добраться до экрана входа в систему / рабочего стола не так уж и плохо, нужно дождаться запуска всех этих сервисов, чтобы вы могли использовать компьютер, который является проблемой. Если ваше время включает запуск услуг, то каковы ваши настройки? Конечно, у меня нет последних и самых лучших, но у меня достаточно приличных компьютеров, и мой рабочий компьютер занимает около 3 минут, а мой дом - около 2 1/2, прежде чем я смогу начать работу над ними.
Данк
@Dunk: купить SSD.
Бен Фойгт
@ Бен, я не следующий в очереди за новым компьютером, но мой сын. Так что я соберу его один на Рождество и проверю это из первых рук. Тем не менее, отчеты о тестах производительности, которые я прочитал, показывают увеличение скорости на 50%, а не 1000%, как Роберт видит по моим системам. 1000% определенно стоит хлопот апгрейда. 50% не так много.
Данк

Ответы:

49

Это следствие инженерных решений.

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

В Windows открытие файла блокирует его в файловой системе, и его нельзя удалить. Это означает, что текущий запущенный код не может быть обновлен без перезагрузки. Но это также означает, что вы всегда можете точно знать, какая версия работает в вашей системе; в модели Linux можно получить важное обновление системного программного обеспечения, успешно применить его и при этом не использовать его в вашей системе, поскольку старая, не обновленная версия все еще работает.

Это инженерный компромисс, как и большинство компьютерных технологий.

Мейсон Уилер
источник
6
@ Нет, вы можете перезапустить свои службы, чтобы применить обновления. Или, в случае с ядром, вы можете использовать ksplice, kpatch и т. Д. Или новые функции в Linux 4.0.
няня
2
@ Дедупликатор, конечно; Я просто пессимистично оцениваю уровень усыновления. Одна команда разработчиков, с которой я работаю, объявила, что они больше не собираются принимать какие-либо исправления, добавляющие поддержку необязательных функций systemd после того, как ошибка в достаточно древних выпусках systemd, включающая поддержку notify-socket-based-watchdog, привела к созданию новой копии их демона. быть раскрученным (в дополнение к старым!) раз в секунду.
Чарльз Даффи
1
@krlmlr: Это не позволяет вам удалить файл, который открыт. Из документации : «Функция DeleteFile помечает файл для удаления при закрытии. Следовательно, удаление файла не происходит до тех пор, пока не будет закрыт последний дескриптор файла». Вы все равно можете заменить его, используя MoveFileдля удаления старый. ,
Бен Фойгт
1
@ Ян, под «тривиальным» я подразумеваю, что любой, кто отвечает за создание системы обновлений дистрибутива Linux, будет знать, как сделать так, чтобы это происходило, не задумываясь, поэтому возникает вопрос, является ли это хорошей идеей для автоматического запуска (или как ее разоблачить) пользователю), а не возможно ли это.
Чарльз Даффи,
2
@CharlesDuffy Я не знаю, как это работает под капотом, но пакет Needrestart Debian выполняет работу, которую вы описываете, то есть автоматически перезапускает службы, исполняемые файлы / библиотеки которых были только что обновлены.
Звол
3

Это следствие взгляда на прогнозируемые ожидания пользователей.

Системы Linux моделируются после запуска Unix на серверах. Время безотказной работы было бахвальством в этих сообществах. Все, что сокращало время, было плохо. И это является побочным эффектом ожидания того, что на компьютере было несколько пользователей, и что время простоя планирования должно было координироваться с несколькими пользователями.

Windows была разработана для рынка ПК. В то время, когда он был представлен, знание того, что вы можете выйти из одной программы и запустить другую без перезагрузки, было знаком опытного пользователя компьютера. Из-за этого не было причин не использовать имена файлов в качестве основного идентификатора при разработке ntfs.

hildred
источник