Re: Serious question from a non Unix person
While it seems like a liability in some cases (i.e. you can remove the directory entry of an in-use file) it also is the reason that UNIX like systems can do updates with far less reboots and trouble compared to Windows (that will not all this on an in-use file).
The typical approach in UNIX is you write out the new files to something like 'foo.tmp', sync the file system so it if fully committed to disk, then rename 'foo.tmp' to 'foo' which is an atomic operation (and works in the same way that removing a in-use file works - on the directory mapping to inode, not on the actual file contents). Thus any process will only ever see the old file (via an already-open handle) or new file but even if a system crash occurs around that time, never an in-modification file.
Of course any running process using the old 'foo' won't be updated but many processes and background daemons can simply be restarted (or are short lived) and the new version is now in use without disrupting anything else.
Doing the kernel is trickier as it has to be rebooted for a new kernel image, but some Linux distros support in-use kernel patching by other means.