Przerwania Neutrino 2 id 406175 Nieznany

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 1


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


1 Przerwania

1.1 Obsługa zdarzeń, odpytywanie i przerwania
Obs

ługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym

systemie czasu rzeczywistego.

Istniej

ą dwie metody pozyskania informacji o zdarzeniach:

1. Cykliczne odpytywanie urz

ądzenia czy zdarzenie zaszło (ang.

polling).

2. Wykorzystanie przerwa

ń generowanych przez zdarzenia (ang.

interrupts).

Istniej

ą dwie metody informowania o zdarzeniach: metoda

odpytywania rejestru zdarze

ń oraz wyzwalane zdarzeniami przerwania.



Metoda odpytywania – w

łasności:

1. D

ługi czas reakcji na zdarzenie

2. Trudno

ści w uszeregowaniu obsługi zdarzeń według priorytetów.

3. Utrata czasu procesora na wykonanie ja

łowych czynności

4. Prostota implementacji – nie jest wymagany specjalny sprz

ęt.

5. Przewidywalno

ść – nic nie dzieje się niespodziewanie a tylko wtedy

gdy nadejdzie na to zaplanowany czas.


Obs

ługa zdarzenia poprzez przerwanie

Obs

ługa zdarzenia poprzez przerwanie polega na zawieszeniu aktualnie

wykonywanego w

ątku i wykonaniu przypisanej zdarzeniu sekwencji

instrukcji nazywanej procedur

ą obsługi przerwania. Po zakończeniu

procedury nast

ępuje powrót do przerwanego wątku.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 2


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


w

ątek procedura obsługi

przerwania

przerwanie

powrót z procedury

obs

ługi przerwania

ISR

Rys. 1-1 Obs

ługa zdarzenia poprzez procedurę obsługi przerwania


Przyk

ładem urządzenia zgłaszającego przerwania może być układ

transmisji szeregowej typu 8250.

Bufor odbiorczy

Bufor nadawczy

RX

TX

CTS

RTS

R0

R7

dane wysy

łane

dane odbierane

linie
sterowanie
modemem

kontroler

przerwa

ń

uk

ład 8250

IRQ3

INT

R1

Rys. 1-2 Uk

ład transmisji szeregowej 8250


Funkcje kontrolera przerwa

ń:

Maskowanie przerwa

ń.

Tworzenie powi

ązania pomiędzy linią zgłoszenia przerwania a

procedur

ą obsługi przerwania (za pośrednictwem wektora przerwań).

Arbitra

ż przerwań.


Arbitra

ż przerwań.

Kontroler przerwa

ń posiada 8 linii zgłaszania przerwań. Arbitraż polega

na rozstrzyganiu czy i kiedy, wykonywana w

łaśnie procedura obsługi

przerwania, ma by

ć przerwana przez pojawiające się zgłoszenie innego

przerwania.

Mo

żliwe są dwie podstawowe strategie obsługi przerwań.

strategia jednopoziomowa

wielopoziomowa.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 3


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej



Strategia jednopoziomowa - polega wstrzymaniu si

ę z obsługą nowego

przerwania do czasu zako

ńczenia obsługi przerwania.


Strategia wielopoziomowa - gdy w czasie obs

ługi przerwania o niższym

priorytecie pojawi si

ę zgłoszenie przerwania o priorytecie wyższym, to

system przyjmie przerwanie o wy

ższym priorytecie.

w

ątek

procedura obs

ługi

przerwania 1

przerwanie 2

przyj

ęcie przerwania 2

przerwanie 1

ISR 1

ISR 2

procedura obs

ługi

przerwania 2

EOI

EOI

czas

Rys. 1-3 Dwa przerwania obs

ługiwane w systemie jednopoziomowym

w

ątek

procedura obs

ługi

przerwania 1

przerwanie 2

przyj

ęcie przerwania 2

przerwanie 1

ISR 1

ISR 2

procedura obs

ługi

przerwania 2

kontynuacja ISR1

czas

Rys. 1-4 Obs

ługa przerwań w trybie wielopoziomowym

Nie nale

ży mylić priorytetów przerwań wynikających z działania

kontrolera przerwa

ń z priorytetami wątków.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 4


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


1.2 Obsługa przerwań w systemie QNX6 Neutrino
Funkcje konieczne do obs

ługiwania przerwań:

