Strona główna | English English
Attached
Powrót | Poprzedni | Następny

O jednolitą terminologię

“Przerwanie”

W krajowych publikacjach książkowych przerwanie występuje najczęściej w następujących zwrotach: “układ przerwań”, “pojawienie się przerwania”, “odebranie przerwania”, “identyfikacja przerwań”, “źródło przerwania”, “reakcja (odpowiedź) na przerwanie”, “priorytet przerwania”, “rodzaj przerwania”, “zgłoszenie przerwania”, “obsługa przerwania”, “umieszczenie przerwania w kolejce”, “gromadzenie przerwań na stosie”. Czy są poprawne?

W technice komputerowej termin przerwanie (ang. interrupt) prawie zawsze oznacza przekazanie sterowania do instrukcji innej niż kolejna określona programowo, z zachowaniem możliwości powrotu do przerwanego programu. Przerwanie jest konsekwencją zdarzenia, o którym procesor dowiaduje się otrzymując tzw. sygnał przerwania. Powyższe określenia są zgodne z występującymi w większości słowników i książek wydanych w Polsce.

Przerwanie odnosi się zawsze do wykonywania programu, a więc przerwaniem nie jest samo zdarzenie, które tylko prowadzi do przerwania w powyższym sensie, ani też sygnał informujący procesor o tym zdarzeniu. Mówiąc krótko: przerwanie następuje w odpowiedzi na sygnał przerwania powstały wskutek zajścia zdarzenia.

Po tych uwagach jest jasne, że zwroty: “odebranie przerwania”, “pojawienie się przerwania” i “reakcja na przerwanie” nie są poprawne, natomiast powinny brzmieć: odebranie lub pojawienie się sygnału przerwania i reakcja na zdarzenie. Błędem jest także użycie zwrotu “odpowiedź na przerwanie”, gdyż oznacza on odpowiedź procesora na przekazanie (przez niego samego) sterowania do instrukcji innej niż następna w kolejności określonej programowo.

Przy powyższym rozumieniu przerwania nie należy mówić o “źródle przerwania” lecz o przyczynie przerwania, natomiast poprawne są określenia: “źródło sygnału przerwania i – konsekwentnie – identyfikacja źródła sygnału przerwania lub identyfikacja przyczyny przerwania, a nie “identyfikacja przerwania”. Nie powinniśmy także mówić: “priorytet przerwania” i “rodzaj przerwania”, gdy chodzi o priorytet i rodzaj źródła przerwania.

Choć takie skróty myślowe są często dopuszczalne, a niekiedy nawet konieczne, należy pamiętać, że ich nadużywanie powoduje wiele nieporozumień i wywołuje poważny zamęt w rodzimej terminologii.

Nie jest też poprawne określenie “zgłoszenie przerwania”, gdyż oznacza podanie informacji przez procesor, że realizuje on przerwanie wykonywania programu, podczas gdy w rzeczywistości chodzi o to, że źródło zwraca na siebie uwagę procesora przez żądanie przerwania. W konsekwencji, obsługiwane będzie nie przerwanie lecz źródło sygnału przerwania. Samo żądanie obsługi przez źródło nie jest więc jeszcze przerwaniem (w powyższym rozumieniu).

Jedynym poprawnym spośród wymienionych na wstępie określeń jest układ przerwań, gdyż oznacza układ przekazujący do procesora sygnały przerwań, a dokładniej – informacje o zaistniałych zdarzeniach, czyli przyczynach przerwań.

Przyczyna przerwania może być w stosunku do procesora zewnętrzna lub wewnętrzna. Przerwanie może być wywołane przez urządzenie zewnętrznie żądające obsługi, może być także spowodowane przyczyną wewnętrzną, np. pułapką programową (ang. software trap) lub sprzętową (ang. hardware trap), czyli błędem programu lub uszkodzeniem sprzętu. Stąd określenia: przerwanie zewnętrzne i przerwanie wewnętrzne.

Należy podkreślić, że tym, co łączy przerwanie zewnętrzne i przerwanie wewnętrzne, a zarazem różni je od innych nieprogramowych sposobów zmiany kolejności wykonywania instrukcji, jest występowanie przerwań zawsze po zakończeniu wykonywania bieżącej instrukcji (tzn. instrukcji, podczas wykonywania której pojawił się sygnał przerwania), zazwyczaj związane z zapamiętaniem pełnego lub części stanu procesora (w celu umożliwienia powrotu do przerwanego programu po wykonaniu podprogramu obsługi). Czym różni się przerwanie zewnętrzne od wewnętrznego poza umiejscowieniem źródła? Na pytanie to trudno odpowiedzieć wyczerpująco, ale na przykład w minikomputerze PDP-11 przerwań wewnętrznych nie można maskować, a przynajmniej w taki sposób jak zewnętrzne.

