Unix-way: в исполняемом файле - только исполняемый код, он при запуске читается в память, после этого файл свободен и с ним можно делать все, что позволяет твой доступ.
Windows-way: в исполняемом файле может быть навалено три короба ресурсов, вплоть до вырожденных случаев вроде самораспаковывающегося архива, когда код - это просто небольшая вставка в гигантский исполняемый файлище. Так что в память читается только код, но при этом предполагается, что он может подтягивать из файла ресурсы, когда они понадобятся. Поэтому файл блокируется на запись до тех пор, пока этот код не закончит выполнение.