funkcje blokowania przerwa

ń (wszystkich lub pojedynczych) w

systemie jedno i wieloprocesorowym.

funkcja

InterruptAttach() instalujące handler obsługi przerwania

i funkcja

InterruptAttachEvent() transformacji przerwanie w

zdarzenie.

funkcja blokuj

ącą wątek bieżący w oczekiwaniu na przerwanie.

Opis funkcji

Nazwa funkcji

Blokowanie przerwa

ń

InterruptDisable()

Odblokowanie przerwa

ń

InterruptEnable()

Za

łożenie blokady przerwań

InterruptLock()

Zdj

ęcie blokady przerwań

InterruptUnlock()

Zamaskowanie przerwania

InterruptMask()

Odmaskowanie przerwania

InterruptUnmask()

Instalacja procedury obs

ługi

przerwania

InterruptAttach()

Transformacja przerwania w
zdarzenie

InterruptAttachEvent()

Oczekiwanie na przerwanie

InterruptWait()

Tabela 1-1 Funkcje systemowe dotycz

ące obsługi przerwań

1.3 Blokowanie i maskowanie przerwań
Procedury obs

ługi przerwania często muszą modyfikować struktury

danych z których korzystaj

ą także inne jeszcze wątki – należy zapewnić

wzajemne wykluczanie.

handler

wspólne

dane

W

ątek W1

Przerwanie

Rys. 1-5 W

ątek W1 i procedura obsługi przerwania wykorzystują

wspólne dane

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 5


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


Blokowanie przerwa

ń (ang. interrupt disabling)

Blokowanie przerwa

ń jest to niedopuszczenie do zgłoszenia wszystkich

przerwa

ń i realizowane jest w procesorze.


Maskowanie przerwa

ń (ang. interrupt mask)

Maskowanie

przerwa

ń jest to niedopuszczenie do zgłoszenia

okre

ślonego przerwania i realizowane jest w kontrolerze przerwań.


InterruptDisable – blokowanie przerwań
int InterruptDisable(void)

Wykonanie funkcji spowoduje zablokowanie wszystkich przerwa

ń

zewn

ętrznych.

Czas zablokowania przerwa

ń należy ograniczyć do niezbędnego

minimum.


Po zablokowaniu przerwa

ń komputer staje „głuchy” i przestaje reagować

na jakiekolwiek zewn

ętrzne zdarzenia z wyjątkiem zdarzeń

obs

ługiwanych w trybie odpytywania.

Funkcj

ę blokowania przerwań mogą wykonywać tylko procesy będące

w

łasnością administratora.

W

ątek zamierzający zablokować przerwania powinien wcześniej

za

żądać przywileju wykonania sprzętowej operacji wejścia wyjścia

poprzez wykonanie funkcji

ThreadCtl(_NTO_TCTL_IO,0)

InterruptEnable – odblokowanie przerwań
int InterruptEnable(void)

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 6


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


W systemach wieloprocesorowych do zapewnienia ochrony sekcji

krytycznej w procedurach obs

ługi przerwań blokowanie przerwań jest

niewystarczaj

ące. Należy użyć mechanizmu wirującej blokady.



InterruptLock – założenie blokady
int InterruptLock(intrspin_t *spinlock)
spinlock
Zmienna blokady - wspólna dla handlera i wątku

Funkcja

InterruptLock() sprawdza zawartość zmiennej

spinlock().

Dzia

łanie:

Gdy warto

ść zmiennej spinlock wskazuje że nie jest ona zajęta, to ją

zajmuje wpisuj

ąc do niej odpowiednią wartość i blokuje przerwania.

Sprawdzenie i ustawienie zmiennej odbywa si

ę jako nieprzerywalna

operacja atomowa. Gdy zmienna

spinlock jest zajęta, wykonywane

jest ponowne sprawdzenie warto

ści tej zmiennej. Sprawdzanie odbywa

si

ę tak długo aż zmienna spinlock nie zostanie zwolniona.

InterruptUnlock – zdjęcie blokady
int InterruptUnlock(intrspin_t *spinlock)
spinlock
Zmienna blokady - wspólna dla handlera i wątku

Funkcja

InterruptUnlock() powoduje zdjęcie blokady i

odblokowanie przerwa

ń.


intrspin_t zm_blok;
....

