Architektura Systemów Komputerowych

Podobne dokumenty
3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Przerwania, polling, timery - wykład 9

Metody obsługi zdarzeń

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Mikroinformatyka. Wielozadaniowość

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Mikroprocesor Operacje wejścia / wyjścia

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Działanie systemu operacyjnego

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Podstawy Informatyki Układ przerwań

Działanie systemu operacyjnego

Mikroinformatyka. Mechanizmy ochrony pamięci

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Działanie systemu operacyjnego

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Działanie systemu operacyjnego

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Organizacja typowego mikroprocesora

Technika mikroprocesorowa I Wykład 2

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Prezentacja systemu RTLinux

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Budowa i zasada działania komputera. dr Artur Bartoszewski

Zarządzanie zasobami pamięci

LEKCJA TEMAT: Zasada działania komputera.

Programowanie Niskopoziomowe

Budowa systemów komputerowych

Architektura komputerów

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

dr inż. Jarosław Forenc

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Systemy operacyjne III

Stronicowanie w systemie pamięci wirtualnej

4. Procesy pojęcia podstawowe

Architektura komputerów

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Wybrane zagadnienia elektroniki współczesnej

Architektura komputerów

Architektura Systemów Komputerowych

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Architektura systemów komputerowych. dr Artur Bartoszewski

Urządzenia wejścia-wyjścia

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Struktura systemów komputerowych

Materiały pomocnicze 1

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Zarządzanie pamięcią w systemie operacyjnym

Architektura komputera

J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego

4. Procesy pojęcia podstawowe

Jądro systemu operacyjnego

ARCHITEKTURA PROCESORA,

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240

Zarządzanie pamięcią operacyjną

Architektura komputerów. Układy wejścia-wyjścia komputera

Architektura mikroprocesorów TEO 2009/2010

Budowa Mikrokomputera

Zarządzanie pamięcią operacyjną

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Programowanie współbieżne Wykład 2. Iwona Kochańska

Architektura komputerów

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Monitor maszyn wirtualnych

Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

Hardware mikrokontrolera X51

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Zarządzanie procesami i wątkami

Architektura Systemów Komputerowych

BIOS, tryb awaryjny, uśpienie, hibernacja

Architektura i administracja systemów operacyjnych

Rejestr HKEY_LOCAL_MACHINE

Mikroinformatyka. Tryb wirtualny

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Sp. z o.o Czeladź ul. Wojkowicka 21 Tel. (0-32) , , Fax:

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Logiczny model komputera i działanie procesora. Część 1.

Architektura komputerów

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Wprowadzenie do systemów operacyjnych

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

Mechanizmy pracy równoległej. Jarosław Kuchta

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Wykład IV. Układy we/wy. Studia Podyplomowe INFORMATYKA Architektura komputerów

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Transkrypt:

Architektura Systemów Komputerowych Wykład 12: Zarządzanie zasobami komputera. Sytuacje wyjątkowe. Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie

Plan Zarządzanie zasobami komputera: Potrzeby ochrony w systemie wieloprocesorowym Ogólne zasady ochrony zasobów Użytkownik i system Poziomy zaufania Ochrona procesora Ochrona urządzeń wejścia-wyjścia Maszyny wirtualne Sytuacje wyjątkowe: Definicja i podział sytuacji wyjątkowych Zasady obsługi sytuacji wyjątkowych Priorytety sytuacji wyjątkowych Szczególne sytuacje wyjątkowe

Potrzeby ochrony Współczesne komputery pracują, z wieloprocesowymi i wieloużytkowymi systemami operacyjnymi Procesy nie mogą sobie nawzajem przeszkadzać ani się szpiegować żadne błędne lub świadomie destrukcyjne zachowanie procesu nie może powodować zakłóceń w pracy innych procesów i całego systemu proces nie może mieć dostępu do danych innego procesu bez jego wiedzy Konieczne jest wprowadzenie mechanizmów ochrony, które zabezpieczą przed błędnymi lub świadomymi akcjami programów w celu zagwarantowania poprawnej pracy pozostałych procesów

