Jaki jest tryb użytkownika w porównaniu do trybu jądra w systemie Windows

Jaki jest tryb użytkownika w porównaniu do trybu jądra w systemie Windows

Być może słyszałeś o aplikacjach działających w trybie „jądro” lub „użytkownika”. Wszystko zależy od działania systemów operacyjnych podczas wykonywania swoich zadań. Gdy to zrozumiesz, łatwo jest zrozumieć różnicę między trybem użytkownika a trybem jądra.

W elektronicznej pamięci komputerowej bity są reprezentowane przez komórki pamięci o ładunku powyżej lub poniżej określonego progu. Na mechanicznym dysku twardym bity są reprezentowane jako fluktuacje magnetyczne mierzone na wirującym talerzu. Na dyskach optycznych, dołach i ziemiach, które wykonują lub nie odzwierciedlają światła laserowego, wykonują tę samą robotę.

Bez względu na to, jak osiągnięto fizyczną reprezentację kodu binarnego, możesz ostatecznie zmniejszyć wszystkie komponenty komputerowe do tego kodu surowego.

Jak więc przejść od przyjaznego dla człowieka interfejsu komputera do surowych, niskich procesów w samym komputerze? Tam właśnie pojawia się system operacyjny. Bezpośrednio kontroluje sprzęt komputera.

To oprogramowanie tłumaczy wszystko, co aplikacje (a zatem użytkownik) chcą na instrukcje kodu maszynowego, które rozumieją procesor i inne komponenty. Najbardziej krytycznym oprogramowaniem w tym procesie jest jądro.

Co to jest jądro?

Jądro jest, jak sama nazwa wskazuje, rdzeń systemu operacyjnego. Jądro to oprogramowanie, które znajduje się w pamięci RAM i kieruje wszystkim, co robi komputer. Kiedy coś jest zapisane w pamięci, to jądro kieruje wykonaniem.

Jądro wie, jak łączyć się ze sprzętem, takimi jak GPU i karty sieciowe, ale może nie wiedzieć, jak je obsługiwać z pełnym potencjałem, polegając na ogólnych standardach w branży komputerowej.

Wchodzą tutaj sterowniki sprzętu. Kierowcy informują system operacyjny, jak pracować z określonymi komponentami, dlatego potrzebujesz na przykład różnych sterowników do NVIDIA i AMD GPU.

Wyposażone w odpowiednich sterowników, jądro 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 programiści musieli napisać swoje oprogramowanie specjalnie dla sprzętu użytkownika. Najbardziej znanym przykładem tego 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 mam nadzieję, że większość graczy została objęta ubezpieczeniem. Dziś wszystko działa bardzo inaczej, dzięki API.

Ekran wyboru karty dźwiękowej z Wolf3D

Microsoft DirectX to świetny przykład. Jeśli chcesz dogłębnego wyjaśnienia, sprawdź, czym jest DirectX i dlaczego jest to ważne? Jednak najważniejszą rzeczą, którą należy wiedzieć, jest to, że interfejs API oferuje standardowy sposób dla programistów oprogramowania do proszenia o zasoby sprzętowe z komponentów takich jak GPU. Ponadto producenci sprzętu muszą tylko zapewnić, że ich produkty są zgodne z DirectX, aby zapewnić pełną zgodność z dowolnym oprogramowaniem zgodnym.

API oferują warstwę tłumaczenia między aplikacjami a jądrem niskiego poziomu z sterownikami sprzętowymi. Tak, wiąże się to z niewielką karą wydajności. Mimo to, na współczesnych komputerach, jest to nieistotne i ma różne zalety, w których w końcu przechodzimy w tryb użytkownika i tryb jądra.

Tryb użytkownika vs. Tryb jądra

Nowoczesne systemy operacyjne działają jednocześnie setki lub tysiące „procesów”, dynamicznie dając im czas procesora w razie potrzeby w oparciu o ich priorytety i wymagania dotyczące energii obliczeniowej.

Po uruchomieniu aplikacji generuje ona procesy, a procesor może je wykonać w trybie użytkownika lub w trybie jądra.

Proces systemu Windows działający w trybie użytkownika ma dostęp tylko do własnego miejsca i tabeli adresów prywatny pamięci wirtualnej. Oprogramowanie wykorzystuje te tabele do przechowywania danych w pamięci RAM i żądania zasobów. Nie ma bezpośredniego dostępu do pamięci lub innego sprzętu, a do systemu operacyjnego musi mapować te wirtualne przestrzenie do rzeczywistego sprzętu komputera.

Jest to dobre z wielu powodów, ale najważniejszą korzyścią jest to, że aplikacja nie może zastąpić ani zmieniać danych poza przestrzenią adresu pamięci wirtualnej. Ponadto niektóre funkcje są niedostępne dla procesów w trybie użytkownika, głównie, które mogłyby zawieść system lub zniszczyć dane.

Gdy proces uruchamia się lub jest podniesiony do trybu jądra, ma pełny dostęp do zasobów systemowych, nawet te zarezerwowane dla systemu operacyjnego. Teoretycznie może zastąpić kluczowe dane, które system operacyjny musi działać poprawnie.

Pułapki i wyjątki

Ważne jest, aby zrozumieć, że te dwa tryby są egzekwowane na poziomie sprzętu przez sam procesor. Jeśli aplikacja działająca w trybie użytkownika próbuje zrobić coś, co wymaga dostępu do trybu jądra, generuje „pułapkę” lub „wyjątek.„System operacyjny będzie następnie radził sobie z aplikacją, zwykle, zamykając ją i generując dziennik awarii, aby programiści mogli zobaczyć, co się stało w pamięci, gdy wszystko zniknęło z szyn.

Niebezpieczeństwa trybu jądra: niebieski ekran śmierci

Jeśli kiedykolwiek doświadczyłeś niebieskiego ekranu śmierci (kto nie ma?) To zmusiło komputer do wyłączenia lub ponownego uruchomienia, istnieje duża szansa, że ​​był to proces winy w trybie jądra.

Kiedy proces w trybie jądra robi coś, czego nie powinien, system operacyjny nie może się z niego odzyskać, a cały komputer zatrzymuje się. Gdy proces w trybie użytkownika zbliża się, tylko aplikacja ulega awarii, a reszta oprogramowania i system operacyjny mogą działać bez żadnych problemów.

Jest to jeden obszar, w którym API odgrywają istotną rolę, ponieważ jest to API proszą o uprawnienia trybu jądra. Aplikacje w trybie użytkowników zasadniczo delegatują żądania, które wymagałyby uprawnień do interfejsu w trybie jądra do interfejsu API.

Właśnie dlatego tryb jądra jest zwykle przyznawany tylko procesom systemowym niskiego poziomu, które muszą bezpośrednio uzyskać dostęp do sprzętu komputera. Zwykle ten uprawnienia jest rozszerzone na proces, ponieważ wymaga więcej 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 użyć tych funkcji, należy je podnieść.

Jeśli masz problem z niebieskim ekranem śmierci, przeczytaj nasz przewodnik po rozwiązywaniu problemów z Blue Ecran of Death dla systemu Windows 10!