InterruptLock(&zm_blok);
/* Sekcja krytyczna */
...
InterruptUnlock(&zm_blok);


PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 7


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


Indywidualne przerwania mo

żna blokować używając rejestru maski w

kontrolerze przerwa

ń. Jedno określone przerwanie zablokowane może

by

ć przy użyciu funkcji:

InterruptMask – zamaskowanie przerwania
int InterruptMask(int intr, int id)
intr
Numer przerwania które ma być zamaskowane
id

Identyfikator handlera zwracany przez funkcje
InterruptAttach(), InterruptAttachEvent() lub –1
gdy przerwanie ma by

ć zamaskowane dla wszystkich

handlerów.


Wykonanie funkcji powoduje zamaskowanie przerwania sprz

ętowego

podanego jako pierwszy parametr, dla handlera o identyfikatorze
podanym jako drugi parametr.

Zamaskowane przerwanie mo

żna dozwolić (odmaskować) używając

funkcji:

InterruptUnmask – dozwolenie przerwania
int InterruptUnmask(int intr, int id)
intr
Numer przerwania które ma być dozwolone
id

Identyfikator handlera zwracany przez funkcje
InterruptAttach, InterruptAttachEvent lub –1 gdy
przerwanie ma by

ć dozwolone dla wszystkich handlerów.


1.4 Instalacja procedur obsługi przerwań.
Zadania realizowane poprzez procedur

ę obsługi przerwania:

1. Stwierdzenie które z urz

ądzeń wymaga obsługi (gdy więcej urządzeń

dzieli jedno przerwanie).

2. Obs

ługa urządzenia – zwykle sprowadza się ona do odczytu i zapisu

pewnych rejestrów urz

ądzenia.

3. Aktualizacja wspólnych struktur danych (dost

ępnych także dla wątków

aplikacji).

4. Zasygnalizowanie aplikacji wyst

ąpienia zdarzenia.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 8


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


Instalacji handlera obs

ługi przerwania następuje poprzez wykonanie

funkcji:

InterruptAttach – instalacja obsługi przerwania

int InterruptAttach(int itnr,
const struct sigevent *(* handler)(void*, int),
const void *area, int size, unsigned flags)

intr

Numer przerwania

handler Wskaźnik na procedurę obsługi przerwania (handler)
area

Adres obszaru komunikacji handlera z programem

size

Wielko

ść obszaru komunikacji handlera z programem

flags Flagi

Wykonanie funkcji spowoduje zainstalowanie funkcji

handler()

okre

ślonej jako drugi parametr, do obsługi przerwania o numerze

intr

,

podanej jako pierwszy parametr funkcji.

Parametr trzeci i czwarty dotycz

ą obszaru komunikacyjnego pomiędzy

w

ątkiem a handlerem.


Przed wykonaniem funkcji nale

ży zażądać prawa wykonania operacji

wej

ścia wyjścia poprzez wykonanie funkcji:


ThreadCtl(_NTO_TCTL_IO,0)


Dzia

łanie procedury obsługi przerwań jest modyfikowane przez flagi.


_NTO_INTR_FLAGS_END - nowy handler dopisany będzie na końcu
łańcucha i wykona się jako ostatni.

_NTO_INTR_FLAGS_PROCESS system kojarzy handler z procesem a
nie z w

ątkiem. Handler będzie deinstalowany gdy kończy się proces a

nie w

ątek.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 9


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


Procedura obs

ługi przerwania

Handler jest funkcj

ą o następującym prototypie:

const struct sigevent* handler(void* area, int id)

Handler mo

że zwracać albo stałą NULL albo wskaźnik do prawidłowo

zadeklarowanej i zainicjowanej struktury typu

sigvent.


1. Gdy procedura obs

ługi przerwania zwraca NULL to nie powoduje to

dalszych dzia

łań.

2. Gdy procedura obs

ługi przerwania zwraca wskaźnik do struktury typu

sigvent to generowane jest zdarzenie wyspecyfikowane w
strukturze

sigevent.

Gdy handler przerwania generuje zdarzenie, to zdarzenie to powinno
prowadzi

ć do odblokowania pewnego wątku. Żądany typ zdarzenia

zale

ży od zainicjowania struktury

sigevent

.

1. Gdy przerwanie ma odblokowa

ć wątek zawieszony na funkcji

InterruptWait() to zdarzenie powinno być typu SIGEV_INTR.

