And as always with this meme: Both Windows and Linux can ask a process nicely to terminate or kill it outright. And the default for both is to ask nicely.
on windows a process can get in a state so that it is impossible to make it go away, even with process explorer or process hacker. mostly this also involves the bugged software becoming unusable.
I encounter such a situation from time to time. one way it could happen is if the USB controller has got in an invalid state, which one of my pendrives can semi-reliably reproduce. when that happens, any process attempting to deal with that device or its FS, even the built-in program to remove the drive letter, will stop working and hang as an unkillable process.
Linux has that issue too. A process in an uninterruptible blocking syscall stays until that syscall finishes, which can be never if something weird's going on.
oh yeah now that you say, SMB/CIFS mounted share if connection is no more. when I experienced this, it was temporary though, because there's a timeout which is half (or double?) of the configurable reconnection timeout. but now that I think of it, I'm not sure if it made it unkillable.
Add a -f to your umount and you can clear up those blocked processes. Sometimes you need to do it multiple times (seems like it maybe only unblocks one stuck process at a time).
When you mount your NFS share you can add the "soft" option which will let those stuck calls timeout on their own.
Hitting the X in Windows and hitting the X in Linux both cause the application to start a save yourself routine. From the OS standpoint they're not far off.
The problem is we have a lot of confirmation bias in windows because every time we want to close an application that's not working, that save yourself call has to sit around for a hellaciously long time out followed by a telemetry call so that Microsoft can track that it happened.
It's pretty rare that Linux apps don't just close.