Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
TwojePC.pl © 2001 - 2018
T E C H N I K A
    

  Przerwania, czyli młodsza siostra "Przerwy"
 Autor: Stefan
 Data: 16/08/01

Przerwania czyli młodsza siostra Przerwy Do napisania tekstu o przerwaniach sprowokowały mnie dwa niezwiązanych z sobą zdarzenia. Po pierwsze, mój nowy tuner telewizyjny zaczął "gryźć się" (tzn. spierać o przerwanie) z kartą dźwiękową. Po drugie zaś, przeczytałem gdzieś na boardzie opinię typu - "SoundBlaster Live zachowuje się skandalicznie, nie tylko sam emuluje siebie, ale też zajmuje dwa przerwania..." Lekarstwem na tuner telewizyjny okazało się przypisanie mu niestandardowego przerwania. Natomiast cały poniższy tekst ma rozjaśnić mgliste kwestie związane z przerwaniami - czym one są, co to jest IRQ, PNP, legacy... Zapraszam dalej. Jeśli jednak części pierwszej nie uczyniłem tak przystępną jak planowałem, to można ją opuścić.

Komputery, jak wiadomo tylko jedną rzecz potrafią robić względnie dobrze, mianowicie wykonywać zapisane wcześniej instrukcje. Nie ma w tym żadnej magii, tym niemniej warto poznać kilka podstawowych pojęć.

Każda instrukcja posiada długość i adres, pod którym znajduje się w pamięci komputera. W rejestrze IP (rejestr - komórka pamięci znajdująca się wewnątrz procesora, IP -instruction pointer - wskaźnik instrukcji) przechowywany jest adres instrukcji, która będzie wykonana w następnej kolejności. Zwykle wartość rejestru IP zwiększana jest po każdym pełnym cyklu o jeden. Jednakże, istnieją instrukcję pozwalające na modyfikację wartości tego rejestru - są to instrukcje skoku. Powodują, że komputer po wykonaniu takiej instrukcji "skacze" do wskazanej przez IP części kodu. Taka sielanka czyli bezstresowe mielenie bitów trwa dopóki nie pojawi się coś, co wywraca wszystko do góry nogami, to coś to właśnie tytułowe przerwanie.

Architektura komputera determinuje typ i rodzaj przerwań, które są obsługiwane. W uproszczeniu, przerwanie powoduje zapamiętanie aktualnego stanu procesora na stosie (wartości rejestrów flag itd.) i spowodowanie wykonywania zupełnie innego programu. Tym programem może być inny proces użytkownika (jak w przypadku systemów wieloprocesowych), bądź procedury systemu operacyjnego, lub żądanie sprzętu o dostęp do procesora np. wysłane przez klawiaturę. Generalnie przerwania dzielą się na sprzętowe i programowe w zależności od tego przez co są generowane. Ważnym parametrem przerwania jest to czy jest ono zamaskowane (będzie zignorowane) czy niezamaskowane (musi być obsłużone możliwie w jak najkrótszym czasie).

Tablica wektorów przerwań

Tablica wektorów przerwań zawiera informacje, która procedura ma być wykonana w przypadku wystąpienia konkretnego przerwania. Innymi słowy zawiera adresy tych procedur. Sama tablica umiejscowiona jest zwykle na początku pamięci operacyjnej.

Istnieje specjalny zestaw linii sygnałowych informujących CPU o tym, które przerwanie zażądało obsługi. Teraz następuje identyfikacja przerwania i sprawdzenie czy dane przerwanie jest zamaskowane, następnie sprawdzany jest priorytet przerwania (jeżeli takowy system oparty na priorytetowym przydzielaniu czasu procesora jest zaimplementowany w danej architekturze komputera). Po zadecydowaniu czy dane przerwanie ma być obsłużone natychmiast czy w bardziej odpowiednim czasie, procesor zapamiętuje swój aktualny stan i generuje adres fizyczny konkretnej procedury poprzez pomnożenie numeru wektora przerwań przez 4. Wynika to z budowy tablicy wektorów. Tablica składa się z 256 wektorów, każdy o długości 4 bajtów. Jak łatwo obliczyć cała tablica ma wielkość jednego kilobajta. Gdy znany jest już adres początkowy danej procedury, CPU ładuje go do IP i zaczyna wykonywać kod obsługi przerwania spod wskazanego adresu.

