Я понимаю, что каждый процессор/архитектура имеет собственный набор команд, поэтому программа (двоичная), написанная для конкретного процессора, не может работать на другом. Но я действительно не понимаю, почему исполняемый файл (например, двоичный, например .exe) не может работать в Linux, но может работать на окнах даже на той же машине.
Это основной вопрос, и ответ, который я ожидаю, заключается в том, что .exe и другие двоичные форматы, вероятно, не являются машинными инструкциями, но содержат некоторые данные, зависящие от операционной системы. Если это так, то каковы данные, зависящие от ОС? и в качестве примера, каков формат файла .exe и разница между ним и исполняемыми файлами Linux?
Есть ли источник, который может получить краткую и подробную информацию об этом?