Всем привет. Сейчас что то сидел думал, и набрел на вопрос в голове, за ответом на который побежал сразу на тостер так как не знаю как правильно его сформулировать. Собственно что исполняет исполняемые файлы? Есть например xml. Это по сути набор букв, и читать и исполнять его умеют лишь программы собственно способные понимать и работать с xml. То же самое например с pdf. Музыкальный плеер же не понимает формат pdf файла- соответственно не сможет его исполнить. Музыкальный плеер который исполняет муз. файлы, блокнот(редактор, IDE) читающий xml и все в таком духе это же программы. А что исполняет и читает ELF, Mach-O, PE и другие форматы испоолняемых файлов, есть же какая то системная софтина которая это делает, или я не правильно понимаю и загрузка исполняемых файлов производится не так?
Я писал хелловорлд под UEFI (можно найти в видеоуроках на ютубе с пафосным названием типа "пишем свою ОС", в итоге конечно не дошедшим до нормального уровня, есть лишь начало) - или как правильно назвать этот формат - в общем, в VM он запускался безо всякой ОС, уверен, что и на реальном компе бы запустился.
Видимо, загрузчик тоже компилируется в этот формат, ну, а он сам уже умеет хотя бы минимально работать с PE - exe и/или dll, так что подгружает их, а они (ntdll.dll всякие и т.д.) уже дают все остальное.
Смотря какие именно файлы, и какая операционная система. Потому что если мы говорим о супермарио в эмуляторе NES или о command.com в виндовс 95, или о ELF-файлах где-то в линуксе, то механизмы будут в чем-то отличатся.
Если вас интересует вся тема вообще, то действительно, начать можно с Таненбаума. Или искать подробности по конкретному типу файлов, которые вас заинтересовали.
исполняемый файл исполняет как правило центральный процессор. в том случае, если код исполняемого файла предназначен не для исполнения на процессоре, а в виртуальной машине, то тогда код исполняемого файла исполняет виртуальная машина.
не так естественно
операционная система знает формат исполняемого файла
при запуске операционная система проецирует файл в оперативную память (при помощи механизма обмена страниц) и передает в него управление
Процессор. Есть такая абстрактная сущность как процесс. В контексте процесса существует поток. Один или несколько. Исполняемый файл можно представить как процесс. И одна из частей процесса (поток) исполняется на процессоре.
Есть например xml. Это по сути набор букв, и читать и исполнять его умеют лишь программы собственно способные понимать и работать с xml
Это для удобства восприятия набор каких-то символов. На самом деле свалка из нолей и единиц.