Why replacing running executable file is forbidden, but overwriting of memory mapped shared object is allowed ?