Przerwania. Funkcje systemowe.

33
Przerwania. Funkcje systemowe.

description

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). - PowerPoint PPT Presentation

Transcript of Przerwania. Funkcje systemowe.

Page 1: Przerwania.  Funkcje systemowe.

Przerwania. Funkcje systemowe.

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

Page 3: Przerwania.  Funkcje systemowe.

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.

Page 4: Przerwania.  Funkcje systemowe.

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

Page 5: Przerwania.  Funkcje systemowe.

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

Page 6: Przerwania.  Funkcje systemowe.

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

Page 7: Przerwania.  Funkcje systemowe.

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.

Page 8: Przerwania.  Funkcje systemowe.

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.

Page 9: Przerwania.  Funkcje systemowe.

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

Page 10: Przerwania.  Funkcje systemowe.

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.

Page 11: Przerwania.  Funkcje systemowe.

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

Page 12: Przerwania.  Funkcje systemowe.

Przerwania BIOS-u

● int 10h (przerwanie karty graficznej)

● int 13h (obsługa dysków)

● int 16h (obsługa klawiatury)

● Int 17h (obsługa drukarki)

Page 13: Przerwania.  Funkcje systemowe.

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

Page 14: Przerwania.  Funkcje systemowe.

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:

Page 15: Przerwania.  Funkcje systemowe.

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 "$"

Page 16: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniaDOS'a 21h

Funkcja 01h - czytaj klawisz:

Argumenty:➔ AH = 1

Zwraca:➔ AL = kod klawisza ASCII

Page 17: Przerwania.  Funkcje systemowe.

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

Page 18: Przerwania.  Funkcje systemowe.

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

Page 19: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

1Wyjście z programu (sys_exit)

EBX= kod wyjścia

(errorlevel)

nie wraca do programu

wywołującego

Page 20: Przerwania.  Funkcje systemowe.

Przerwanie systemowe Linuksa 80h

Funkcja numer 1 (wyjście z programu)

...

MOV EAX, 1 ; numer funkcji systemowej

; (sys_exit - wyjdź z programu)

INT 80h ; wywołanie funkcji systemowej

Page 21: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

5 Otwarcie pliku (sys_open)

EBX = adres nazwy pliku

ASCIIZECX = bity

dostępuEDX = 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

Page 22: Przerwania.  Funkcje systemowe.

Przerwanie systemowe Linuksa 80h

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, 111000000b ; 700 - zabroń innym dostępu

INT 80h ; jeśli udalo się otworzyc plik

… ; w EAX znajdzie się deskryptor pliku

section .dataplik db "nazwa.txt",0 ; nazwa pliku

Page 23: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

4 Zapis do pliku (sys_write)

EBX = deskryptor pliku

ECX = adres bufora

źródłowegoEDX = liczba

bajtów do zapisania

EAX=liczba przeczytanych

bajtówEAX = błąd

EAGAIN, EBADF, EFAULT, EINTR,

EINVAL, EIO, ENOSPC, EPIPE

Page 24: Przerwania.  Funkcje systemowe.

Przerwanie systemowe Linuksa 80h

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, dlugosc ; EDX = długość tekstu

INT 80h ; wywołanie funkcji systemowej

...

section .datatekst DB "Czesc", 0ah ; napisdlugosc EQU $ - tekst ; długość napisu

Page 25: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

6 Zamknięcie pliku (sys_close)

EBX= deskryptor pliku

EAX = 0EAX = błąd

EBADF, EINTR, EIO

Page 26: Przerwania.  Funkcje systemowe.

Przerwanie systemowe Linuksa 80h

Funkcja numer 6 (zamknięcie pliku)

MOV EAX, 6 ; numer funkcji systemowej:

MOV EBX, <deskryptor_pliku> ; EBX = deskryptor pliku

INT 80h

...

Page 27: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

3 Czytanie z pliku (sys_read)

EBX = deskryptor pliku

ECX = adres bufora

docelowegoEDX = liczba

bajtów do przeczytania

EAX=liczba przeczytanych

bajtówEAX = błąd

EAGAIN, EBADF, EFAULT, EINTR,

EINVAL, EIO, EISDIR

Page 28: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

19Zmiana bieżącej pozycji w pliku (sys_lseek)

EBX = deskryptor pliku

ECX = liczba bajtów, o którą

chcemy się przesunąć

EDX = odkąd zaczynamy ruch

EAX = nowa pozycja

względem początku pliku

EAX = błąd EBADF, EINVAL,

EISPIPE

Page 29: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

20Pobierz

identyfikator bieżącego procesu

(sys_getpid)

nicEAX = PID bieżącego procesu

Page 30: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

39 Utwórz katalog (sys_mkdir)

EBX = adres ścieżki/nazwy

ASCIIZECX = prawa dostępu / tryb

EAX = 0EAX = błąd -

każdy związany z systemem plików lub prawami dostępu

Page 31: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

40 Usuń katalog (sys_rmdir)

EBX= adres ścieżki/nazwy

ASCIIZ

EAX = 0EAX = błąd EACCES, EBUSY, EFAULT, ELOOP,

ENAMETOOLONG, ENOENT,

ENOMEM, ENOTDIR,

ENOTEMPTY, EPERM, EROFS

Page 32: Przerwania.  Funkcje systemowe.

Przykładowa funkcja przerwaniasystemowego Linuksa 80h

EAX Opis Argumenty Zwraca

41Zduplikuj

deskryptor pliku (sys_dup)

EBX= stary deskryptor

EAX = nowy deskryptorEAX = błąd

EBADF, EMFILE

(,EINVAL)

Page 33: Przerwania.  Funkcje systemowe.

Wywołania systemowe

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