В Windows вам необходимо перезагрузить компьютер, поскольку файл DLL (или EXE) не может быть заменен во время использования. Некоторые драйверы и службы не поддерживают "выгрузку", поэтому вы должны перезагрузить компьютер, если хотите заменить используемые им DLL или EXE-файлы. Однако большинство драйверов и служб могут быть перезапущены независимо от остальной части компьютера, поэтому вы можете технически остановить все процессы, используя файл, заменить файл и перезапустить их все снова. Но в большинстве случаев, когда этот список процессов велик, проще просто попросить пользователя перезагрузиться.
В Linux вы можете заменить файлы, пока они используются запущенными процессами. Это имеет тот недостаток, что любые существующие процессы будут продолжать использовать старую версию объекта (до тех пор, пока она не будет перезапущена), но любые новые процессы, которые вы запустите после обновления, будут использовать новую версию. Если существуют какие-либо общие структуры данных или что-то подобное, то одновременно работающие версии могут вызвать нестабильность системы. Вот почему в Linux вы, как правило, по-прежнему перезапускаете отдельные процессы, которые зависят от объектного файла, когда вы обновляете его (также нет особого смысла продолжать работу со старой версией, если вы только что сделали обновление - особенно если это было обновление безопасности). ).