Enterprise Linux also has the feature of updating the kernel on-the-fly. The infrastructure for it has been open-source, and anyone could build a similar service for themselves if they wanted.
In fact, with Nano server, Microsoft is trying to go that direction too -- the less you have running, the easier to avoid reboots.
But the real solution is trying to be reboot-tolerant by having a slight bit of redundancy, I would think. Uptime matters more for pet/snowflake servers than for cattle....
What you go on to describe sounds a lot like kexec, and a kexec is the same thing as a reboot for everything on a computer except the hardware. The new kernel during a kexec starts with a freshly-booted state.
What I meant was – and perhaps I wasn't clear enough – updating the kernel in-memory, while it runs so that even your userspace apps notice nothing - except perhaps a few fractions of seconds of time slipping by - and continue running while the kernel they're running on top of is patched with new code.
This has been possible for a while on Linux. It began with, IIRC, Ksplice as a college-project, then a startup, then bought-out by Oracle for Oracle Linux, then independent efforts at similar implementations by both Red Hat and Suse, which eventually got merged together and mainlined into Linus's tree.
At home I run Arch Linux, and I do updates almost every day. Usually my uptime can easily be measured in weeks.
At work I have Windows 7 on my laptop. I have to restart my laptop twice a week at a minimum, because every tiny fucking update requires a restart. And if I don't then it nags like a little bitch every 2-4 hours and breaks my concentration. And if you take too long then it forces the update and your work is lost. I hate having to close all my apps every 2 days and wait for ages while it restarts. From a user's perspective, Windows is the shittiest desktop experience available in a corporate environment.
</rant>
https://en.m.wikipedia.org/wiki/Windows_Display_Driver_Model...