If it is true that all Windows files with the ".exe" file extension are considered "applications", is NTOSKRNL.exe, the Windows kernel, an "application", or is this an exception to the rule? What about the Unix and Linux kernels?
This is a matter of symantics.
According to Webopedia :
So, by this definition, the Windows Kernel is a systems software application. And programs like Microsoft Word is considered application software. However, I dont know anyone who uses these terms. People call them programs or applications.
An executable file is a type of file, just like configuration files (.ini), icon files (.ico), dynamically loadable libraries (.dll), audio files, video files, text files, word document files, etc. In dos and windows, the extension .exe is used to mark a file having executable binary instructions (in a particular format that the OS recognizes).
Application software (not file) is software used by end users (as mentioned in the comment pointing to webopedia) which can include one or more executable files, configuration files, data files (internal data), icon files, dll files (or .so for unix), audio/video files, etc. We cannot just take winword.exe in a flash drive and call it application software since it will not even run without the other supporting files. But winword.exe is an executable file.
NTOSKRNL.exe that is mentioned in the question is just one executable file (having the right format for the OS to open it and run it as a single program). It is not an application software since it is meant for the internal operation of the OS (and hence called system software).
No. The operating system comprises the kernel and system libraries that provide the API (Application Programming Interface) that applications consume.
So the kernel is certainly an executable, but not an application. This is an argument over semantics, but the word "application" is right in that TLA (Three-Letter Acronym) -- so the argument is pretty clear.
Further suppose that you are running Java, which provides its own API, on Windows. The Java virtual machine and runtime is a Windows application; which itself hosts Java applications. But the Java VM/runtime is never thought of as a Java application.
Your typical Windows "application" is a standard or .NET Win32 executable. These run under the Win32 subsystem which is the typical Windows subsystem, .NET applications of course requiring a .NET framework on top of that.
There are also POSIX and OS/2 (deprecated) subsystems. If you install Services for Unix Applications, I believe you will then be able to launch POSIX-subsystem executables.
Executables that don't run under any subsystem are native. This includes
UPDATE: Looks like even though it's "marked" as a native application it really isn't. The Wikipedia article on ntoskrnl.exe explains.
You can't launch a native application from the Win32 subsystem, so this is why when you click on
Linux kernels are packaged in the ELF format, the same that is used for executables under Linux. I imagine under other UNIX-like operating systems it's merely a binary file directly executed by the platforms booloader.
I haven't ever tried to run
Scratching my head on this one ... I hope this helps.