Jak system operacyjny może działać na tym samym układzie, którym ma zarządzać?


17

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?


1
Menedżer nie powinien używać elektronarzędzi swoich pracowników! Zamiast tego musi upewnić się, że pracownicy mają działające narzędzia elektryczne.
MSalters

Odpowiedzi:


15

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ń:

  1. Proces trybu użytkownika wyraźnie przekazuje kontrolę procesowi trybu jądra. Nazywa się to syscall .
  2. Proces trybu jądra może używać swoich specjalnych uprawnień do rejestrowania określonych zdarzeń (np. Sprzęt zewnętrzny wysyła specjalny sygnał do procesora lub proces przestrzeni użytkownika próbuje uzyskać dostęp do zarezerwowanego zasobu). Gdy taka parzystość wystąpi, procesor natychmiast zatrzymuje proces trybu użytkownika i przekazuje kontrolę nad procesem trybu jądra. Zwykle mówi się z przerwania .

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.


17

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).


7
@Imray Nie bardzo, dla procesora system operacyjny to po prostu kolejny kawałek kodu. Jednak procesor ma wiele funkcji zaprojektowanych do użytku przez twórców systemu operacyjnego.
Tom van der Zanden,

3
Nie wiem, czy „świadomość” jest właściwą terminologią, ale procesor nie ma innego powodu, niż istnienie systemu operacyjnego. Zdecydowanie nie jest całkowicie niezależny. W rzeczywistości procesor jest całkowicie zależny od systemu operacyjnego, aby zarządzać różnymi trybami i w inny sposób mówić mu, co ma robić.
Mohair

2
@Mohair Istnieje wiele mikrokontrolerów, które w ogóle działają bez systemu operacyjnego, czy liczą się one jako procesory?
Tom van der Zanden,

2
„czy liczą się one jako procesory?” Oczywiście, że tak. Podobnie jak 6502 na moim pierwszym komputerze, mimo że nie miał wyraźnych pierścieni użytkownika i jądra, a można było pokez poziomu wiersza poleceń popracować nad wszelkimi psotami.
dmckee --- były moderator kociąt

2
@TomvanderZanden jak dokładnie działa the CPU switches back and forth between running the OS and running processes? Co powoduje zmianę?
jnovacho

1

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


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.