O kernel do Windows é considerado um “aplicativo”?

3

Se for verdade que todos os arquivos do Windows com a extensão de arquivo ".exe" são considerados "aplicativos", o NTOSKRNL.exe, o kernel do Windows, um "aplicativo" é uma exceção à regra? E quanto aos kernels Unix e Linux?

    
por Confused 16.10.2013 / 22:44

4 respostas

2

Esta é uma questão de symantics.

De acordo com Webopedia :

An application is a program or group of programs designed for end users. Application software can be divided into two general classes: systems software and applications software. Systems software consists of low-level programs that interact with the computer at a very basic level. This includes operating systems, compilers, and utilities for managing computer resources.

In contrast, applications software (also called end-user programs) includes database programs, word processors, and spreadsheets. Figuratively speaking, applications software sits on top of systems software because it is unable to run without the operating system and system utilities.

Portanto, por esta definição, o Kernel do Windows é um software aplicativo de sistemas . E programas como o Microsoft Word são considerados software de aplicação . No entanto, eu não conheço ninguém que use esses termos. As pessoas os chamam de programas ou aplicativos.

    
por 16.10.2013 / 23:14
2

Um arquivo executável é um tipo de arquivo, assim como arquivos de configuração (.ini), arquivos de ícones (.ico), bibliotecas carregáveis dinamicamente (.dll), arquivos de áudio, arquivos de vídeo, arquivos de texto, arquivos de documentos Word etc. Nos dos e windows, a extensão .exe é usada para marcar um arquivo com instruções binárias executáveis (em um formato específico que o sistema operacional reconhece).

Software aplicativo (não arquivo) é software usado por usuários finais (como mencionado no comentário apontando para webopedia) que pode incluir um ou mais arquivos executáveis, arquivos de configuração, arquivos de dados (dados internos), arquivos de ícone, arquivos dll ( ou .so para unix), arquivos de áudio / vídeo, etc. Não podemos simplesmente pegar o winword.exe em uma unidade flash e chamá-lo de software de aplicativo, pois ele nem será executado sem os outros arquivos de suporte. Mas o winword.exe é um arquivo executável.

O NTOSKRNL.exe mencionado na pergunta é apenas um arquivo executável (com o formato correto para o sistema operacional abri-lo e executá-lo como um único programa). Não é um software de aplicação, uma vez que se destina à operação interna do sistema operacional (e, portanto, chamado de software de sistema).

    
por 17.10.2013 / 06:07
2

Não. O sistema operacional compreende o kernel e as bibliotecas do sistema que fornecem a API (Application Programming Interface) que os aplicativos consomem.

Portanto, o kernel é certamente um executável, mas não um aplicativo. Este é um argumento sobre a semântica, mas a palavra "aplicação" está correta naquele TLA (sigla de três letras) - então o argumento é bastante claro.

Além disso, suponha que você esteja executando o Java, que fornece sua própria API, no Windows. A máquina virtual e o tempo de execução Java são aplicativos do Windows; que hospeda aplicativos Java. Mas o Java VM / runtime nunca é considerado como um aplicativo Java.

    
por 17.10.2013 / 23:05
2

.exe arquivos estão em um formato chamado "Portable Executable" - que suporta outros tipos de arquivos que não são .exe. Os executáveis do Windows são executados em um (ou nenhum) de vários subsistemas diferentes no Windows.

Seu típico "aplicativo" do Windows é um executável padrão ou .NET Win32. Eles são executados sob o subsistema Win32, que é o subsistema típico do Windows, aplicativos .NET que exigem um .NET framework.

Existem também subsistemas POSIX e OS / 2 (obsoletos). Se você instalar o Services for Unix Applications, acredito que, então, você poderá executar os executáveis do subsistema POSIX.

Os executáveis que não são executados em nenhum subsistema são nativos. Isso inclui autochk.exe - a versão de chkdsk que é executada antes do início do Windows, o executável do subsistema Win32 central csrss.exe e ntoskrnl.exe e relacionados. (Eu usei o link para verificar - as informações estão em "Cabeçalho opcional")

ATUALIZAÇÃO: Parece que, embora seja "marcado" como um aplicativo nativo, não é. O artigo da Wikipedia sobre ntoskrnl.exe explica.

This system binary is not a native application (in that it is not linked against ntdll.dll), instead containing a standard main entry point, a stub that calls the kernel initialization function but is unused as the OS loader (internal symbol OSLOADER) calls KiSystemStartup directly.

Você não pode iniciar um aplicativo nativo a partir do subsistema Win32, então é por isso que quando você clica em C:\windows\system32\ntoskrnl.exe você vê uma mensagem de erro dizendo que não pode ser executado a partir do modo Win32.

Os kernels Linux são empacotados no formato ELF, o mesmo que é usado para executáveis no Linux. Imagino que, em outros sistemas operacionais semelhantes ao UNIX, seja apenas um arquivo binário executado diretamente pelo booloader da plataforma.

Eu nunca tentei executar /boot/vmlinuz diretamente. Vou tentar fazer isso e atualizar com os resultados.

ATUALIZAÇÃO:

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# 

Coçando minha cabeça neste ... Espero que isso ajude.

    
por 17.10.2013 / 22:21