Podczas inicjalizacji systemu (resecie) tworzona jest w pamięci tablica wektorów przerwań jak również ładowane są procedury obsługi. Wiele z nich jest przedefiniowanych przez architekturę danego komputera (to właśnie one mogą być wykorzystywane przez producentów sprzętu i oprogramowania), istnieje też kilka zarezerwowanych, które nie mogą być modyfikowane. Wszelkie dane dotyczące systemu przerwań ładowane są do pamięci zaraz po jądrze systemu, ale przed warstwą aplikacji. To, właśnie jest powód dla którego musimy zresetować komputer jeżeli chcemy uaktywnić nowo zainstalowany sprzęt lub program wymagający zmian w systemie przerwań.

IRQ

Kiedy usłyszymy hasło IRQ oznacza to, że rozmowa dotyczy, na pewno systemu przerwań sprzętowych. IBM PC wyposażony jest w 16 takich przerwań, z których wszystkie są maskowalne i nazwane odpowiednio od IRQ0 do IRQ15.

W tablicy wektorów przyporządkowane są im wektory od 8 do 15 i 112 do 119. Jeżeli numery tych wektorów pomnożymy przez 4 to otrzymamy adres adresu procedury obsługującej dane IRQ. Niektóre z tych przerwań są z góry określone przez system np.
  • zegar systemowy (IRQ0)
  • klawiatura (IRQ1)
  • kontroler stacji dyskietek (IRQ6)
  • zegar czasu rzeczywistego (IRQ8)
  • kooprocesor matematyczny (IRQ13)
Inne natomiast są określane przez użytkownika poprzez ustawianie zworek na kartach bądź specjalistyczne oprogramowanie lub firmware (oprogramowanie zaszyte w urządzeniach typu Plug and Play).

Zwykle przerwania dostępne dla dodatkowych peryferiów to IRQ 5, 7, 9, 10, 11 i 12. Generalnie modemom przypisuje się IRQ5, drukarkom IRQ7, kartom dźwiękowym IRQ9 i IRQ10, kartom graficznym IRQ11, a myszom PS/2 IRQ12. Żelazną regułą jest natomiast, że przerwania IRQ3 i IRQ4 są zarezerwowane dla portów szeregowych a IRQ14 i IRQ15 dla kontrolerów IDE (odpowiednio primary IDE i secondary IDE).

W większości przypadków przerwania sprzętowe nie mogą być współdzielone przez dwa urządzenia. Jedynym wyjątkiem są urządzenia, które używają tej samej procedury przerwania (np. urządzenia połączone szeregowo) i z całą pewnością nie będą pracować symultanicznie. Jeżeli warunki te nie są spełnione to w najlepszym wypadku urządzenia te nie będą poprawnie działać, jednak zazwyczaj objawia się to zawieszaniem całego systemu bądź niemożnością uruchomienia komputera.

Przyznawanie IRQ

Jak się okazało, system Plug and Play to jedna z najbardziej frustrujących innowacji w zakresie konfiguracji sprzętu komputerowego. Zamierzeniem twórców było stworzenie mechanizmu umożliwiającego negocjowanie między sprzętem i systemem operacyjnym rozdziału przerwań sprzętowych. Mądrzejsi inżynierowie założyli, że zwykli śmiertelnicy nie są w stanie poprawnie ustawić kilku zworek i zautomatyzowali ten wielce mozolny proces. Wynikiem zaistniałej sytuacji jest brak zworek na kartach i brak konfigurowalnych driver-ów co przy niedoskonałości samego Plug and Play powoduje, że wiele urządzeń próbuje korzystać z tych samych przerwań, a w szczególności karty dźwiękowe i modemy (oraz mój nowy tuner telewizyjny). Problem może jest niezauważalny z punktu widzenia posiadacza markowego, zaplombowanego komputera, który zapewne zarzuci mi czepianie się, ale spróbujcie bez walki pogodzić ze sobą modem, kartę dźwiękową, skaner, drukarkę, tuner telewizyjny, kartę sieciową a będę mówił do was "mistrzu". Na szczęście istnieje kilka sposobów ręcznego przypisywania IRQ. Najlepszą metodą jest ustawienie przerwań w BIOS, jeżeli ten oferuje taką możliwość. Wiele nowoczesnych BIOS-ów posiada możliwość ustawienia każdego z szesnastu przerwań jako No/ICU co oznacza że nie jest ono zarezerwowane, a system Plug and Play nie będzie w tym przypadku forsował swojej konfiguracji.

