Przerwania funkcje systemowe
Sponsored Links
This presentation is the property of its rightful owner.
1 / 33

Przerwania. Funkcje systemowe. PowerPoint PPT Presentation


  • 216 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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


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.


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:

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


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


Przerwania BIOS-u

int 10h (przerwanie karty graficznej)

int 13h (obsługa dysków)

int 16h (obsługa klawiatury)

Int 17h (obsługa drukarki)


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


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:


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


Przykładowa funkcja przerwaniaDOS'a 21h

Funkcja 01h - czytaj klawisz:

Argumenty:

AH = 1

Zwraca:

AL = kod klawisza ASCII


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


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


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przerwanie systemowe Linuksa 80hFunkcja numer 1 (wyjście z programu)

...

MOVEAX, 1; numer funkcji systemowej

; (sys_exit - wyjdź z programu)

INT 80h; wywołanie funkcji systemowej


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przerwanie systemowe Linuksa 80hFunkcja numer 5 (otwarcie pliku)

...

MOVEAX, 5; numer funkcji systemowej:

MOVEBX, plik; adres nazwy pliku

MOVECX, 2; 2 - otwieranie do odczytu i zapisu

MOVEDX, 111000000b; 700 - zabroń innym dostępu

INT80h; jeśli udalo się otworzyc plik

…; w EAX znajdzie się deskryptor pliku

section .data

plikdb "nazwa.txt",0; nazwa pliku


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przerwanie systemowe Linuksa 80hFunkcja numer 4 (zapis do pliku)

...

MOVEAX, 4 ; numer funkcji systemowej:

; sys_write - zapisz do pliku

MOVEBX, 1 ; numer pliku, do którego pisze.

; 1 = standardowe wyjście = ekran

MOV ECX, tekst ; ECX = adres (offset) tekstu

MOVEDX, dlugosc ; EDX = długość tekstu

INT 80h ; wywołanie funkcji systemowej

...

section .data

tekst DB "Czesc", 0ah ; napis

dlugosc EQU $ - tekst ; długość napisu


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przerwanie systemowe Linuksa 80hFunkcja numer 6 (zamknięcie pliku)

MOVEAX, 6 ; numer funkcji systemowej:

MOV EBX, <deskryptor_pliku> ; EBX = deskryptor pliku

INT80h

...


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Przykładowa funkcja przerwaniasystemowego Linuksa 80h


Wywołania systemowe

Stanowią interfejs między wykonywanym programem

a (posiadającym zwykle wyższe uprawnienia) jądrem systemu operacyjnego.


  • Login