Zasoby podlegające ochronie Procesor proces nie może zmonopolizować czasu procesora inne procesy muszą mieć możliwość wykonywania się (inne aspekty ochrony procesora - w dalszej części wykładu) Pamięć proces może mieć dostęp tylko do przydzielonej mu pamięci ew. do danych współdzielonych - za zgodą innego procesu proces nie powinien odwoływać się do własnej pamięci w nieprawidłowy sposób (np. zapis stałych. odczyt lub zapis kodu, wykonanie danych) Wejście - wyjście dostęp do urządzeń zewnętrznych musi być realizowany w taki sposób, aby procesy nie przeszkadzały sobie nawzajem w praktyce uzyskuje się to przez całkowite uniemożliwienie bezpośrednich odwołań do urządzeń

Użytkownik i system Realizacja mechanizmów ochrony wymaga wyodrębnienia co najmniej dwóch poziomów uprawnień tzw. Poziomów zaufania Procesy użytkowe pracują na poziomie użytkownika, na którym podlegają one zasadom określonym przez system operacyjny System operacyjny pracuje na poziomie systemowym, na którym istnieje możliwość określania zasad ochrony obowiązujących procesy użytkowe Zakłada się, że oprogramowanie działające na poziomie systemowym jest zaufane czyli wolne od błędów Oprogramowanie działające na poziomie użytkownika może zawierać dowolne błędy i nie mogą one wpływać destrukcyjnie na działanie systemu

Poziomy zaufania W prostych realizacjach systemów ochrony występują dwa lub trzy poziomy zaufania poziom jądra systemu pełny dostęp do wszystkich zasobów poziom usług systemu (opcjonalny) dostęp ograniczony, ale o znacznych uprawnieniach poziom użytkownika dostęp do zasobów przydzielonych przez system. na zasadach określonych przez system Dostęp do zasobów zależy od poziomu zaufania w każdej chwili procesor pracuje z określonym poziomem zaufania Informacja o bieżącym poziomie zaufania jest przechowywana w procesorze najczęściej w systemowym rejestrze stanu procesora informacja ta ma postać jednego lub dwóch bitów, w zależności od liczby poziomów zaufania dostępnych w danej architekturze

Poziomy zaufania x86 Cztery poziomy zaufania 0 jądro 1, 2 dodatkowe poziomy systemowe 3 użytkownik Współczesne oprogramowanie korzysta z dwóch poziomów: 0 i 3 Informacja o bieżącym poziomie zaufania jest przechowywana w niewidocznym programowo rejestrze deskryptora segmentu kodu informacja ta ma postać pola 2-bitowego oznaczonego jako CPL(Current Privílege Level)j

Ochrona procesora W celu umożliwienia sterowania mechanizmami ochrony procesor jest wyposażony w rejestry zawierające informacje sterujące np. bieżący poziom zaufania Dostęp do tych rejestrów jest możliwy tylko na poziomie systemowym w przeciwnym razie użytkownik mógłby np. zmienić poziom zaufania na systemowy Rejestry systemowe procesora muszą podlegać ochronie

Egzekwowanie zasad ochrony Każda próba naruszenia zasad ochrony musi być wykryta i udaremniona oraz zgłoszona systemowi operacyjnemu jako wyjątek więcej o wyjątkach w dalszej części wykładu Próba nie dochodzi do skutku i sterowanie przejmuje system operacyjny System ma możliwość zakończenia wykonania procesu naruszającego zasady ochrony i usunięcia go

Ochrona czasu procesora System wieloprocesowy musi przełączać procesy w czasie Proces nie może zmonopolizować procesora nawet jeśli wpadnie w pętlę nieskończoną Praca z przydziałem czasu jest realizowana poprzez periodyczne przejmowanie kontroli przez system operacyjny dzieje się to przez zgłoszenie wyjątku przez zegar systemowy częstotliwość w zależności od potrzeb - od kilkudziesięciu Hz do kilku khz Po przejęciu sterowania system ma możliwość usunięcia procesu dzieje się to zwykle na życzenie użytkownika, który zauważył zawieszenie procesu