Ponieważ po przerwaniu nie zawsze znana jest jego przyczyna, należy ją określać, aby wyznaczyć procedurę obsługi, Stosowane są dwie metody identyfikacji źródła przerwania. Pierwsza z nich polega na kolejnym sprawdzeniu stanu źródeł, co proponujemy określić jako “zapytywanie” (ang. polling). W drugiej metodzie identyfikacja programowa jest zbędna, gdyż źródło obok sygnału przerwania podaje adres komórki zwanej wektorem przerwania. Zawiera ona adres instrukcji lub samą instrukcję, której przekazywane jest sterowanie w przypadku wystąpienia przerwania. Przerwanie związane ze sprzętowym wskazaniem adresu podprogramu obsługi nazywa się przerwaniem wektorowym (ang. vectored interrupt, często nieprawidłowo tłumaczom jako “przerwanie wektoryzowane”). Ponieważ w tym przypadku po odebraniu sygnału przerwania już z góry wiadomo (bez konieczności wykonywania operacji programowych), do której komórki nastąpi skok, można by mówić bardziej po polsku przerwanie skierowane.

Reasumując, proponujemy stopniowe odchodzenie od innego rozumienia przerwania niż zaproponowane na początku. Niech w terminologii polskiej przerwanie odnosi się jedynie do wykonywania programu, natomiast przerwaniem niech nie będzie ani samo zdarzenie ani sygnał informujący o zajściu tego zdarzenia. Mimo że przerwanie powinno dotyczyć czynności samego procesora, to termin przerwanie musi pozostawać w związku frazeologicznym nie tylko z terminem “program”, ale także z terminami “sygnał” i “źródło”.

Dziwne, że takie rozumienie przerwania, podane w jednej z pierwszych polskich książek z zakresu informatyki (W. Turski: Podstawy użytkowania maszyn cyfrowych w ośrodkach naukowo-technicznych. Warszawa, PWN 1968), nie zostało powszechnie przyjęte i utrwalone. Fakt, że od czasu wydania tej pracy podano wiele innych sposobów rozumienia przerwania, jest nie tyle wynikiem rozwoju techniki komputerowej, ile lekceważenia podstawowych reguł terminologicznych i braku prób porządkowania słownictwa informatycznego, co prowadzi do pogłębiającego się bałaganu. Wiele spośród spotykanych błędów jest spowodowane mechanicznym tłumaczeniem terminów angielskich, używanych niestety często błędnie lub niekonsekwentnie w wielu pracach oryginalnych. Na przykład w podręcznikach znanej firmy DEC przerwanie jest rozumiane jako żądanie obsługi (LI-11) lub jako samo zdarzenie (VAX-11/780).

Podane znaczenie terminu nie jest jedynym możliwym, jednak w ten sposób rozumiane są przerwania w przeważającej części literatury polskiej, a także w normach międzynarodowych.

dr inż. Janusz Zalewski

Źródło: “Informatyka,” nr 4/1980, str. 38


O jednolitą terminologię

“Przerwanie” cd.

Nawiązując do przerwań omawianych w poprzednim numerze (INFORMATYKA nr 4) należałoby dodać jeszcze kilka uwag, które mogą posłużyć do dalszego sprecyzowania terminologii i przeciwdziałania zamętowi.

W obsłudze urządzeń żądających przerwania podstawową rolę odgrywa kolejność, ustalana na zasadzie priorytetu. Zatem priorytetem można nazwać właściwość urządzenia lub programu służącą określeniu kolejności obsługi urządzenia lub wykonywania programu. Jeśli po odebraniu sygnału przerwanie procesor lub niezależny układ przydziela pierwszeństwo w obsłudze, to mówimy o określaniu priorytetów (ang. priority determination). Gdy do dalszego działania konieczne jest wysłanie do urządzenia odpowiedniego sygnału oznaczającego zgodę na przerwanie, mówimy o sygnale potwierdzenia (ang. acknowledgement). Jeżeli w odpowiedzi urządzenie podaje adres komórki (niekoniecznie pojedynczej) zawierającej informacje dotyczące programu obsługi (lub wręcz sam program), to komórkę tę (a nie jej zawartość) nazwiemy wektorem przerwania (ang. interrupt vector).

