Z moich odczytów na temat systemów operacyjnych (czytanie podstawowych materiałów na Wikipedii, stronach technicznych itp.) Dowiedziałem się, że system operacyjny to program, który pozwala programom i aplikacjom na interakcję ze sprzętem w wydajny i bezpieczny sposób.
Jestem jednak zdezorientowany, w jaki sposób system operacyjny nadzoruje działanie komputera, gdy sam musi być obsługiwany.
Co mam na myśli? Cóż, wyobrażam sobie, że system operacyjny działa, że na komputerze byłyby dwa procesory. Jeden, który cały czas uruchamia system operacyjny, a drugi używany przez system operacyjny do uruchamiania komputera. Okazuje się jednak, że system operacyjny działa na tym samym procesorze, co inne procesy. To tak, jakby kierownik musiał pracować na tej samej linii produkcyjnej, co jego pracownicy, i może korzystać z elektronarzędzi tylko wtedy, gdy skończy się z nimi inny pracownik. Nie byłby bardzo skutecznym menedżerem, ponieważ nie byłby w stanie wydawać zamówień, gdyby jego pracownik był choć trochę niezdyscyplinowany.
Jak to możliwe, że system operacyjny działa tylko częściowo na tym samym procesorze, który musi być współdzielony przez wszystkie pozostałe procesy? Jak to się kończy?
źródło
Odpowiedzi:
Nowoczesne procesory są w pewnym stopniu świadome systemu operacyjnego. Dostarczają „elektronarzędzi” dla pierwszego, który je twierdzi. Zwykle jest to moduł ładujący, który następnie przekazuje kontrolę nad systemem operacyjnym. Zwykle mówi się o „trybie jądra” vs „trybie użytkownika” lub „pierścieniu 0” i „pierścieniu 3”, aby rozróżnić jeden proces z dodatkowymi uprawnieniami i resztę.
Te „elektronarzędzia” mają pewne uprawnienia do zarządzania zasobami: Kontroluj pamięć, dostęp do sprzętu i czas, przez jaki kod poziomu użytkownika może być wykonywany bez przerwy.
Procesor wykonuje system operacyjny ze specjalnymi uprawnieniami, gdy wystąpi jedno z następujących zdarzeń:
System operacyjny może więc działać na tym samym układzie, ponieważ jest on do tego stworzony. Może zarezerwować sobie specjalne uprawnienia. Procesor może w dowolnym momencie przerwać wszystkie inne fragmenty kodu bez tych specjalnych uprawnień i przekazać kontrolę systemowi operacyjnemu.
Niektóre układy z bardzo ograniczoną obsługą (np. Mikrokontroler ) nie obsługują specjalnego uprzywilejowanego kodu. Te układy zwykle działają bez systemu operacyjnego. Działa tylko jeden duży program, który może uzyskać bezpośredni dostęp do sprzętu, musi reagować na przerwania sprzętowe i mieć dostęp do dowolnych zasobów w dowolnym momencie. Jeśli ten program popełni jeden błąd, zazwyczaj całość ulega awarii.
źródło
W najbardziej prymitywnej formie systemy operacyjne polegają na prawidłowym zachowaniu procesów i od czasu do czasu przekazują kontrolę systemowi operacyjnemu. Jeśli proces nie zachowuje się dobrze, może się zdarzyć, że system operacyjny zawiesi się.
Większość procesorów ma jednak przerwania : przerwanie wstrzymuje bieżący proces (zapobieganie) i przekazuje sterowanie z powrotem do systemu operacyjnego. Możesz zaplanować, że przerwania będą się pojawiać w określonych odstępach czasu lub będą uruchamiane zewnętrznie (na przykład naciśnięcie przycisku resetowania).
Zasadniczo procesor przełącza się między uruchomieniem systemu operacyjnego a uruchomieniem procesów z zadziwiająco dużą prędkością. Ponadto procesory mają „tryb użytkownika” i „tryb jądra”. Procesy działają w trybie użytkownika, a system operacyjny działa w trybie jądra. Uruchamianie w trybie użytkownika uniemożliwia procesowi wykonywanie ograniczonych poleceń (takich jak IO). Jeśli proces chce zapisać na dysk, musi poprosić o to system operacyjny. System operacyjny przełącza się w tryb jądra i dokonuje zapisu w imieniu procesu (po upewnieniu się, że proces ma wymagane uprawnienia).
źródło
poke
z poziomu wiersza poleceń popracować nad wszelkimi psotami.the CPU switches back and forth between running the OS and running processes
? Co powoduje zmianę?Do uruchomienia przestrzeni użytkownika i kodu przestrzeni jądra nie potrzebujesz dwóch różnych procesorów. Zasadniczo działa to w ten sposób, gdy włączasz komputer na Bios ładuje Bootloader (kod 512kb na dysku, który kończy podpis 55aa bootloadera), aby ram i przeładować ten bootloader, aby jądro zostało załadowane do RAM i działało na zawsze, aż do wyłączenia komputera. A twoje jądro zarządza pamięcią i nie pozwala na to, aby kod jądra znajdujący się na ramie nie został nadpisany przez kod spacji użytkownika. W tym celu istnieją wywołania systemowe, które przywoływany jest kod przestrzeni użytkownika za pomocą tych wywołań systemowych i dodają kod przestrzeni użytkownika do pamięci RAM i zaczynają go wykonywać. W systemach operacyjnych koncepcja ta jest badana jako zarządzanie pamięcią. Oto link, który możesz przeczytać, jest bardzo dobry na początek https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
źródło
Opierając się na innych odpowiedziach, łatwiej zrozumieć, jeśli uważasz, że samo jądro nie jest procesem, ale kodem zarządzania. Dowolny proces użytkownika może przejść z trybu użytkownika do trybu jądra i wykonać kod jądra (instrukcje uprzywilejowane), wykorzystując część przestrzeni jądra. Następnie proces może wrócić do trybu użytkownika i ponownie uruchomić się w przestrzeni użytkownika.
źródło