Drugą możliwością jest ustawienie kategorii przerwania jako NON-PNP albo LEGACY co pozostawia przerwanie do użytku przez starsze urządzenia, nie obsługujące Plug and Play. Począwszy od Windows 95 istnieje możliwość programowej konfiguracji przerwań przy użyciu narzędzia zwanego MENADŻER URZĄDZEŃ, które możemy znaleźć w PANELU STEROWANIA po otwarciu ikony SYSTEM. MENADŻER URZĄDZEŃ pozwala w intuicyjny sposób na zmianę i podgląd konfiguracji. Umożliwia również utworzenie profili sprzętowych w sytuacji gdy nie można pogodzić wszystkich roszczeń względem przerwań (niektóre urządzenia możemy w danym profilu po prostu wyłączyć). Z mojego doświadczenia wynika, że metoda zmiany w warstwie BIOS-u jest dużo skuteczniejsza. Natomiast co do MENADŻERA, no cóż zawsze jest to kolejna szansa, z której należy skorzystać w drodze do osiągnięcia sukcesu - perfekcyjnie skonfigurowanego komputera.

Jak oszczędzać IRQ

Istnieje kilka sposobów zredukowania ilości wykorzystywanych przerwań przez komputer. Jeżeli nie wykorzystuje się obu portów szeregowych, to spokojnie można je wyłączyć, zwalniając w ten sposób IRQ3 i IRQ4. W przypadku modemu można zdecydować się na droższy zewnętrzny model zwalniając w ten sposób przerwanie IRQ5 kosztem portu COM2. Również wybierając mysz w standardzie PS/2 nie będzie zajmowany port COM1 pod, który można podpiąć inne urządzenie.

Bardziej wydajnym, ale i znacznie droższym rozwiązaniem jest zakup kontrolera SCSI. Niestety pociąga to za sobą zakup dedykowanych mu urządzeń, które również są droższe od swoich zwykłych odpowiedników(za to są od nich wydajniejsze). Kontroler SCSI umożliwia podłączenie do 15 urządzeń wykorzystując jedno przerwanie, np. posiadając dyski SCSI można wyłączyć oba kontrolery IDE zwalniając IRQ14 i IRQ15. Kolejną metodą jest wykorzystanie USB, które umożliwia przyłączenie urządzeń w zasadzie dowolnego typu nie obciążając dodatkowo systemu przerwań oraz nie wymuszając każdorazowego restartu systemu.

Podsumowanie

Wydaje mi się, że przedstawiona powyżej zasada działania systemu przerwań oraz przykłady rozwiązywania problemów pozwolą wszystkim na uporanie się nawet z tak wymagającymi urządzeniami jak płyty głównymi ECS, tunerami telewizyjnymi Pixelview, skanerami Plustek czy aparatami cyfrowymi Agfa. Niestety dopóki architektura PC nie zostanie całkowicie przebudowana (na co, na razie się nie zanosi) trzeba sobie radzić z ograniczoną liczbą IRQ.

    
K O M E N T A R Z E
    

  1. no tak to dosyc wazny problem (autor: b0bik | data: 20/10/02 | godz.: 11:13)
    jesli ktos ma duzo o urzadzen, ja mam SBLive PixelViewTV nVidia Tnt16 ATAPCI COntroller no i Sieciowke : ( ijednym slowem jest burdel, bo nawet jak w biosie zarezerwuje przerwania , albo wyrzuce cos z systemu to zawsze mam dwa urzadzenia na jednym przerwaniu : ( Kapota

    
D O D A J   K O M E N T A R Z
    

Aby dodawać komentarze, należy się wpierw zarejestrować, ewentualnie jeśli posiadasz już swoje konto, należy się zalogować.

    
All rights reserved ® Copyright and Design 2001-2018, TwojePC.PL