Czy jądro systemu Windows jest uważane za „aplikację”?

3

Jeśli prawdą jest, że wszystkie pliki Windows z rozszerzeniem „.exe” są uważane za „aplikacje”, to czy NTOSKRNL.exe, jądro systemu Windows, „aplikacja”, czy jest to wyjątek od reguły? Co z jądrem Uniksa i Linuksa?

zmieszany
źródło

Odpowiedzi:

2

To kwestia symantyki.

Według Webopedia :

Aplikacja to program lub grupa programów przeznaczona dla użytkowników końcowych. Oprogramowanie aplikacyjne można podzielić na dwie ogólne klasy: oprogramowanie systemowe i oprogramowanie aplikacyjne. Oprogramowanie systemowe składa się z programów niskiego poziomu, które współdziałają z komputerem na bardzo podstawowym poziomie. Obejmuje to systemy operacyjne, kompilatory i narzędzia do zarządzania zasobami komputerowymi.

Natomiast oprogramowanie aplikacyjne (zwane także programami użytkowników końcowych) obejmuje programy bazodanowe, edytory tekstu i arkusze kalkulacyjne. Mówiąc obrazowo, oprogramowanie aplikacyjne znajduje się na szczycie oprogramowania systemowego, ponieważ nie można go uruchomić bez systemu operacyjnego i narzędzi systemowych.

Zgodnie z tą definicją jądro systemu Windows jest aplikacją oprogramowania systemowego . A programy takie jak Microsoft Word są uważane za oprogramowanie aplikacyjne . Jednak nie znam nikogo, kto używa tych terminów. Ludzie nazywają je programami lub aplikacjami.

Keltari
źródło
Dziękuję Ci. Zatem z twojego punktu widzenia „dowolny” program wykonywalny, nawet jądro systemu operacyjnego, jest „aplikacją” (te dwa terminy są w 100% równoważne)? Ponadto nigdy nie zrozumiałem definicji Webopedia, gdy stwierdza ona, że ​​„oprogramowanie aplikacyjne” jest jedną z dwóch ogólnych klas „oprogramowania aplikacyjnego”.
Mylić
„aplikacja” nie ma powszechnie używanej definicji denotatywnej, więc jest z natury niejednoznaczna. jednak „wykonywalny”, więc wolę go używać.
Frank Thomas
2

Plik wykonywalny jest rodzajem pliku, podobnie jak pliki konfiguracyjne (.ini), pliki ikon (.ico), biblioteki ładowane dynamicznie (.dll), pliki audio, pliki wideo, pliki tekstowe, pliki dokumentów tekstowych itp. i Windows rozszerzenie .exe służy do oznaczania pliku zawierającego wykonywalne instrukcje binarne (w określonym formacie rozpoznawanym przez system operacyjny).

Oprogramowanie aplikacyjne (nie plikowe) to oprogramowanie używane przez użytkowników końcowych (jak wspomniano w komentarzu do strony internetowej), które może obejmować jeden lub więcej plików wykonywalnych, pliki konfiguracyjne, pliki danych (dane wewnętrzne), pliki ikon, pliki dll (lub .so dla unix), plików audio / wideo itp. Nie możemy po prostu wziąć winword.exe na dysk flash i nazwać go aplikacją, ponieważ nie uruchomi się nawet bez innych plików pomocniczych. Ale program winword.exe jest plikiem wykonywalnym.

NTOSKRNL.exe, o którym mowa w pytaniu, to tylko jeden plik wykonywalny (posiadający odpowiedni format dla systemu operacyjnego, aby go otworzyć i uruchomić jako pojedynczy program). Nie jest to oprogramowanie aplikacyjne, ponieważ jest przeznaczone do wewnętrznego działania systemu operacyjnego (i dlatego nazywa się oprogramowaniem systemowym).

jaychris
źródło
2

Nie. System operacyjny obejmuje jądro i biblioteki systemowe, które zapewniają interfejs API (interfejs programowania aplikacji), z którego korzystają aplikacje.

Jądro to z pewnością plik wykonywalny, ale nie aplikacja. Jest to spór o semantykę, ale słowo „aplikacja” ma rację w tym TLA (trzyliterowym akronimie) - więc argument jest całkiem jasny.

Ponadto załóżmy, że w systemie Windows jest uruchomiona Java, która udostępnia własny interfejs API. Wirtualna maszyna Java i środowisko wykonawcze jest aplikacją Windows; który sam obsługuje aplikacje Java. Ale Java VM / runtime nigdy nie jest uważana za aplikację Java.

Rozpoznać
źródło
2

.exepliki mają format „Portable Executable” - który obsługuje pliki innego rodzaju niż .exe. Pliki wykonywalne systemu Windows działają w ramach jednego lub kilku różnych podsystemów w systemie Windows.

Typowa „aplikacja” systemu Windows jest standardowym plikiem wykonywalnym .NET Win32. Działają one w ramach podsystemu Win32, który jest typowym podsystemem Windows, aplikacje .NET oczywiście wymagają ponadto .NET Framework.

Istnieją również podsystemy POSIX i OS / 2 (przestarzałe). Jeśli zainstalujesz Usługi dla aplikacji uniksowych, uważam, że będziesz w stanie uruchomić pliki wykonywalne podsystemu POSIX.

Pliki wykonywalne, które nie działają w żadnym podsystemie, są rodzime. Obejmuje autochk.exe- wersja chkdsk, która biegnie przed uruchomieniem systemu Windows, centralny podsystem Win32 wykonywalny csrss.exei ntoskrnl.exei pokrewne. (Użyłem https://www.tzworks.net/prototype_page.php?proto_id=7 do weryfikacji - informacje znajdują się w „Opcjonalnym nagłówku”)

AKTUALIZACJA: Wygląda na to, że chociaż jest „oznaczona” jako natywna aplikacja, tak naprawdę nie jest. Artykuł w Wikipedii na temat pliku ntoskrnl.exe wyjaśnia.

Ten systemowy plik binarny nie jest aplikacją natywną (ponieważ nie jest połączony z ntdll.dll), zamiast tego zawiera standardowy główny punkt wejścia, kod pośredniczący, który wywołuje funkcję inicjalizacji jądra, ale nie jest używany jako wywołanie modułu ładującego system operacyjny (symbol wewnętrzny OSLOADER) KiSystemStartup bezpośrednio.

Nie można uruchomić aplikacji rodzimej z podsystemu Win32, dlatego po kliknięciu pojawia C:\windows\system32\ntoskrnl.exesię komunikat o błędzie informujący, że nie można uruchomić jej z trybu Win32.

Jądra systemu Linux są spakowane w formacie ELF, takim samym, jaki jest używany w plikach wykonywalnych w systemie Linux. Wyobrażam sobie, że w innych systemach operacyjnych typu UNIX jest to po prostu plik binarny wykonywany bezpośrednio przez program booloader platform.

Nigdy nie próbowałem biegać /boot/vmlinuzbezpośrednio. Spróbuję to zrobić i zaktualizować wyniki.

AKTUALIZACJA:

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# 

Drapiąc się po tym ... Mam nadzieję, że to pomoże.

LawrenceC
źródło