Ochrona urządzeń we/wy Zwykle realizowana przez całkowite odizolowanie procesów użytkowych od fizycznych urządzeń próba dostępu jest blokowana i sygnalizowana jako wyjątek Fizyczną obsługą urządzeń zajmuje się system operacyjny system operacyjny udostępnia aplikacjom obiekty wirtualne, które są powiązane z urządzeniami w sposób określony przez sam system przykład strumienie STDIN i STDOUT w języku C W niektórych sytuacjach system może zezwolić na wyłączny dostęp pojedynczego procesu do urządzenia przykład: współpraca ze sterownikiem graficznym dla aplikacji intensywnych graficznie podsystem DirectX w Windows

Ochrona pamięci Ochrona pamięci jest najbardziej skomplikowanym aspektem ochrony zasobów proces musi mieć dostęp do pamięci mu przydzielonej, a jednocześnie nie może odwoływać się poza przedzielony obszar Temat omówiony na poprzednim wykładzie

Maszyny wirtualne W niektórych zastosowaniach może istnieć potrzeba równoczesnej pracy kilku systemów operacyjnych na jednym komputerze Jest to podobne do pracy aplikacji z podziałem czasu, ale system operacyjny musi mieć możliwość sterowania ochroną zasobów Współdzielenie komputera przez kilka systemów wymaga: oprogramowania nadrzędnego w stosunku do systemów - tzw. Hypervisora obniżenia poziomu zaufania systemu w sposób, który nie byłby zauważalny przez pracujący w ten sposób system

Maszyny wirtualne implementacja Dawniej: system na poziomie zaufania użytkownika, hypervisor na poziomie zaufania systemu hypervisor emuluje programowo wszelkie operacje o charakterze systemowym Obecnie: próba dostępu do zasobów systemowych powoduje wyjątek, obsługiwany przez hypervisora wymaganie: każda próba odczytu (a nie tylko modyfikacji) informacji systemowych musi być sygnalizowana jako błąd do hypervisora dodatkowy poziom zaufania hypervisora albo hypervisor na poziomie dawnym systemowym (tzw. gospodarz host) i tryb gościa (guest) dla systemów operacyjnych np. AMD64 operacje na niektórych zasobach dostępne tylko w trybie gospodarza

SYTUACJE WYJĄTKOWE

Wyjątek - definicja Zdarzenie w systemie komputerowym wymagające przerwania wykonania bieżącego strumienia instrukcji i przekazania sterowania do systemu operacyjnego

Podział wyjątków Przerwania Pułapki Błędy

Przerwania Powstają poza procesorem za wyjątkiem asynchronicznego przerwania programowego Asynchroniczne względem wykonywanego strumienia instrukcji ich wystąpienie nie jest bezpośrednim wynikiem wykonania konkretnej instrukcji Służą do sygnalizacji zdarzeń istotnych dla systemu operacyjnego zmiana kontekstu urządzeń zewnętrznych, np.: wciśnięcie klawisza na klawiaturze, przesunięcie myszy nadejście pakietu z sieci lokalnej zakończenie transmisji danych do/z pamięci masowej upłynięcie określonego odcinka czasu zegar systemowv służący do periodycznego przełączania procesów w systemie wieloprocesorowym budzenie procesu o określonym czasie

Pułapki Generowane przez procesor Powodowane przez konkretną instrukcję, na końcu wykonania instrukcji ściśle synchroniczne względem instrukcji Rodzaje: wywołanie usługi systemu operacyjnego przez program użytkowy (często nazywana przerwaniem programowym ) MIPS instrukcja SYSCALL sygnalizacja do systemu operacyjnego błędów wykonania wykrytych przez program użytkowy MIPS instrukcje ADD, SUB w przypadku wystąpienia nadmiaru generują pułapkę x86 instrukcje dzielenia DIV, IDIV, AAM generują pułapkę przy nadmiarze pułapka śledzenia (trace trap) wygenerowana po wykonaniu dowolnej instrukcji przy ustawionym trybie śledzenia

