Если верно, что все файлы Windows с расширением «.exe» считаются "приложениями", это NTOSKRNL.exe, ядро Windows или "приложение", или это исключение из правила? А как насчет ядер Unix и Linux?
4 ответа
Исполняемый файл - это тип файла, такой же как файлы конфигурации (.ini), файлы значков (.ico), динамически загружаемые библиотеки (.dll), аудиофайлы, видеофайлы, текстовые файлы, файлы текстовых документов и т.д. В DOS и windows, расширение .exe используется для маркировки файла, имеющего исполняемые двоичные инструкции (в определенном формате, который распознает ОС).
Прикладное программное обеспечение (не файл) - это программное обеспечение, используемое конечными пользователями (как упомянуто в комментарии, указывающем на webopedia), которое может включать в себя один или несколько исполняемых файлов, файлов конфигурации, файлов данных (внутренних данных), файлов значков, файлов DLL (или .so для unix), аудио / видео файлы и т. д. Мы не можем просто взять winword.exe на флэш-диск и назвать его прикладным программным обеспечением, поскольку он не будет работать даже без других вспомогательных файлов. Но winword.exe - это исполняемый файл.
NTOSKRNL.exe, который упоминается в этом вопросе, является всего лишь одним исполняемым файлом (имеющим правильный формат для ОС, чтобы открыть его и запустить как одну программу). Это не прикладное программное обеспечение, поскольку оно предназначено для внутренней работы ОС (и, следовательно, называется системным программным обеспечением).
Это вопрос симантики.
Согласно Вебопедии :
Приложение - это программа или группа программ, разработанная для конечных пользователей. Прикладное программное обеспечение можно разделить на два основных класса: системное программное обеспечение и прикладное программное обеспечение. Системное программное обеспечение состоит из программ низкого уровня, которые взаимодействуют с компьютером на самом базовом уровне. Это включает в себя операционные системы, компиляторы и утилиты для управления компьютерными ресурсами.
Напротив, прикладное программное обеспечение (также называемое программами для конечных пользователей) включает программы баз данных, текстовые процессоры и электронные таблицы. Образно говоря, прикладное программное обеспечение находится поверх системного программного обеспечения, потому что оно не может работать без операционной системы и системных утилит.
Таким образом, по этому определению ядро Windows является системным программным приложением. И такие программы, как Microsoft Word считается прикладным программным обеспечением. Тем не менее, я не знаю никого, кто использует эти термины. Люди называют их программами или приложениями.
Файлы .exe
находятся в формате "Portable Executable", который поддерживает файлы других типов, кроме .exe. Исполняемые файлы Windows работают под одной из (или ни одной из) нескольких разных подсистем в Windows.
Ваше типичное Windows-приложение - это стандартный исполняемый файл или .NET Win32. Они работают в подсистеме Win32, которая является типичной подсистемой Windows, и, конечно, приложениям .NET требуется платформа .NET.
Существуют также подсистемы POSIX и OS/2 (устаревшие). Я полагаю, что если вы установите Службы для приложений Unix, вы сможете запускать исполняемые файлы подсистемы POSIX.
Исполняемые файлы, которые не работают ни в одной подсистеме, являются собственными. Это включает autochk.exe
- версию chkdsk
которая запускается до запуска Windows, исполняемый файл центральной подсистемы Win32 csrss.exe
и ntoskrnl.exe
и связанные с ними. (Я использовал https://www.tzworks.net/prototype_page.php?proto_id=7 для проверки - информация находится в "Необязательном заголовке")
ОБНОВЛЕНИЕ: Похоже, даже если оно "помечено" как нативное приложение, на самом деле это не так. В статье Википедии о ntoskrnl.exe объясняется.
Этот системный двоичный файл не является собственным приложением (в том смысле, что он не связан с ntdll.dll), вместо этого он содержит стандартную основную точку входа, заглушку, которая вызывает функцию инициализации ядра, но не используется при вызове загрузчика ОС (внутренний символ OSLOADER). KiSystemStartup напрямую.
Вы не можете запустить собственное приложение из подсистемы Win32, поэтому, когда вы нажимаете C:\windows\system32\ntoskrnl.exe
вы видите сообщение об ошибке, в котором говорится, что его нельзя запустить из режима Win32.
Ядра Linux упакованы в формате ELF, который используется для исполняемых файлов под Linux. Я предполагаю, что под другими UNIX-подобными операционными системами это просто двоичный файл, непосредственно исполняемый загрузчиком платформ.
Я никогда не пытался запустить /boot/vmlinuz
напрямую. Я собираюсь попытаться сделать это и обновить с результатами.
ОБНОВИТЬ:
root@my_cool_computer:/boot# ./vmlinuz-3.2.0-4-amd64
No protocol specified
No protocol specified
No protocol specified
No protocol specified
No protocol specified
No protocol specified
err:process:create_process starting 64-bit process L"Z:\\boot\\vmlinuz-3.2.0-4-amd64" not supported in 32-bit wineprefix
wine: Bad EXE format for Z:\boot\vmlinuz-3.2.0-4-amd64.
No protocol specified
No protocol specified
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
root@my_cool_computer:/boot#
Почесывая голову на этом ... Надеюсь, это поможет.
Нет. Операционная система включает ядро и системные библиотеки, которые предоставляют API (интерфейс прикладного программирования), который используют приложения.
Таким образом, ядро, безусловно, является исполняемым файлом, но не приложением. Это аргумент в пользу семантики, но слово "application" в этом TLA (трехбуквенном сокращении) является правильным, поэтому аргумент довольно ясен.
Предположим также, что вы используете Java, которая предоставляет собственный API в Windows. Виртуальная машина Java и среда выполнения - это приложение Windows; который сам размещает приложения Java. Но Java VM/runtime никогда не рассматривается как приложение Java.