2. Gdy przerwanie ma odblokowa

ć wątek zablokowany na funkcji

MsgReceive() to zdarzenie powinno być typu SIGEV_PULSE. W
tym przypadku w

ątek może odbierać także komunikaty.

3. Mo

żliwe jest także zainicjowanie struktury sigevent na zdarzenia

typu SIGEV_SIGNAL, SIGEV_SIGNAL_CODE,
SIGEV_SIGNAL_THREAD, SIGEV_THREAD. Ze wzgl

ędu na

mniejsz

ą efektywność nie jest to zalecane.


Przy tworzeniu procedur obs

ługi przerwań należy przestrzegać zasad:

1. Rozmiar stosu którym dysponuje procedura obs

ługi przerwania jest

ograniczony. St

ąd nie powinna ona zawierać dużych tablic czy innych

struktur danych . Bezpiecznie jest przyj

ąć że dostępny rozmiar stosu

wynosi oko

ło 200 bajtów.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 10


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


2. Procedura obs

ługi przerwań wykonywana jest asynchronicznie z

w

ątkami należącymi do pewnego procesu i używa wspólnych z nimi

danych. Wszystkie zmienne modyfikowane przez handler powinny by

ć

poprzedzone s

łowem kluczowym volatile, a ich modyfikacja

wewn

ątrz wątków zabezpieczona przez zablokowanie przerwań

3. Procedura obs

ługi przerwania wykonywana jest poza normalnym

szeregowaniem wi

ęc powinna być tak krótka jak to tyko możliwe.

Je

żeli wymagane jest wykonanie czasochłonnych czynności to

powinny by

ć one wykonane w wątku który zostanie prze handler

odblokowany.

4. Procedura obs

ługi przerwania nie może wywoływać żadnych funkcji

systemowych z wyj

ątkiem niektórych funkcji.



Oczekiwanie na przerwanie

Ko

ńczący się handler może wygenerować zdarzenie SIGEV_INTR.

Zdarzenie to mo

że odblokować oczekujący na przerwanie wątek.

Funkcj

ą która blokuje wątek w oczekiwaniu na przerwanie jest funkcja

InterruptWait().

InterruptWait – oczekiwanie na przerwanie
int InterruptWait(int flags, iunt_64 *timeout)
flags
Flagi – należy przyjąć 0
timeout Maksymalny okres oczekiwania – obecnie należy przyjąć

NULL

Funkcja powoduje zablokowanie w

ątku bieżącego w oczekiwaniu na

przerwanie. Funkcja zwraca –1 gdy b

łąd.

InterruptDetach – deinstalacja handlera przerwania
int InterruptDetach(int id)
id

Identyfikator zwracany przez funkcj

ę InterruptAttach() i

InterruptAttachEvent()


PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 11


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


// Obsluga przerwania zegarowego

#include <sys/neutrino.h>

#define TIME_INT 0

struct sigevent event;

int icnt = 0;

int intid = 0;

int sec = 0;

const struct sigevent * handler(void * arg, int

id) {

icnt++;

if(icnt == 1000) {

icnt = 0;

intid = id;

sec++;

return(&event);

} else return(NULL);

}

main() {

int res,i,sec = 0;

i = 0;

printf("Program startuje \n");

event.sigev_notify = SIGEV_INTR;

ThreadCtl( _NTO_TCTL_IO, 0 );

res = InterruptAttach(TIME_INT,

&handler,NULL,0,0);

printf("Handler zaininstalowany: %d \n",res);

do {

InterruptWait(0,NULL);

printf("Przerwanie: %d %d %d\n",sec,i,intid);

i++;

} while(sec<60);

InterruptDetach(res);

}

Przyk

ład 1-1 Obsługa przerwania zegarowego

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 12


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


1.5 Transformacja przerwania w zdarzenie
Czynno

ści wykonywane w ramach ISR nie podlegają szeregowaniu. W

kodzie handlera wykona

ć można tylko niezbędny zakres czynności a

nast

ępnie powiadomić pewien wątek o zaistnieniu przerwania a wątek

ten wykona reszt

ę pracy.

W kodzie procedury obs

ługi przerwania wykonać należy tylko

niezb

ędne czynności a następnie powiadomić pewien wątek o

wyst

ąpieniu przerwania. Wątek ten wykona resztę pracy.

Obs