Błędy Generowane na ogół przez procesor zarówno przez jednostkę wykonawczą jak i przez jednostkę zarządzania pamięcią wyjątek błąd transmisji generowany poza procesorem Wynikają z wykonywanych instrukcji, ale nie zawsze w sposób jednoznaczny Służą do sygnalizacji błędnych i niedozwolonych zachowań oprogramowania i sprzętu próba wykonania niezdefiniowanej instrukcji błąd wyrównania przy dostępie do pamięci naruszenie zasad ochrony Procesora Pamięci Wykorzystywane do implementacji systemu pamięci wirtualnej

Obsługa wyjątków Każdy wyjątek musi być obsłużony Istnieją dwa pojęcia obsługi: na poziomie oprogramowania - reakcja programowa systemu operacyjnego na zdarzenie np. przesłanie kolejnej porcji danych do urządzenia zgłaszającego gotowość przełączenie procesów przy przerwaniu zegarowym na poziomie procesora zespół czynności, których efektem jest zaniechanie wykonywania bieżącego strumienia instrukcji i rozpoczęcie wykonania programowej procedury systemu operacyjnego obsługa wyjątku przez system operacyjny rozpoczyna się z chwilą zakończenia obsługi wyjątku przez procesor

Fazy obsługi wyjątków przez procesor Rozpoznanie i identyfikacja źródła wyjątku Przerwanie wykonania strumienia instrukcji i zapamiętanie bieżącego kontekstu procesora Załadowanie nowego kontekstu procesora i rozpoczęcie wykonywania nowego strumienia instrukcji procedury systemowej zapewniającej programową reakcję systemu na wyjątek

Identyfikacja wyjątku Jeśli wyjątek powstał w procesorze (pułapka, błąd) procesor zna dokładną jego przyczynę identyfikacja jest zbędna Przerwania: w zależności od budowy systemu przerwań identyfikacja może być przeprowadzona później przez oprogramowanie albo w chwili wykrycia wyjątku przez sprzęt procesora identyfikacja przez procesor wymaga przeprowadzenia zapytania, w postaci specjalnego cyklu transmisji cyklu identyfikacji przerwania w odpowiedzi na cykl identyfikacji procesor otrzymuje z zewnątrz identyfikator przerwania w postaci liczby o długości od 4 do 9 bitów X86 8 bitów M88k 9 bitów mikrokontrolery 8- i 16-bitowe 4 8 bitów identyfikator jest generowany przez układ arbitrażu przerwań

Zapamiętanie kontekstu Co zapamiętywać? informacje o stanie procesora, które zostaną samoczynnie zmodyfikowane przez procesor w czasie obsługi wyjątku zawsze PC i rejestr stanu z informacjami systemowymi rejestry uniwersalne zbędne, bo może to zrobić oprogramowanie informacje niezbędne do rozpoznania dokładnej przyczyny wyjątku, a które mogą zostać zamazane w trakcie wykonania programu informacje o odwołaniu do pamięci przy błędzie dostępu Gdzie zapamiętywać? w miejscu naturalnym dla danej architektury Po co? CISC na stosie RISC zwykle w rejestrach powrót po obsłudze komunikat diagnostyczny w przypadku usunięcia błędnego procesu

Składowanie kontekstu licznik rozkazów Zapamiętywany w celu powrotu do przerwanego programu lub wyświetlenia komunikatu o błędzie Podczas wyjątku wartość nextpc nie zawsze jest dostępna błędy przerywają wykonanie instrukcji instrukcja niedokończona Zapamiętywana wartość: nextpc wskazuje na następną instrukcję po tej, w czasie której wykryto wyjątek przerwania pułapki wywołania systemu i śledzenia currentpc wskazuje na bieżącą instrukcję pułapki sygnalizujące błąd wykonania (potrzebna identyfikacja miejsca błędu) błędy wykonanie instrukcji było niemożliwe jeśli nastąpi powrót, to ponownie do tej samej instrukcji Niektóre procesory RISC zapamiętują nextpc+4 lub nextpc+8

