Być może słyszałeś o aplikacjach działających w trybie „jądra” lub „użytkownika”. Wszystko zależy od tego, jak działają systemy operacyjne, gdy wykonują swoją pracę. Kiedy już to zrozumiesz, łatwo zrozumiesz różnicę między trybem użytkownika a trybem jądra.
Zrozumienie działania systemu operacyjnego
Komputer składa się ze sprzętu, elementów elektronicznych i oprogramowania, kodu komputerowego wykonywanego przez ten sprzęt. Mniej jasne może być jednak to, jak ze sobą współpracują.
Spis treści
Najważniejszym elementem komputera jest bit lub „cyfra binarna”. Wszystko, co robi komputer, jest przedstawiane jako jedynki i zera. Różne komponenty komputera reprezentują bity na różne sposoby. W procesorze mikroskopijne tranzystory reprezentują jedynki i zera, gdy są włączone lub wyłączone. Tranzystory te są ułożone w struktury logiczne, zwane bramkami logicznymi.
W elektronicznej pamięci komputera bity są reprezentowane przez komórki pamięci, których ładunek jest powyżej lub poniżej pewnego progu. Na mechanicznym dysku twardym bity są przedstawiane jako fluktuacje magnetyczne mierzone na wirującym talerzu. Na dyskach optycznych wgłębienia i obszary, które odbijają lub nie odbijają światła laserowego, wykonują tę samą pracę.
Bez względu na to, w jaki sposób zostanie osiągnięta fizyczna reprezentacja kodu binarnego, możesz ostatecznie zredukować wszystkie komponenty komputerów konsumenckich do tego surowego kodu maszynowego.
Więc jak przejść z przyjaznego dla człowieka interfejsu komputera do surowego, niskiego-poziom procesów w samym komputerze? W tym miejscu pojawia się system operacyjny. Bezpośrednio kontroluje sprzęt komputera.
To oprogramowanie tłumaczy wszystko, czego chcą aplikacje (a tym samym użytkownik) na instrukcje kodu maszynowego, które rozumieją procesor i inne komponenty. Najważniejszym elementem oprogramowania w tym procesie jest jądro.
Czym jest jądro?
Jądro jest, jak sama nazwa wskazuje, rdzeniem systemu operacyjnego. Jądro to oprogramowanie, które znajduje się w pamięci RAM i kieruje wszystkim, co robi komputer. Kiedy coś jest zapisywane w pamięci, to jądro kieruje wykonaniem.
Jądro wie, jak komunikować się ze sprzętem, takim jak procesory graficzne i karty sieciowe, ale może nie wiedzieć, jak obsługiwać je w pełni , opierając się na ogólnych standardach w branży komputerowej.
W grę wchodzą sterowniki sprzętowe. Sterowniki mówią systemowi operacyjnemu, jak pracować z określonymi komponentami, dlatego potrzebujesz różnych sterowników na przykład dla procesorów graficznych Nvidia i AMD.
Jądro wyposażone w odpowiednie sterowniki jest najwyższym autorytetem w komputerze , w tym robienie rzeczy, które mogą katastrofalnie zniszczyć dane.
Rola interfejsów programowania aplikacji (API)
W czasach MS-DOS twórcy oprogramowania musieli pisać swoje oprogramowanie specjalnie dla sprzęt użytkownika. Najbardziej znanym tego przykładem w systemach MS-DOS były sterowniki kart dźwiękowych.
Dana gra wideo musiałaby obsługiwać najpopularniejsze karty (Sound Blaster, Ad-lib, Gravis Ultrasound itp.) i mieć nadzieję, że większość graczy zostałaby objęta. Dziś wszystko działa zupełnie inaczej dzięki interfejsom API.
Ekran wyboru karty dźwiękowej od Wolf3D
Microsoft DirectX to świetny przykład. Jeśli chcesz uzyskać szczegółowe wyjaśnienie, sprawdź Co to jest DirectX i dlaczego jest to ważne? Jednak najważniejszą rzeczą, o której należy wiedzieć, jest to, że interfejs API oferuje programistom standardowy sposób żądania zasobów sprzętowych z komponentów, takich jak GPU. Ponadto producenci sprzętu muszą jedynie zapewnić, że ich produkty są zgodne z DirectX, aby zapewnić pełną kompatybilność z dowolnym podobnie zgodnym oprogramowaniem.
API oferują warstwę translacji między aplikacjami programowymi a jądrem niskiego poziomu wraz ze sterownikami sprzętowymi. Tak, wiąże się to z niewielką utratą wydajności. Jednak na nowoczesnych komputerach jest to nieistotne i ma wiele zalet, w którym w końcu dochodzimy do trybu użytkownika i trybu jądra.
Tryb użytkownika a tryb jądra
Nowoczesne systemy operacyjne uruchamiają setki lub tysiące „procesów” jednocześnie, dynamicznie dając im czas procesora zgodnie z potrzebami w oparciu o ich priorytety i wymagania dotyczące mocy obliczeniowej.
Gdy uruchamiasz aplikację, generuje ona procesy, a Procesor może wykonywać je zarówno w trybie użytkownika, jak iw trybie jądra.
Proces Windows działający w trybie użytkownika ma dostęp tylko do własnej prywatnej przestrzeni adresowej pamięci wirtualnej i tablicy obsługi. Oprogramowanie wykorzystuje te tabele do przechowywania danych w pamięci RAM i żądania zasobów. Nie ma bezpośredniego dostępu do pamięci ani innego sprzętu, a od systemu operacyjnego zależy mapowanie tych wirtualnych przestrzeni na rzeczywisty sprzęt komputera.
Jest to dobre z wielu powodów, ale najważniejszą korzyścią jest to, że aplikacja nie może nadpisać lub zmienić dane poza jego przestrzenią adresową pamięci wirtualnej. Ponadto niektóre funkcje są niedostępne dla procesów trybu użytkownika, głównie tych, które mogą spowodować awarię systemu lub zniszczyć dane.
Gdy proces uruchamia się lub przechodzi do trybu jądra, ma pełny dostęp do systemu zasobów, nawet tych zarezerwowanych dla systemu operacyjnego. Tak więc teoretycznie może nadpisać kluczowe dane, których system operacyjny potrzebuje do prawidłowego działania.
Pułapki i wyjątki
Ważne jest, aby zrozumieć, że te dwa tryby są wymuszane na poziomie sprzętowym przez sam procesor. Jeśli aplikacja działająca w trybie użytkownika próbuje zrobić coś, co wymaga dostępu w trybie jądra, generuje „pułapkę” lub „wyjątek”. System operacyjny zajmie się wtedy aplikacją, zwykle zamykając ją i generując dziennik awarii, aby programiści mogli zobaczyć, co wydarzyło się w pamięci, gdy coś poszło nie tak.
Niebezpieczeństwa związane z trybem jądra: Niebieski ekran śmierci
Jeśli kiedykolwiek doświadczyłeś niebieskiego ekranu śmierci (kto nie?), który zmusił komputer do wyłączenia lub ponownego uruchomienia, istnieje duża szansa, że był to tryb jądra winę za proces.
Gdy proces w trybie jądra robi coś, czego nie powinien, system operacyjny nie może go odzyskać i cały komputer zatrzymuje się. Gdy proces w trybie użytkownika wariuje, tylko aplikacja ulega awarii, a reszta oprogramowania i systemu operacyjnego może działać bez żadnych problemów.
Jest to obszar, w którym API odgrywają zasadniczą rolę, ponieważ jest to API proszące o uprawnienia trybu jądra. Aplikacje trybu użytkownika zasadniczo delegują żądania, które wymagałyby uprawnień trybu jądra do interfejsu API.
Dlatego tryb jądra jest zwykle przyznawany tylko procesom systemowym niskiego poziomu, które potrzebują bezpośredniego dostępu do sprzętu komputera. Zwykle to uprawnienie jest rozszerzane na proces, ponieważ wymaga on większej wydajności, niż może zapewnić tryb użytkownika. Niektóre instrukcje procesora działają tylko w trybie jądra, więc jeśli proces musi korzystać z tych funkcji, musi zostać podwyższony.
Jeśli masz problemy z niebieskim ekranem śmierci, koniecznie przeczytaj nasze Przewodnik rozwiązywania problemów z niebieskim ekranem śmierci dla systemu Windows 10!