ługa zdarzeń w QNX6 Neutrino:


1. Wszystkie czynno

ści wykonywane są przez procedurę obsługi

przerwania.

2. Wewn

ątrz

procedury

obs

ługi

przerwania

wykonane

b

ędą

najwa

żniejsze czynności a resztę pracy wykona odblokowany

specjalnie w

ątek.

3. Wewn

ątrz procedurę obsługi przerwania nie są wykonywane żadne

czynno

ści a jedyną jego funkcją jest odblokowanie pewnego wątku.



W pierwszym przypadku programista pisze procedur

ę obsługi

przerwania i kojarzy j

ą z przerwaniem wykorzystując funkcję

InterruptAttach().

W drugim przypadku post

ępowanie jest analogiczne jak w przypadku

pierwszym z ta ró

żnicą że na zakończenie handler zwraca zainicjowane

odpowiednio zdarzenie w postaci struktury typu

sigevent . Gdy handler

zwróci takie zdarzenie to skojarzony z nim w

ątek będzie odblokowany.


W trzecim przypadku nie ma potrzeby w ogóle potrzeby pisania
handlera. W funkcji

InterruptAttachEvent() specyfikuje się numer

przerwania i rodzaj zdarzenia na które to przerwanie ma by

ć

transformowane.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 13


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


w

ątek

procedura obs

ługi

przerwania

przerwanie

ISR

w

ątek obsługi

przerwania

odblokowanie

w

ątku

event

Czas

Rys. 1-6 Procedura obs

ługi przerwania wykonuje część pracy a

nast

ępnie odblokowuje wątek


w

ątek

przerwanie

w

ątek obsługi

przerwania

odblokowanie

w

ątku

event

Czas

Rys. 1-7 Przerwanie zamieniane w zdarzenie które

event odblokowuje

w

ątek.



InterruptAttachEvent – transformacja przerwania w zdarzenie
int InterruptAttachEvent(int itnr,
const struct sigevent *event,unsigned flags)

intr Numer przerwania
event Wskaźnik na strukturę opisu zdarzenia które ma być

wygenerowane gdy nadejdzie przerwanie

Flags Flagi

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 14


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


#include <sys/neutrino.h>

#define TIME_INT 0

struct sigevent event;

main() {

int res, i = 0;

i = 0;

printf("Program startuje \n");

ThreadCtl(_NTO_TCTL_IO,0);

SIGEV_INTR_INIT(&event);

res = InterruptAttachEvent(TIME_INT, &event,

_NTO_INTR_FLAGS_END);

if(res < 0) {

perror("install"); exit(0);

}

printf("Handler zaininstalowany: %d \n",res);

InterruptUnmask (TIME_INT, res);

do {

printf("Czekam\n");

InterruptWait(0,NULL);

printf("Przerwanie: %d \n",i);

InterruptUnmask (TIME_INT, res);

i++;

} while(i <10);

InterruptDetach(res);

printf("Koniec\n");
}

Przyk

ład 1-2 Obsługa przerwania zegarowego za pomocą zdarzenia

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 15


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


1.6 Własności czasowe systemu przerwań
Czas reakcji na zdarzenie jest jednym z kluczowych parametrów
systemów czasu rzeczywistego. Je

żeli zdarzenia obsługiwane są przez

przerwania, to czas reakcji na zdarzenie b

ędzie się wiązał z czasem

obs

ługi przerwań.

Parametry ilo

ściowe opisujące własności czasowe systemu czasu

rzeczywistego:

1. Czas opó

źnienia przerwania

2. Maksymalny czas opó

źnienia przerwania

3. Czas reakcji na przerwanie
4. Opó

źnienia szeregowania

Czas opó

źnienia przerwania (ang. interrupt latency)

Czas opó

źnienia przerwania T

il

definiujemy jako czas który up

ływa

pomi

ędzy wystąpieniem zdarzenia a rozpoczęciem jego obsługi.


Czas opó

źnienia przerwania zależy od następujących czynników:

1. Zablokowania przerwa

ń - przerwania w procesorze mogą być

chwilowo zablokowane przez inny w

ątek lub handler w celu ochrony

sekcji krytycznych.

2. Obs

ługi innych przerwań - kontroler przerwań może nie dopuścić do

przyj

ęcia przerwania gdyż przerwanie o wyższym priorytecie jest w

trakcie obs

