Co oznaczają przerwania w kontekście systemów operacyjnych?

9

Latem postanowiłem przeczytać Koncepcje systemów operacyjnych autorstwa Silberschatz, Galvin Gagne (8. edycja). Dotarłem do tematu, który mnie dezorientuje - przerywa i ich rola związana z systemami operacyjnymi.

Tekst mówi, że system operacyjny rozpocznie pierwszy proces, taki jak „init”, a następnie zaczeka na „zdarzenie”, a to zdarzenie jest zwykle sygnalizowane przez przerwanie. Tekst mówi również, że przerwanie może pochodzić ze sprzętu lub oprogramowania. Jak to działa, bardziej szczegółowo? Czy system operacyjny jest sterowany przez przerwania?

Po prostu szukam zrozumienia.

Ockham
źródło

Odpowiedzi:

8

Gdy system operacyjny uruchamia proces taki jak „init”, wysyłałby sygnały do ​​innych podsystemów / menedżerów urządzeń itp., Takich jak pamięć, urządzenia we / wy itp. Przerwanie jest tylko sposobem na poinformowanie procesora lub System operacyjny, który jest gotowy lub ma nowe dane wejściowe itp. Więc w czasie inicjalizacji system operacyjny czeka na gotowość podsystemów, a przerwanie od tych podsystemów dokładnie to wskazuje. A więc do tego odnosi się „wydarzenie”.

Jeśli chodzi o przerwania sprzętowe lub programowe, przerwaniami sprzętowymi są te, które pochodzą ze sprzętu. Na przykład. Urządzenia we / wy, takie jak klawiatura itp. Przerwanie sprzętowe powoduje, że procesor zapisuje swój stan i rozpoczyna wykonywanie procedury obsługi przerwań. Z drugiej strony, przerwania programowe są instrukcjami w zestawie instrukcji, co powoduje, że procesor zmienia swój poziom uprawnień z nadzorcy użytkownika, zwanego również przełączaniem kontekstu. Szczegóły te zostaną omówione później w podręczniku.

Chaos
źródło
4

Przerwania umożliwiają systemowi operacyjnemu zauważenie zdarzenia zewnętrznego, takiego jak kliknięcie myszą. Przerwania programowe, lepiej znane jako wyjątki, pozwalają systemowi operacyjnemu na obsługę nietypowych zdarzeń, takich jak błędy dzielenia przez zero pochodzące z wykonania kodu.

Sekwencja zdarzeń jest zwykle taka:

  1. Sprzęt sygnalizuje przerwanie procesorowi
  2. Procesor zauważa przerwanie i zawiesza aktualnie uruchomione oprogramowanie
  3. Procesor przeskakuje do pasującej funkcji obsługi przerwań w systemie operacyjnym
  4. Procedura obsługi przerwania biegnie i wraca z przerwania
  5. Procesor wznawia pracę w miejscu, w którym został przerwany we wcześniej uruchomionym oprogramowaniu

Najważniejszym przerwaniem dla systemu operacyjnego jest przerwanie taktu timera. Przerwanie czasowe timera pozwala systemowi operacyjnemu okresowo odzyskiwać kontrolę nad aktualnie uruchomionym procesem użytkownika. System operacyjny może następnie zdecydować o zaplanowaniu innego procesu, powrocie do tego samego procesu, sprzątaniu itp. Przerwanie taktowania timera stanowi podstawę koncepcji zapobiegawczej wielozadaniowości.


źródło
4

Przerwanie to „niezwykłe” zdarzenie, które ma miejsce i musi zostać natychmiast przetworzone , bez względu na wszystko, co się dzieje. W cudzysłowie mówię „nietypowy”, ponieważ niekoniecznie są one nieoczekiwane lub złe, ale „nietypowe” z punktu widzenia procesora, ponieważ „po prostu się zdarzają”, gdy jest zajęty wykonywaniem kodu, który może nie być powiązany.

Procesor ma pewien mechanizm nasłuchiwania przerwań i pewien sposób skonfigurowania „co robić”, gdy występują różnego rodzaju przerwań. Pozwala to systemowi operacyjnemu ustalić, że będzie powiadamiany, gdy urządzenia wykonują różne czynności (w tym najważniejszy zegar sprzętowy, który po prostu generuje przerwania w regularnych odstępach czasu). Poprzez konfigurację obsługi przerwań CPU, wyznaczony kod w systemie operacyjnym przejmie kontrolę za każdym razem, gdy wystąpią przerwania.