Jeżeli wcześniej nie nastąpiło przesłanie na stos zawartości licznika rozkazów, tzn. adresu powrotnego, return address (a często także innych rejestrów), to następuje teraz (automatycznie, czyli bez udziału programu, lub nie), po czym ustalana jest nowa zawartość licznika rozkazów (zostańmy przy “historycznym” terminie nie wprowadzając innego jak licznik programu). Ponieważ, przerwanie, jak stwierdziliśmy (p. INFORMATYKA nr 4) dotyczy wykonywania programu, jest oczywiste, że nie nastąpiło przedtem. Dopiero w tym momencie można powiedzieć, że urządzenie spowodowało przerwanie lub, że nastąpiło przerwanie. Wykonywany jest program obsługi urządzenia, a po jego zakończeniu następuje powrót do programu przerwanego.

Precyzując werbalne określenie, czym jest przerwanie. można powiedzieć, że przerwanie następuje wtedy, gdy bieżąca zawartość licznika rozkazów zostaje przesłana do przechowania (np. na stos) z możliwością odtworzenia.

Jeżeli układ przerwań dopuszcza wystąpienie nowego przerwania w czasie dokonywania obsługi poprzedniego zgłoszenia, to mówimy o wielopoziomowym układzie przerwań. Należy zwrócić uwagę, że w tym przypadku wielopoziomowość jest pojęciem logicznym i lepiej mówić o strukturze niż o układzie przerwań, który nie musi być fizycznie wielopoziomowy, tzn. niekoniecznie każdemu poziomowi musi odpowiadać oddzielne wejście (linia).

Jeżeli przerwanie jest realizowane na poziomie N, to można mówić, że urządzenie lub program ma priorytet N. Dlatego mają sens stwierdzenia: wysoki priorytet, niski priorytet, a nie mają sensu określenia: duży, mały, o czym niektórzy autorzy zapominają. Jeżeli chcemy priorytet urządzenia lub programu odnieść do przerwania, to musimy powiedzieć: poziom przerwania. Zatem poziom przerwania i priorytet programu obsługi są ściśle związane.

Mając na myśli wielopoziomową strukturę przerwań mówi się często o możliwości zagnieżdżania (ang. nesting) przerwań, zamiast mówić o zagnieżdżaniu programów obsługi związanych z przerwaniami. Różni się ono tym tylko od zagnieżdżania zwykłych podprogramów, że jego realizacja jest wymuszona. Zatem nie ma przerwań wielopoziomowych, ponieważ przerwanie może być zrealizowane na określonym, pojedynczym poziomie.

Każdy układ przerwań stwarza, na ogół, możliwość selektywnego oddziaływania na sygnały przerwań. Mówi się wówczas o maskowaniu (ang. masking) przerwań, gdy w stanie niewymuszonym informacja o zdarzeniu dociera do procesora. Znacznie trudniej określić po polsku oddziaływanie (ang. enabling) w sytuacji, gdy w stanie nie wymuszonym informacja nie dociera do procesora. Wydaje się, że spośród wielu prób (odblokowanie, zezwolenie, umożliwienie, uczulenie, uaktywnienie, pobudzenie) najbardziej rozsądne byłoby przyjęcie terminu zezwolenie na przerwanie (ang. interrupt enable) i odpowiadającego mu zabronienie (zakaz) przerwania (ang. interrupt disable), gdyż określenie dotyczy samej czynności przerwania. Zyskało to aprobatę wielu autorów. Należałoby jedynie życzyć sobie przestrzegania tego terminu, choć tylko w odniesieniu do przerwań, gdyż w innym kontekście odpowiedniki polskie mogą być zupełnie inne.

Na zakończenie warto podać kilka innych terminów, które domagają się konsekwentnego stosowania.

Program obsługi przerwania wykonywany “na tle” programu przerwanego jest nazywany programem pierwszoplanowym (ang. foregrournd), a program przerywany – drugoplanowym (ang. background). Zapomina o tym wielu autorów obcych nazywając program obsługi programem drugoplanowym, więc istnieje niebezpieczeństwo, że błąd przeniknie do terminologii rodzimej.

Niewłaściwie jest też używany termin angielski interrupt-driven odnoszący się na ogół do organizacji systemu operacyjnego (lub komputerowego). Należy mówić: system sterowany zdarzeniami, a nie przerwaniami.

Omawiając zasady innego nieprogramowego sposobu dostępu do komputera, tj. bezpośredniego dostępu do pamięci (ang. direct memory access) należy mówić o przechwytywaniu, a nie o “kradzeniu” cykli (ang. cycle stealing).

Janusz Zalewski

Źródło: “Informatyka,” nr 5/1980, str. 37



  Poprzedni | Następny
Strona dodana 24 maja 2003 roku.

Copyright © 2002-2005 Marcin Wichary
Wersja do druku | Kontakt | Mapa serwisu