Przerwania Funkcje systemowe Przerwanie Przerwanie to pewien sygna

  • Slides: 33
Download presentation
Przerwania. Funkcje systemowe.

Przerwania. Funkcje systemowe.

Przerwanie • Przerwanie to pewien sygnał skierowany do procesora. Może pochodzić ze sprzętu lub

Przerwanie • Przerwanie to pewien sygnał skierowany do procesora. Może pochodzić ze sprzętu lub oprogramowania. • Przerwanie powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury obsługi przerwania (ang. interrupt handler).

Rodzaje przerwań • Sprzętowe: – Zewnętrzne – sygnał przerwania pochodzi z zewnętrznego układu obsługującego

Rodzaje przerwań • Sprzętowe: – Zewnętrzne – sygnał przerwania pochodzi z zewnętrznego układu obsługującego przerwania sprzętowe; przerwania te służą do komunikacji z urządzeniami zewnętrznymi, np. z klawiaturą, napędami dysków itp. – Wewnętrzne, nazywane wyjątkami (ang. exceptions) – zgłaszane przez procesor dla sygnalizowania sytuacji wyjątkowych (np. dzielenie przez zero); dzielą się na trzy grupy: • faults (niepowodzenie) – gdy dana instrukcja wywoła błąd, który da się naprawić i można powrócić do dalszego wykonywania • traps (pułapki) – gdy nie wystąpił błąd, a jedynie wcześniej zaplanowane wykonanie przerwania (stosowane często przy debugowaniu aplikacji) • aborts (nienaprawialne). • Programowe – z kodu programu wywoływana jest procedura obsługi przerwania; najczęściej wykorzystywane do komunikacji z systemem operacyjnym, który w procedurze obsługi przerwania (np. w DOS 21 h, Windows 2 fh, Linux x 86 przerwanie 80 h) umieszcza kod wywołujący odpowiednie funkcje systemowe w zależności od zawartości rejestrów ustawionych przez program wywołujący.

Przerwania sprzętowe • Przerwania posiadają numery – różne urządzenia skojarzone są z różnymi numerami

Przerwania sprzętowe • Przerwania posiadają numery – różne urządzenia skojarzone są z różnymi numerami • Numery te skojarzone są z tzw. linią żądania przerwania IRQ. Linii tej przypisana jest wartość liczbowa, np. : – IRQ 0 – przerwanie zegarowe – IRQ 1 – przerwanie klawiatury

Procedura obsługi przerwania sprzętowego • • • Przykład obsługi interfejsu sieciowego przy odbieraniu pakietu:

Procedura obsługi przerwania sprzętowego • • • Przykład obsługi interfejsu sieciowego przy odbieraniu pakietu: Poinformowanie urządzenia o przyjęciu przerwania Skopiowanie pakietu sieciowego z bufora urządzenia do pamięci operacyjnej Przetworzenie pakietu „Przepchnięcie” przez właściwy stos protokołów Przekazanie do aplikacji docelowej

Procedura obsługi przerwania sprzętowego Przykład obsługi interfejsu sieciowego przy odbieraniu pakietu: • Poinformowanie urządzenia

Procedura obsługi przerwania sprzętowego Przykład obsługi interfejsu sieciowego przy odbieraniu pakietu: • Poinformowanie urządzenia o przyjęciu przerwania • Skopiowanie pakietu sieciowego z bufora urządzenia do pamięci operacyjnej • Przetworzenie pakietu • „Przepchnięcie” przez właściwy stos protokołów • Przekazanie do aplikacji docelowej

Co to jest Bios ? ● Jest przechowywany w kości pamięci ROM ● podstawowe

Co to jest Bios ? ● Jest przechowywany w kości pamięci ROM ● podstawowe procedury wejścia/wyjścia ● zbiór procedur napisanych w Asemblerze, sterujących wykonywaniem podstawowych funkcji komputera: obsługa dysku, karty video, portu drukarki itd.

DOS ● ● program , który kontroluje komputer i jego zasoby od momentu jego

DOS ● ● program , który kontroluje komputer i jego zasoby od momentu jego włączenia aż do wyłączenia. poprzez funkcje DOS programy użytkowe mogą czytać pliki, zapisywać je do pamięci, kontrolować naciskanie klawiszy klawiatury, uruchamiać inne programy, ustawiać datę i czas.

Funkcje BIOS , DOS ● ● Funkcje BIOS uzupełniają DOS (system operacyjny) w zakresie

Funkcje BIOS , DOS ● ● Funkcje BIOS uzupełniają DOS (system operacyjny) w zakresie kontroli nad sprzętem. Spośród wielu zastosowań funkcji BIOS jednym z nich jest użycie go w celu sterowania monitorem ekranowym. Tylko przez przywoływanie funkcji BIOS można ustawić tryb pracy monitora, mieć kontrolę nad kolorami, sposobem wyświetlania itp. np: MOV AH, 0 MOV AL, 4 INT 10 h ; tryb ustawienia BIOS ; nr trybu dla 4 -kolorowej grafiki 320 x 200 (CGA) ; wykonaj przerwanie BIOS ustawiające tryb video

