1 / 33

Przerwania. Funkcje systemowe.

Przerwania. Funkcje systemowe. 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).

india
Télécharger la présentation

Przerwania. Funkcje systemowe.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Przerwania. Funkcje systemowe.

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

  3. 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 21h, Windows 2fh, Linux x86 przerwanie 80h) umieszcza kod wywołujący odpowiednie funkcje systemowe w zależności od zawartości rejestrów ustawionych przez program wywołujący.

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

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

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

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

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

  9. 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 ; tryb ustawienia BIOS MOV AL,4 ; nr trybu dla 4-kolorowej grafiki 320x200 (CGA) INT 10h ; wykonaj przerwanie BIOS ustawiające tryb video

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

  11. 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 21h

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

  13. Przykładowa funkcja przerwania BIOS-u 16h (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

  14. Przerwania BIOS-u 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ń. Dziś już nie są one używane przez nowoczesne systemy operacyjne, takie jak Linux. Powodów po temu jest kilka:

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

  16. Przykładowa funkcja przerwaniaDOS'a 21h Funkcja 01h - czytaj klawisz: Argumenty: AH = 1 Zwraca: AL = kod klawisza ASCII

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

  18. Przerwanie systemowe Linuksa int 80h 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

  19. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

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

  21. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

  22. Przerwanie systemowe Linuksa 80hFunkcja 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, 111000000b ; 700 - zabroń innym dostępu INT 80h ; jeśli udalo się otworzyc plik … ; w EAX znajdzie się deskryptor pliku section .data plik db "nazwa.txt",0 ; nazwa pliku

  23. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

  24. Przerwanie systemowe Linuksa 80hFunkcja 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, dlugosc ; EDX = długość tekstu INT 80h ; wywołanie funkcji systemowej ... section .data tekst DB "Czesc", 0ah ; napis dlugosc EQU $ - tekst ; długość napisu

  25. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

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

  27. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

  28. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

  29. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

  30. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

  31. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

  32. Przykładowa funkcja przerwaniasystemowego Linuksa 80h

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

More Related