Zmiany kontekstu systemowego w czasie obsługi wyjątku Obsługa wyjątku powoduje zawsze przejście w tryb systemowy podczas wystąpienia wątku procesor mógł być w trybie systemowym lub użytkownika należy zapamiętać poziom zaufania z chwili wystąpienia wyjątku Przy obsłudze wyjątku jest wyłączany tryb śledzenia bit śledzenia znajduje się w rejestrze stanu procesora Przy obsłudze przerwania procesor zmienia poziom wrażliwości na przerwanie należy zapamiętać poziom wrażliwości (tzw. maskę przerwań) z chwili wystąpienia przerwania Wszystkie powyższe informacje znajdują się zwykle w systemowym rejestrze stanu procesora podczas obsługi wyjątków należy zapamiętać systemowy rejestr stanu

Składowanie PC i rejestru stanu W procesorach RISC: zawartość PC i SR kopiowana do rejestrów cieni alternatywa przełączenie banku rejestrów (w procesorach z oddzielnymi rejestrami do obsługi wyjątków) W procesorach CISC: PC i SR zapamiętywane na stosie program użytkowy nie daje gwarancji integralności stosu wartość SP może być nieważna kontekst jest składowany na stosie systemowym każdemu poziomowi zaufania odpowiada oddzielny stos kolejność czynności: utworzenie tymczasowej kopii rejestru stanu przełączenie w tryb systemowy (modyfikacja rejestru stanu) zapamiętanie tymczasowej kopii rejestru stanu na stosie systemowym

Przełączanie stosów w procesorach CISC Każdemu poziomowi zaufania odpowiada oddzielny stos Przy zmianie poziomu zaufania następuje przełączenie stosów można to zrealizować na dwa sposoby oddzielny rejestr wskaźnika stosu dla każdego poziomu zaufania (np. M68k) przeładowanie wskaźnika stosu przez procesor przy użyciu wartości zapisanych w pamięci (np. x86) Na danym poziomie zaufania oprogramowanie może mieć dostęp do własnego wskaźnika stosu i wskaźników stosów poziomów mniej zaufanych oprogramowanie systemowe może inicjować wskaźnik stosu użytkownika instrukcje dostępu do alternatywnych wskaźników stosu są dozwolone tylko w trybie systemowym

Informacje potrzebne do obsługi błędu Błąd różni się od innych wyjątków tym, że uniemożliwia wykonanie bieżącej instrukcji nextpc jest niedostępny lub nieważny zapamiętuje się currpc Błąd sygnalizowany przez MMU może wynikać z pobrania instrukcji lub z dostępu do danych do identyfikacji przyczyny błędu potrzebna jest informacja o adresie i rodzaju odwołania, które spowodowało błąd sam adres instrukcji nie umożliwia jednoznacznej identyfikacji przyczyny błędu Niektóre architektury umożliwiają wykonywanie odwołań w trybie systemowym z poziomem zaufania użytkownika ułatwia to ochronę systemu poziom zaufania odwołania musi być w takim przypadku zapamiętany niezależnie od poziomu zaufania procesora

Informacje zapamiętywane przy błędzie strony x86 Na stosie systemowym: rejestr stanu procesora adres instrukcji, która spowodowała błąd kod błędu słowo 32-bitowe bit 0: 0 deskryptor nieważny, 1 błąd ochrony bit 1: 0 błąd podczas odczytu, 1 błąd podczas zapisu bit 2: 0 błąd w trybie systemowym, 1 błąd w trybie użytkownika bit 3: 1 jeśli w deskryptorze strony napotkano ustawiony bit zarezerwowany bit 4: 1 jeśli błąd powstał podczas pobierania instrukcji W rejestrze systemowym CR2 adres odwołania, które spowodowało błąd