ługi

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 16


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


w

ątek

procedura obs

ługi

przerwania

przerwanie

ostatnia instrukcja handlera

ISR

wznowienie przerwanego w

ątku

T

il

T

int

T

iret

T

r

Rys. 1-8 Opó

źnienie obsługi przerwania


Czas opó

źnienia przerwania zależy od aktualnego stanu systemu.

Przerwania w danym momencie czasu mog

ą być zablokowane lub też

nie. W zwi

ązku z tym definiuje się maksymalny czas opóźnienia

przerwania.

Maksymalny czas opó

źnienia przerwania (ang. worst case interrupt

latency)

Maksymalny czas opó

źnienia przerwania to czas opóźnienia przerwania

otrzymany dla najmniej korzystnego przypadku.


Czas ten jest sum

ą najdłuższego czasu w którym przerwania są

zablokowane T

d

i czasu T

c

potrzebnego na zachowanie kontekstu w

ątku

bie

żącego i uruchomienie handlera czyli T

il

= T

d

+

T

c

.

Czas T

c

zale

ży od sprzętu i jest zwykle niewielki (kilka cykli

zegarowych)

Czas T

d

zale

ży od maksymalnego czasu zablokowania przerwań i jest

cech

ą systemu operacyjnego.

W systemie operacyjnym czasu rzeczywistego najd

łuższy czas w

którym przerwania pozostaj

ą zablokowane T

d

powinien by

ć jak

najkrótszy.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 17


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


Czas reakcji na przerwanie (

ang. response time)

Czas reakcji na przerwanie T

r

definiujemy jako czas który up

ływa

pomi

ędzy wystąpieniem przerwania a zakończeniem jego obsługi.



Czas T

r

jest sum

ą czasu opóźnienia przerwania T

il

i czasu

obs

ługi

przerwania

T

int

(T

r

= T

il

+ T

int

).

Czas opó

źnienia przerwania jest miernikiem jakości sprzętu i systemu

operacyjnego.

Czas reakcji na przerwanie uwzgl

ędnia dodatkowo złożoność

procedury obs

ługi urządzenia generującego przerwanie

Zdarzenia mog

ą być obsługiwane albo tylko przez handler albo przez

handler i w

ątek. W drugim przypadku na zakończenie działania swego

dzia

łania, handler może generować zdarzenie które odblokowuje

obs

ługujący te zdarzenie wątek.

w

ątek procedura obsługi

przerwania

przerwanie

generacja zdarzenia

ISR

odblokowanie w

ątku

obs

ługi przerwania

T

il

T

int

T

sl

w

ątek obsługi

przerwania

T

s

Rys. 1-9 Opó

źnienie szeregowania

Czas T

s

up

ływający pomiędzy wystąpieniem przerwania a rozpoczęciem

w

ątku obsługującego to przerwanie jest sumą trzech czasów T

s

= T

il

+

T

int

+ T

sl

. Czas T

sl

nazywany jest opó

źnieniem szeregowania.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Jedrzej

Ułasiewicz Komputerowe systemy sterowania 18


Instytut Cybernetyki Technicznej Politechniki Wrocławskiej


Opó

źnienie szeregowania (ang. scheduling latency)

Opó

źnienie szeregowania jest czasem który upływa pomiędzy

wykonaniem ostatniej instrukcji procedury obs

ługi przerwania a

wykonaniem pierwszej instrukcji obs

ługującego przerwanie wątku.



Na czas ten sk

łada się

czas wykonania procedury szereguj

ącej

czas prze

łączenia kontekstu z wątku bieżącego do wątku

obs

ługującego przerwanie.

Procesor

Opó

źnienie

przerwania

[

µ

s]

Opó

źnienie

szeregowania

[

µ

s]

166 MHz Pentium

4.3

3.1

100 MHz Pentium

4.4

3.9

100 MHz 486DX4

5.6

8

33 MHz 386EX

22.5

26

Tabela 1-2 Niektóre parametry czasowe systemu QNX6 Neutrino

PDF created with pdfFactory trial version

www.pdffactory.com


Wyszukiwarka

Podobne podstrony:
Architektura Neutrino 1 id 6791 Nieznany (2)
Przerwania w systemie id 406173 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany
pedagogika ogolna id 353595 Nieznany
Misc3 id 302777 Nieznany

więcej podobnych podstron