Why would I need a reboot after installing? [duplicate]

Possible Duplicate:
Why do I need restart computer after installing new software?

That is to say, what might installing an application do such that it might require a reboot?

Corollary (just out of interest): Are there any things that don't necessarily require a reboot, but whereby it would be easier to just get the user to reboot than implementing some non-reboot solution?


On Windows, you need to reboot because a DLL (or EXE) file cannot be replaced while it is in use. Some drivers and services do not support "unloading" and so you must reboot if you want to replace DLL or EXE files that are used by those. However, the majority of drivers and services can be restarted independent of the rest of the computer, so you can technically stop all of the processes using the file, replace the file, and restart them all again. But in most cases, when that list of processes is large, it's easier to just ask the user to reboot.

On Linux, you can replace files while they're used by running processes. That has the disadvantage that any existing processes will continue to use the old version of the object (until it's restarted), but any new processes you start after updating will use the new version. If there are any shared data structures or anything like that, then the concurrently-running versions could cause system instability. This is why on Linux you will typically still restart the individual processes that depend on an object file when you update it (there's also not much point continuing to run with the old version if you just did an update - particular if it was a security update).


When you replace the operating system kernel, it is far easier to reboot the operating system than to try to replace the kernel while running.

It is possible to replace the kernel while the system is running, but the consequences would mean either internal-kernel data structures cannot be re-organized or routines must be written to modify data structures in-place before running new code.

Replacing the system standard C library might justify the reboot: you have to restart all processes on the system to take advantage of the new C library anyway. But, you can just /sbin/telinit u to force init to use the new library, restart all your services, then restart X if you're running it, and be done, without a reboot.

So, it's just the kernel that requires it.