Отличается в зависимости от операционной системы, если вы имеете в виду один файл, который является фактически работающим ядром, что, конечно, мало что делает без помощи многих, многих файлов.
Настоящая операционная система DOS была размещена в двух скрытых файлах в корне загрузочного тома или дискеты, IO.SYS
и MSDOS.SYS
(или IBMBIO.SYS
и IBMDOS.SYS
на PC-DOS). Я не думаю, что у них есть заголовок или что-то еще, то есть загрузчик загружает файлы, а затем переходит на первое место, куда он их загрузил.
ntoskrnl.exe
и его друзья, такие как ntkrnlpa.exe
имеют формат Windows PE, поэтому они выглядят как стандартный исполняемый файл. Существуют разные типы .exe
-файлов, и я считаю, что это будет исполняемый файл в "основном режиме", который не будет работать, пока вы находитесь в сеансе Win32, как в 99% случаев, когда вы работаете в Windows. Полная ОС Windows и API, как правило, представляют собой общеизвестную коллекцию.DLL (ntdll.dll
и другие), тем не менее, поэтому ntoskrnl.exe
вряд ли выполняет большую часть работы по запуску системы самостоятельно.
Linux, как правило, представляет собой отдельный двоичный образ под названием vmlinuz
или аналогичный. Обычно у вас также есть initrd
который является файловой системой, которая есть у ядра во время загрузки, но это не обязательно. Я не уверен в его формате, но это не исполняемый файл. Загрузчик предназначен для перехода к началу этого образа непосредственно после загрузки его в память.