Tablica wektorów przerwań ● ● ● Na samym początku pamięci , w segmencie 0

Tablica wektorów przerwań ● ● ● Na samym początku pamięci , w segmencie 0 , znajduje się specjalna tabela skoków posiadająca 256 pozycji. 256 wektorów x 4 bajty dla jednego wektora każdy adres z tej tabeli skoków nazywamy wektorem przerwania.

Tablica wektorów przerwań ● ● Adresy programów obsługi przerwań są wpisywane do tablicy wektorów

Tablica wektorów przerwań ● ● Adresy programów obsługi przerwań są wpisywane do tablicy wektorów przerwań przy ładowaniu systemu operacyjnego przez BIOS i przez system operacyjny istnieje specjalna instrukcja CPU służąca do "używania" tabeli wektorów. Instrukcja → INT np. INT 21 h

Przerwania BIOS-u ● int 10 h (przerwanie karty graficznej) ● int 13 h (obsługa

Przerwania BIOS-u ● int 10 h (przerwanie karty graficznej) ● int 13 h (obsługa dysków) ● int 16 h (obsługa klawiatury) ● Int 17 h (obsługa drukarki)

Przykładowa funkcja przerwania BIOS-u 16 h (obsługa klawiatury) funkcja 0 - pobierz kod naciśniętego

Przykładowa funkcja przerwania BIOS-u 16 h (obsługa klawiatury) funkcja 0 - pobierz kod naciśniętego klawisza (lub czekaj na naciśnięcie): Argumenty: ➔ AH = 0 Zwraca: ➔ AH = BIOSowy kod klawisza (skankod) ➔ AL = kod klawisza ASCII

Przerwania BIOS-u Dziś już nie są one używane przez nowoczesne systemy operacyjne, takie jak

Przerwania BIOS-u Dziś już nie są one używane przez nowoczesne systemy operacyjne, takie jak Linux. Powodów po temu jest kilka: ● ● przerwania BIOS-u muszą pracować w trybie rzeczywistym. Linux ich nie może używać gdyż sam pracuje w trybie chronionym (a przełączanie się jest zbyt kosztowne) przerwania BIOS-u są wolniejsze od bezpośredniej obsługi urządzeń przerwania BIOS-u zmniejszają bezpieczeństwo systemu (np: również dzięki nim w systemie operacyjnym DOS można było odczytać dowolną informację z dysku); przerwania te nie zapewniają wsparcia dla nowych typów urzadzeń.

Przykładowa funkcja przerwania DOS'a 21 h Funkcja 09 h - wyświetl napis: Argumenty: ➔

Przykładowa funkcja przerwania DOS'a 21 h Funkcja 09 h - wyświetl napis: Argumenty: ➔ AH = 9 ➔ DS: DX = adres łańcucha znaków zakończonego znakiem dolara "$"

Przykładowa funkcja przerwania DOS'a 21 h Funkcja 01 h - czytaj klawisz: Argumenty: ➔

Przykładowa funkcja przerwania DOS'a 21 h Funkcja 01 h - czytaj klawisz: Argumenty: ➔ AH = 1 Zwraca: ➔ AL = kod klawisza ASCII

Przykładowa funkcja przerwania DOS'a 21 h Funkcja 4 Ch - zakończenie działania bieżącego programu:

Przykładowa funkcja przerwania DOS'a 21 h Funkcja 4 Ch - zakończenie działania bieżącego programu: Argumenty: ➔ AH = 4 Ch ➔ AL = 0 → kod wyjścia (errorlevel) zwracany systemowi operacyjnemu

Przerwanie systemowe Linuksa int 80 h MOV EAX, <numer_funkcji> Jeśli jakaś funkcja zakończy się

Przerwanie systemowe Linuksa int 80 h MOV EAX, <numer_funkcji> Jeśli jakaś funkcja zakończy się błędem, w EAX zwracana jest wartość ujemna z przedziału od -4096 do -1 włącznie

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX Opis Argumenty Zwraca 1 Wyjście z

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX Opis Argumenty Zwraca 1 Wyjście z programu (sys_exit) EBX= kod wyjścia (errorlevel) nie wraca do programu wywołującego

Przerwanie systemowe Linuksa 80 h Funkcja numer 1 (wyjście z programu) . . .

Przerwanie systemowe Linuksa 80 h Funkcja numer 1 (wyjście z programu) . . . MOV EAX, 1 ; numer funkcji systemowej ; (sys_exit - wyjdź z programu) INT 80 h ; wywołanie funkcji systemowej

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 5 Opis Otwarcie pliku (sys_open) Argumenty

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 5 Opis Otwarcie pliku (sys_open) Argumenty Zwraca EBX = adres nazwy pliku ASCIIZ ECX = bity dostępu EDX = prawa dostępu / tryb EAX=deskryptor pliku EAX = błąd EACCES, EEXIST, EFAULT, EISDIR, ELOOP, EMFILE, ENAMETOOLONG, ENFILE, ENOENT, ENODEV, ENODIR, ENOMEM, ENOSPC, ENXIO, EROFS, ETXTBSY

Przerwanie systemowe Linuksa 80 h Funkcja numer 5 (otwarcie pliku). . . MOV EAX,

Przerwanie systemowe Linuksa 80 h Funkcja numer 5 (otwarcie pliku). . . MOV EAX, 5 ; numer funkcji systemowej: MOV EBX, plik ; adres nazwy pliku MOV ECX, 2 ; 2 - otwieranie do odczytu i zapisu MOV EDX, 111000000 b ; 700 - zabroń innym dostępu INT 80 h ; jeśli udalo się otworzyc plik … ; w EAX znajdzie się deskryptor pliku section. data plik db "nazwa. txt", 0 ; nazwa pliku

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 4 Opis Zapis do pliku (sys_write)

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 4 Opis Zapis do pliku (sys_write) Argumenty Zwraca EBX = deskryptor EAX=liczba pliku przeczytanych ECX = adres bajtów bufora EAX = błąd źródłowego EAGAIN, EBADF, EDX = liczba EFAULT, EINTR, bajtów do EINVAL, EIO, zapisania ENOSPC, EPIPE

Przerwanie systemowe Linuksa 80 h Funkcja numer 4 (zapis do pliku). . . MOV

Przerwanie systemowe Linuksa 80 h Funkcja numer 4 (zapis do pliku). . . MOV EAX, 4 ; numer funkcji systemowej: ; sys_write - zapisz do pliku MOV EBX, 1 ; numer pliku, do którego pisze. ; 1 = standardowe wyjście = ekran MOV ECX, tekst ; ECX = adres (offset) tekstu MOV ; EDX = długość tekstu EDX, dlugosc INT 80 h ; wywołanie funkcji systemowej . . . section. data tekst DB "Czesc", 0 ah ; napis dlugosc EQU $ - tekst ; długość napisu

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 6 Opis Argumenty Zamknięcie pliku EBX=

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 6 Opis Argumenty Zamknięcie pliku EBX= deskryptor (sys_close) pliku Zwraca EAX = 0 EAX = błąd EBADF, EINTR, EIO

Przerwanie systemowe Linuksa 80 h Funkcja numer 6 (zamknięcie pliku) … MOV EAX, 6

Przerwanie systemowe Linuksa 80 h Funkcja numer 6 (zamknięcie pliku) … MOV EAX, 6 ; numer funkcji systemowej: MOV EBX, <deskryptor_pliku> ; EBX = deskryptor pliku INT 80 h. . .

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 3 Opis Czytanie z pliku (sys_read)

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 3 Opis Czytanie z pliku (sys_read) Argumenty Zwraca EBX = deskryptor EAX=liczba pliku przeczytanych ECX = adres bajtów bufora EAX = błąd docelowego EAGAIN, EBADF, EDX = liczba EFAULT, EINTR, bajtów do EINVAL, EIO, przeczytania EISDIR

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 19 Opis Argumenty Zwraca EBX =

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 19 Opis Argumenty Zwraca EBX = deskryptor EAX = nowa pliku pozycja ECX = liczba Zmiana bieżącej względem bajtów, o którą pozycji w pliku początku pliku chcemy się EAX = błąd (sys_lseek) przesunąć EBADF, EINVAL, EDX = odkąd EISPIPE zaczynamy ruch

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX Opis 20 Pobierz identyfikator bieżącego procesu

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX Opis 20 Pobierz identyfikator bieżącego procesu (sys_getpid) Argumenty Zwraca nic EAX = PID bieżącego procesu

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 39 Opis Utwórz katalog (sys_mkdir) Argumenty

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 39 Opis Utwórz katalog (sys_mkdir) Argumenty Zwraca EBX = adres ścieżki/nazwy ASCIIZ ECX = prawa dostępu / tryb EAX = 0 EAX = błąd - każdy związany z systemem plików lub prawami dostępu

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 40 Opis Usuń katalog (sys_rmdir) Argumenty

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 40 Opis Usuń katalog (sys_rmdir) Argumenty Zwraca EBX= adres ścieżki/nazwy ASCIIZ EAX = 0 EAX = błąd EACCES, EBUSY, EFAULT, ELOOP, ENAMETOOLO NG, ENOENT, ENOMEM, ENOTDIR, ENOTEMPTY, EPERM, EROFS

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 41 Opis Zduplikuj deskryptor pliku (sys_dup)

Przykładowa funkcja przerwania systemowego Linuksa 80 h EAX 41 Opis Zduplikuj deskryptor pliku (sys_dup) Argumenty Zwraca EBX= stary deskryptor EAX = nowy deskryptor EAX = błąd EBADF, EMFILE (, EINVAL)

Wywołania systemowe Stanowią interfejs między wykonywanym programem a (posiadającym zwykle wyższe uprawnienia) jądrem systemu

Wywołania systemowe Stanowią interfejs między wykonywanym programem a (posiadającym zwykle wyższe uprawnienia) jądrem systemu operacyjnego.