System przerwań Procesor może pracować na wielu poziomach priorytetowych różniących się wrażliwością na przerwania jednopoziomowy system przerwań (np. x86) dwa poziomy: przerwania zablokowane przerwania odblokowane wielopoziomowy system przerwań 3 16 poziomów wrażliwości przerwania przypisane do poziomów priorytetowych przerwania od szybkich urządzeń wyższe poziomy przerwania od wolnych urządzeń niższe poziomy Informacja o aktualnym poziomie wrażliwości jest przechowywana w rejestrze stanu procesora jest to tzw. maska przerwań poziom może być zmieniany tylko przez oprogramowanie systemowe wykonanie niektórych procedur jądra wymaga zablokowania przerwań (sekcje krytyczne)

Zmiany poziomu wrażliwości Podczas obsługi przerwania procesor modyfikuje poziom wrażliwości tak, aby nie były przyjmowane następne przerwania o poziomie tym samym lub niższym, co aktualnie obsługiwane w przypadku jednopoziomowego systemu przerwań oznacza to zablokowanie przerwań Ponieważ poziom jest samoczynnie zmieniany, dotychczasowy poziom musi być zapamiętany podczas obsługi przerwania Istnieją przerwania obsługiwane niezależnie od ustawionego w procesorze poziomu maski przerwań są to tzw. Przerwania niemaskowalne przerwań niemaskowalncvh używa się do sygnalizacji sytuacji krytycznych, np. awarii zasilania

Załadowanie nowego kontekstu Po zapamiętaniu informacji potrzebnych do obsługi wyjątku i ew. powrotu z tej obsługi, procesor rozpoczyna wykonanie systemowej procedury obsługi wyjątku nowe wartości są ładowane do licznika rozkazów, rejestru stanu i ew. w niektórych architekturach również do innych rejestrów Typowe rozwiązania: wspólny punkt wejścia dla wszystkich wyjątków, procedura obsługi identyfikuje rodzaj wyjątku na drodze programowej i wywołuje odpowiedni podprogram (np. MIPS) kilka lub kilkanaście ustalonych adresów początkowych procedur obsługi wyjątków (niektóre mikrokontrolery) tablica adresów lub struktur danych opisujących procedury obsługi - tzw. wektorowy system przerwań stosowany w większości procesorów uniwersalnych i w bardziej rozbudowanych mikrokontrolerach

Wektorowy system obsługi wyjątków Informacja uzyskana w fazie identyfikacji źródła wyjątku ma postać liczby W pamięci jest przechowywana tablica, której każdy element zawiera informacje potrzebne do wywołania procedury obsługi wyjątku tablica ta zajmuje ustalone miejsce w przestrzeni adresowej (zwykle na początku lub na końcu) albo jest wskazywany przez specjalny rejestr systemowy W zależności od architektury, element tablicy może zawierać: adres początkowy procedury (np. M68k) jedną lub więcej instrukcji procedury (zwykle jest to instrukcja skoku do właściwej procedury) ARM, 51, Alpha AXP deskryptor zawierający adres początkowy procedury i inne informacje x86

Wyjątki w x86 Numer Symbol Opis 0 #DE Nadmiar dzielenia stałopozycyjnego 1 #DB Zarezerwowane 2 Przerwanie niemaskowalne (NMI) 3 #BP Pułapka śledzenia, jednostka wspomagania uruchamiania 4 #OF Pułapka przy nadmiarze 5 #BR Przekroczenie zakresu danej instrukcja BOUND 6 #UD Niezdefiniowany kod operacyjny 7 #NM Brak jednostki zmiennopozycyjnej 8 #DF Błąd podwójny 10 #TS Wyjątek związany z przełączaniem zadań (TSS) 11 #NP Nieważny deskryptor segmentu 12 #SS Błąd dostępu do segmentu stosu 13 #GP Ogólny błąd ochrony (jednostka segmentacji) 14 #PF Błąd stronicowania 15 Zarezerwowane 16 #MF Błąd obliczeń jednostki zmiennopozycyjnej x87 17 #AC Błąd wyrównywania danych 18 #MC Błąd sprzętowy procesora 19 #XF Wyjątek (błąd obliczeń) jednostki SSE