Komputer jest w bardzo nieprzyjemnym stanie (dla programisty aplikacji), gdy zaczyna się obsługa programu obsługi przerwań; komputer był zajęty robieniem czegoś innego (co może być czymkolwiek ), a teraz system operacyjny został powiadomiony, że „coś się wydarzyło”. Musi gromadzić wszelkie inne informacje potrzebne do obsługi przerwania z dowolnego miejsca w maszynie, w którym powinien leżeć i wykonywać wszelkie wymagane operacje bez zakłócania działania „procesora”. Jeśli system operacyjny chce zmienić, który proces aplikacji jest aktualnie uruchomiony, będzie musiał zapisać wystarczającą ilość kontekstu, aby móc go później przywrócić (ponownie, bez zakłócania tego kontekstu), a następnie załadować inny kontekst, a następnie pozwolić procesorowi wznowić normalne działanie wykonanie w tym kontekście.

Jak wspomniano, przerwania służą do otrzymywania powiadomień z urządzeń (jedyną alternatywą byłoby ich okresowe sprawdzanie), śledzenia czasu i uzyskania gwarantowanej możliwości odzyskania kontroli nad procesem aplikacji (w celu przełączenia, która aplikacja jest uruchomiona) , odzyskiwanie z procesów aplikacji wykonujących nieprawidłowe instrukcje, a także w celu umożliwienia aplikacjom wysyłania żądań systemu operacyjnego. Te ostatnie są nazywane wywołaniami systemowymi. Aby aplikacje nie zepsuły komputera i siebie nawzajem, zwykle działają z maszyną w „trybie użytkownika”, co uniemożliwia aplikacji wykonywanie innych czynności poza odczytaniem i zapisaniem (wirtualnej) pamięci już do niej przydzielonej. Oznacza to, że zrobić wszystkow przeciwnym razie (odczyt / zapis plików, prośba o więcej pamięci, dostęp do urządzeń itp.) aplikacja musi wykonać wywołanie systemowe; robi to w zasadzie, pozostawiając informacje o tym, co chce zrobić gdzieś, o czym wie, że system operacyjny będzie ich szukał, a następnie wykonując instrukcje procesora, które powodują odpowiednie przerwanie. System operacyjny może następnie zobaczyć, co aplikacja próbowała zrobić, i ustalić, czy powinien wykonać to żądanie. Ta gwarancja, że ​​system operacyjny będzie zaangażowany w próbę wykonania dowolnego procesu, który ma wpływ na cokolwiek poza procesem, jest jedynym sposobem na egzekwowanie zasad dostępu.

Zasadniczo tak, system operacyjny napędzany jest przerwaniami. „Abstrakcyjny” system operacyjny uruchamia maszynę w stan „normalnej pracy”, aw pewnym momencie przekazuje kontrolę nad „normalnym” procesem. W normalnych okolicznościach system operacyjny odzyska kontrolę tylko przez obsługę przerwań; ale ponieważ nic nie dzieje się bez przerwy, system operacyjny w zasadzie kontroluje wszystko przez cały czas.

Ben
źródło
3

System operacyjny jest sterowany przez przerwania. To znaczy że:

Jeśli nie ma żadnych procesów do wykonania, nie ma urządzeń I / O do obsługi i nie ma użytkowników, którzy mogliby odpowiedzieć, system operacyjny będzie siedział cicho, czekając, aż coś się wydarzy. Zdarzenia są prawie zawsze sygnalizowane wystąpieniem przerwania lub pułapki, pułapka jest przerwaniem sprzętowym generowanym, gdy podana jest niepoprawna instrukcja, a następnie zwraca kontrolę do systemu operacyjnego.

Przykładem niepoprawnej instrukcji jest sytuacja, gdy program próbuje uzyskać dostęp do przestrzeni pamięci innego programu bez pozwolenia.

Peter Mortensen
źródło
przerwania nie zawsze muszą być czymś złym lub nieważnym, jak opisałeś
opisywałem przerwanie pułapki, o ile wiem, że zostało wygenerowane z powodu błędu lub nieprawidłowych instrukcji. dzięki za powiadomienie mnie