Wyjątki w ARM7 Procesor rozpoznaje 8 wyjątków 0 inicjowanie systemu 1 niezidentyfikowana instrukcja 2 pułapka wywołania systemu (SWI software interrupt) 3 błąd pobrania instrukcji 4 błąd dostępu do danych 5 ( pusty) 6 przerwanie (IRQ) 7 przerwanie szybkie (FIQ) Podczas obsługi następuje skok do adresu 4 * nurner_wyjątku pod adresem tym znajduje się instrukcja skoku do właściwej procedury obsługi dla ostatniego wyjątku przerwania szybkiego procedura może zaczynać się od adresu 0x1C, bo jest to ostatni element tablicy

ARM7 obsługa wyjątków

Powrót z obsługi wyjątku Nie z każdej obsługi wyjątku powrót jest możliwy błąd ochrony może wymagać zamknięcia programu Powrót polega na odtworzeniu informacji zapamiętanych podczas obsługi (co najmniej PC i rejestr stanu) służy do tego specjalna instrukcja powrotu z obsługi wyjątku instrukcja ta jest dozwolona wyłącznie w trybie systemowym, w przeciwnym razie użytkownik mógłby załadować nową wartość rejestru stanu i zmienić poziom zaufania na systemowy W praktyce systemów operacyjnych obsługa wyjątku często kończy się przełączeniem procesu powrót z wyjątku następuje do innego strumienia instrukcji, niż strumień przerwany przez wątek wykorzystywany mechanizm jest identyczny jak przy powrocie do przerwanego strumienia instrukcji

Asynchroniczne przerwanie programowe Mechanizm implementowany w niektórych procesorach pożyteczny w systemach czasu rzeczywistego Umożliwia zgłoszenie asynchronicznego, maskowalnego przerwania przez sam procesor Przerwanie zostaje obsłużone, gdy poziom wrażliwości procesora na przerwania osiągnie odpowiednią wartość Zwykle używa się tego mechanizmu do zgłoszenia przerwania o niższym priorytecie z procedury obsługi przerwania o wyższym priorytecie cel: kontynuacja akcji wynikających z przerwania przy zachowaniu możliwości reakcji na przerwania o niższych priorytetach można w ten sposób uniknąć inwersji priorytetów, czyli sytuacji, gdy procesor wykonuje czynność o niskim priorytecie jednocześnie nie obsługując przerwania o wyższym priorytecie

Błąd podwójny Podczas obsługi sytuacji wyjątkowych procesory CISC wykonują serię odwołań do pamięci (składowanie kontekstu, ładowanie nowego kontekstu) nie wynikających z wykonania instrukcji Podczas tych odwołań procesor nie ma ważnej wartości licznika rozkazów Odwołania te mogą spowodować błąd związany z zarządzaniem pamięciąj

Inicjowanie działania procesora - Reset W wielu procesorach inicjowanie działania jest traktowane jako wyjątek o najwyższym priorytecie Powoduje natychmiastowe przekazanie sterowania pod ustalony adres Nie wymaga składowania kontekstu

Priorytety sytuacji wyjątkowych Priorytet określa pilność obsługi danego wyjątku Dwa aspekty priorytetów odpowiadają dwóm pojęciom obsługi na poziomie procesora na poziomie systemu operacyjnego Priorytety na poziomie systemu wynikają z pilności zdarzenia przerwania krytyczne czasowo pułapki (wywołanie systemu) decyduje o wydajności aplikacji Błędy usunięcie programu, pamięć wirtualna Priorytety na poziomie procesora wynikają z logicznej sekwencji czynności w procesorze błędy w razie błędu nie można zakończyć wykonania instrukcji pułapki obsługa stanowi ostatnią fazę wykonania instrukcji przerwania obsługiwane po zakończeniu wykonania instrukcji

DZIĘKUJĘ ZA UWAGĘ!