Zasoby systemowe

  25 lipiec 2010
Oceń ten artykuł
(0 głosów)

Do zasobów systemowych należy zaliczyć kanały komunikacyjne, adresy i innego typu sygnały generowane przez urządzenia podłączone do magistrali. Do niskopoziomowych zasobów systemowych należy zaliczyć:

  • adresy pamięci,
  • kanały IRQ (ang. interrupt request Channel),
  • kanały DMA (ang. direct memory access),
  • adresy portów I/O (wejścia-wyjścia).

Przerwania

Kanały IRQ (ang. interrupt request Channel) lub, inaczej mówiąc, przerwania sprzętowe wykorzystywane są przez wiele różnych urządzeń do poinformowania płyty głównej, że konieczne jest wykonanie żądania.

Kanałom IRQ odpowiadają ścieżki znajdujące się na płycie głównej i w gniazdach rozszerzeń. Po wywołaniu określonego przerwania specjalny mechanizm przejmuje kontrolę nad systemem, który najpierw zapisuje na stosie zawartość wszystkich rejestrów procesora, a następnie powoduje, że system sprawdza wektorową tablicę przerwań. Tabela zawiera listę adresów pamięci, które odpowiadają kanałom przerwań. Zależnie od typu wywołanego przerwania jest uruchamiany program z nim powiązany.

Wskaźniki wektorowej tabeli przerwań wskazują na adres określonego sterownika współpracującego z kartą, która wygenerowała przerwanie. Przykładowo, w przypadku karty sieciowej wektor może wskazywać na adres sterowników, które zostały załadowane do pamięci i ją obsługują. W przypadku kontrolera dysków wektor może z kolei wskazywać na kod BIOS-u, który jest z nim kompatybilny.

W momencie gdy określona funkcja sterownika zakończy przetwarzanie żądania przekazanego przez kartę, program zarządzający przerwaniami przenosi zawartość stosu do rejestrów procesora, po czym oddaje kontrolę do systemu, który ponawia wykonywanie operacji wstrzymanych w momencie wystąpienia przerwania.

Dzięki wykorzystaniu przerwań, system może odpowiadać na zewnętrzne zdarzenia w określonym czasie. Za każdym razem, gdy port szeregowy przesyła do systemu bajt w celu zagwarantowania, że zostanie on wczytany jeszcze przed przesłaniem kolejnego bajta danych, generowane jest przerwanie.

Z reguły, poza nielicznymi wyjątkami, priorytet sprzętowych przerwań jest określany za pomocą liczb, przy czym przerwania o najwyższym priorytecie otrzymują najniższe wartości. Przerwania o wyższym priorytecie mają pierwszeństwo w stosunku do tych z niższym. W efekcie w systemie może wystąpić kilka wzajemnie zagnieżdżonych przerwań jednocześnie.

Jeśli w takiej sytuacji dojdzie do przeciążenia systemu prowadzącego do wyczerpania zasobów stosu (zbyt wiele przerwań wygenerowanych w zbyt krótkim czasie), wtedy wystąpi błąd przepełnienia stosu i w efekcie system zawiesi się. Tego typu błąd zazwyczaj wyświetla w wierszu poleceń systemu DOS komunikat w postaci Internal stack overflow - system halted (Przepełnienie wewnętrznego stosu system zatrzymany).

Początkowo firma IBM opracowała metody współdzielenia przerwań przez urządzenia podłączone do magistrali ISA, ale niewiele z nich spełniało związane z tym wymagania, a zatem nie mogło z tej możliwości korzystać. Magistrala PCI została zaprojektowana tak, aby umożliwiać współdzielenie przerwań. I faktycznie, prawie wszystkie karty PCI są skonfigurowane do wykorzystania przerwania PCI INT#A, a zatem po podłączeniu do magistrali PCI współdzielą je. Rzeczywisty problem wynika stąd, że w systemie dostępne są dwa zestawy przerwań sprzętowych przerwania PCI i ISA. W przypadku kart PCI, przerwania PCI są mapowane na przerwania ISA, które następnie nie mogą być współdzielone. A zatem, w wielu sytuacjach konieczne jest przydzielenie każdej karcie osobnego przerwania, nawet kartom PCI. Konflikt związany z przydzielaniem przerwań ISA urządzeniom PCI w przypadku pierwszych płyt głównych wyposażonych w magistralę PCI spowodował wiele problemów z ich konfiguracją mających miejsce nawet już po wprowadzeniu na rynek systemu Windows 95 wykorzystującego mechanizm Plug and Play.

Problem związany ze współdzieleniem przerwań przez karty PCI został wyeliminowany po opracowaniu funkcji o nazwie PCI IRQ Steering obsługiwanej przez nowsze wersje systemów operacyjnych (począwszy od Windows 95 OSR 2.x) i BIOS. Funkcja PCI IRQ Steering umożliwia systemowi kompatybilnemu z PnP, takiemu jak Windows, wykonanie dynamicznego mapowania lub "przekierowania" kart PCI (z których prawie wszystkie wykorzystują przerwanie PCI INT#A) na standardowe przerwania komputera PC. Ponadto istnieje możliwość mapowania kilku kart PCI do tego samego przerwania.

Przerwania sprzętowe często są określane terminem przerwań maskowanych (ang. maskable interrupts). Oznacza to, że przerwania przez krótki okres czasu, gdy procesor wykonuje inne ważne operacje, mogą być zamaskowane lub wyłączone. Prawidłowym zarządzaniem przerwaniami pozwalającym uzyskać jak najlepszą wydajność systemu zajmuje się BIOS i programy narzędziowe.

Ze względu na to, że w systemie wyposażonym w magistralę ISA przerwania nie mogą być współdzielone, często dochodzi do konfliktów, które mogą nawet, po zainstalowaniu kilku kart, spowodować wyczerpanie dostępnych zasobów. Jeśli dwie karty do komunikacji z systemem wykorzystują to samo przerwanie, wtedy zaistniały konflikt może uniemożliwić ich poprawne funkcjonowanie.

Przerwania 8-bitowej magistrali ISA

Systemy PC i XT oparte na 8-bitowym procesorze 8086 dysponują ośmioma różnymi odmiennymi przerwaniami sprzętowymi. Instalacja w systemie PC/XT kilku urządzeń wymagających przypisania przerwania IRQ może się okazać prawdziwą "drogą przez mękę". Wynika to stąd, że w tego typu systemach jedyne rozwiązanie związane z niedoborem wolnych przerwań polega na wyjęciu najmniej potrzebnej karty.

Przerwania 16-bitowej magistrali ISA, EISA i MCA

Wraz z pojawieniem się komputera AT opartego na procesorze 286 zwiększono ilość przerwań, które mogły być wykorzystane przez zewnętrzne urządzenia podłączone do magistrali. Dzięki zastosowaniu dwóch kontrolerów przerwań możliwe było ich podwojenie do 16. Przerwania generowane przez drugi z układów były przekazywane za pośrednictwem nieużywanego przerwania IRQ 2 pierwszego kontrolera. Wskutek takiego rozwiązania w pełni dostępnych jest 15 przerwań, natomiast przerwanie IRQ 2 jest trwale niedostępne. Dzięki zastosowaniu przerwania IRQ 2 pierwszego kontrolera do przekazywania przerwań generowanych przez drugi kontroler, wszystkim nowym przerwaniom jest przypisywany zagnieżdżony poziom priorytetu przerwań z zakresu od IRQ 1 do IRQ 3. Oznacza to, że przerwanie IRQ 15 będzie miało wyższy priorytet od przerwania IRQ 3.

W celu uniknięcia problemów z kartami wykorzystującymi przerwanie IRQ 2, twórcy systemu AT przydzielili jednemu z nowych przerwań (IRQ 9) zadanie wypełnienia luki pozostawionej po zajętym przerwaniu IRQ 2. Oznacza to, że gdy w nowszym systemie zostanie zainstalowana karta wykorzystująca przerwanie IRQ 2, to tak naprawdę zostanie jej przypisane przerwanie IRQ 9. Niektóre obecnie dostępne karty mają nawet oznaczenie IRQ 2/9, natomiast na pozostałych może być tylko IRQ 2 lub IRQ 9. Niezależnie od tego co widnieje na oznaczeniach, nigdy nie przydzielaj dwóm kartom jednakowego przerwania.

Należy zauważyć, że przerwania 0, 1, 2, 8 i 13 nie są dostępne dla gniazd magistrali, dlatego też nie mogą być wykorzystane przez karty. Przerwania 8, 10, 11, 12, 13, 14 i 15 są obsługiwane przez drugi kontroler przerwań i mogą być udostępnione tylko tym kartom, które są instalowane w gnieździe 16-bitowej magistrali dysponującej odpowiednimi ścieżkami. Miejsce przerwania IRQ 2 gniazda 8-bitowej magistrali zostało zajęte przez przerwanie IRQ 9, a tym samym jest ono dostępne dla 8-bitowych kart, które traktują je jak przerwanie IRQ 2.

Przerwania PCI

Magistrala PCI obsługuje sprzętowe przerwania (IRQ), które mogą być wykorzystane przez urządzenia PCI do poinformowania magistrali o swojej obecności. Cztery przerwania PCI noszą nazwy INTA#, INTB#, INTC#, i INTD#. Wymienione przerwania charakteryzują się wysoką czułością (ang. level-sensitive), co oznacza, że wykorzystywane sygnały umożliwiają ich współdzielenie pomiędzy kartami PCI. W rzeczywistości, wszystkie jednoukładowe lub jednofunkcyjne urządzenia lub karty PCI wykorzystują tylko jedno przerwanie, którym musi być INTA#. Jest to jedna z zasad określonych w specyfikacji standardu PCI. Jeśli w układzie lub na karcie umieszczonych jest więcej niż jedno urządzenie, wtedy korzystają one z dodatkowych przerwań INTB#- INTD#. Ze względu na istnienie niewielu wielofunkcyjnych układów lub kart PCI, praktycznie rzecz biorąc, wszystkie urządzenia podłączone do magistrali PCI korzystają z przerwania INTA#.

Aby magistrala PCI mogła prawidłowo funkcjonować w komputerze PC, konieczne jest mapowanie przerwań PCI na przerwania ISA. Ze względu na to, że przerwania ISA nie mogą być współdzielone, w większości przypadków każda karta PCI korzystająca z przerwania INTA# magistrali PCI musi być mapowana do innego przerwania ISA. Przykładowo, jeśli system jest wyposażony w cztery gniazda PCI, w których zainstalowano karty PCI, wtedy każda z nich będzie korzystała z przerwania INTA# Dodatkowo, w większości przypadków, każda karta PCI zostanie zamapowana do innego dostępnego przerwania ISA takiego jak IRQ 9, IRQ 10, IRQ 11 lub IRQ 5.

Odszukanie unikalnego przerwania dla każdego urządzenia zarówno podłączonego do magistrali PCI, jak i ISA zawsze stanowiło problem. Powodem tego jest po prostu niewystarczająca pula wolnych przerwań. Przydzielenie dwóm urządzeniom ISA tego samego przerwania nigdy nie było możliwe, ale w przypadku większości nowszych komputerów współdzielenie przerwań pomiędzy wieloma urządzeniami PCI jest już dopuszczalne. Nowsze wersje BIOS-u, jak również systemów operacyjnych wyposażonych w funkcję PnP takich jak Windows 95B (OSR 2 lub nowszy), Windows 98 i Windows 2000 są kompatybilne z funkcją PCI IRQ Steering.

Aby w pełni wykorzystać możliwości funkcji PCI IRQ Steering, zarówno BIOS, jak i system operacyjny muszą ją obsługiwać. Starsze wersje BIOS-u oraz system Windows 95 i 95A nie są z nią kompatybilne.

Zazwyczaj przydzielaniem urządzeniom PCI niepowtarzalnych przerwań zajmuje się BIOS. Jeśli system obsługuje funkcję PCI IRQ Steering i jest ona uaktywniona, wtedy system operacyjny Windows przejmuje zadanie przydziału przerwań urządzeniom PCI. Nawet po włączeniu funkcji PCI IRQ Steering, BIOS początkowo w dalszym ciągu przypisuje przerwania. Chociaż system Windows dysponuje możliwością zmiany ustawionych przerwań, to jednak zazwyczaj nie wykonuje tego w sposób automatyczny. Wyjątkiem jest sytuacja, gdy wystąpią konflikty, które muszą być koniecznie wyeliminowane. Jeśli zdarzy się, że zabraknie wolnych przerwań, wtedy funkcja PCI IRQ Steering może spowodować, że system Windows przypisze kilku urządzeniom PCI jedno przerwanie, a tym samym umożliwi wszystkim komponentom systemu prawidłowe funkcjonowanie. Przy braku funkcji PCI IRQ Steering system Windows w momencie wyczerpania puli dostępnych przerwań zaczyna wyłączać kolejne urządzenia.

Magistrala PCI współpracuje z dwoma typami urządzeń nadrzędnymi (ang. bus masters inicjatorami) i podrzędnymi (ang. slaves docelowymi). Urządzenie nadrzędne jest w stanie przejąć kontrolę nad magistralą i zainicjować operację przesłania danych, natomiast urządzenie podrzędne w zamierzeniu jest adresatem tej operacji. Większość urządzeń PCI może pełnić funkcję zarówno urządzenia nadrzędnego, jak i podrzędnego. Aby spełnić wymagania zawarte w specyfikacji PC 97 lub nowszej, wszystkie gniazda PCI muszą współpracować z kartami będącymi urządzeniami nadrzędnymi.

Magistrala PCI jest magistralą arbitrażową. Oznacza to, że główny arbiter (część kontrolera magistrali PCI zawarta w chipsecie płyty głównej) zarządza wszystkimi operacjami przesłania danych przez magistralę, dzięki czemu udziela sprawiedliwego i kontrolowanego dostępu wszystkim urządzeniom do niej podłączonym. Zanim urządzenie nadrzędne może przejąć kontrolę nad magistralą, musi najpierw przesłać do głównego arbitra żądanie przejęcia kontroli, a jeśli ją uzyska, może sterować magistralą tylko przez ograniczoną ilość cykli. Dzięki zastosowaniu takiego arbitrażu wszystkie urządzenia nadrzędne magistrali uzyskują do niej jednakowy dostęp, a ponadto rozwiązanie to zapobiega sytuacjom, w których jedno urządzenie zablokuje magistralę, jak również zakleszczeniom spowodowanym przez próbę uzyskania jednoczesnego dostępu przez wiele urządzeń. Tym sposobem magistrala PCI działa podobnie jak sieć lokalna LAN (ang. local area network) z tą różnicą, że znajduje się ona w całości wewnątrz systemu i pracuje ze znacznie wyższą częstotliwością niż typowe sieci zewnętrzne łączące komputery.

Kanały DMA

Kanały DMA (ang. Direct Memory Access) są wykorzystywane przez urządzenia komunikacyjne, które wysyłają i odbierają dane z dużą szybkością. Port szeregowy lub równoległy nie korzysta z kanału DMA, natomiast karta dźwiękowa lub kontroler SCSI dość często wymagają jego przydzielenia. Jeśli urządzenia nie korzystają z kanału DMA jednocześnie, wtedy może zostać im przydzielony kanał współdzielony. Przykładem jest karta sieciowa i kontroler urządzenia służącego do archiwizacji danych na taśmie. Oba urządzenia współdzielą kanał DMA 1, ale w momencie, gdy karta sieciowa jest aktywna, wykonanie kopii zapasowej jest niemożliwe. Aby możliwa była jednoczesna praca obu urządzeń, należy przydzielić karcie sieciowej unikalny kanał DMA.

Kanały DMA 8-bitowej magistrali ISA

8-bitowa magistrala ISA dysponuje czterema kanałami DMA pozwalającymi na wykonywanie bardzo szybkich operacji przesyłania danych pomiędzy urządzeniami wejścia-wyjścia i pamięcią. Trzy kanały udostępnione są gniazdom rozszerzeń. Ze względu na to, że większość systemów jest wyposażona zarówno w kontroler stacji dyskietek, jak i dysków twardych, komputery zawierające 8-bitową magistralę ISA dysponują tylko jednym wolnym kanałem DMA.

Kanały DMA 16-bitowej magistrali ISA

Od czasów wprowadzenia procesora 286, magistrala ISA oferowała osiem kanałów DMA, przy czym siedem z nich było udostępnionych gniazdom rozszerzeń. Podobnie jak miało to miejsce w przypadku wcześniej omówionych linii IRQ, nowe kanały DMA zostały wygenerowane przy użyciu drugiego kontrolera DMA połączonego kaskadowo z pierwszym. Kanał DMA 4 służy do utworzenia kaskadowego połączenia kanałów 0-3 z mikroprocesorem. Kanały 0-3 mogą być wykorzystywane przy 8-bitowych operacjach przesyłania danych, natomiast kanały 5-7 przy operacjach 16-bitowych.

Należy zauważyć, że karty PCI nie korzystają z kanałów DMA magistrali ISA. Tego typu kanały są używane tylko przez karty ISA. Niezależnie od tego, niektóre karty PCI, takie jak karty dźwiękowe, w celu współpracy z oprogramowaniem starszego typu emulują kanały DMA.

Jedynym standardowym kanałem DMA spotykanym w każdym systemie jest DMA, który powszechnie jest wykorzystywany przez kontroler stacji dyskietek. Kanał DMA 4 nie jest używany i nie jest udostępniany gniazdom magistrali. Kanały DMA 1 i 5 najczęściej są przydzielane kartom dźwiękowym ISA takim jak Sound Blaster 16 lub nowszym kartom PCI emulującym, w celu utrzymania kompatybilności wstecz, starsze modele. Tego typu karty do wykonywania szybkich operacji przesyłania danych wykorzystują zarówno 8-, jak i 16-bitowe kanały DMA.

Adresy portów I/O

Porty I/O komputera umożliwiają komunikację pomiędzy jego urządzeniami a oprogramowaniem. Jeśli zamierzasz połączyć się z portem szeregowym, musisz wiedzieć, na jakim porcie I/O nasłuchuje. Podobnie, jeśli chcesz odebrać z niego dane, musisz prowadzić nasłuch na tym samym kanale, na którym realizowana jest transmisja danych.

W przeciwieństwie do przerwań i kanałów DMA, system ma do dyspozycji sporą ilość portów I/O. Jest 65 553 portów ponumerowanych od 0000h do FFFFh, co w największym stopniu stanowi skutek uboczny architektury procesora firmy Intel. Chociaż większość urządzeń dla własnego użytku wymaga 8 portów, to jednak przy takiej liczbie dostępnych portów raczej niezbyt szybko zapowiada się na ich wyczerpanie. Największym powodem do zmartwień jest kwestia związana z przydzieleniem dwóm urządzeniom tego samego portu.

Większość nowszych systemów wykorzystujących w mechanizm Plug and Play rozwiązuje każdy konflikt portów, co sprowadza się do przypisania jednemu z urządzeń sprawiających problemy innego, alternatywnego. Jeden z mankamentów związanych z portami I/O wynika ze stosowania, podobnie jak w przypadku pamięci, adresów heksadecymalnych. Ale przecież porty nie są pamięcią. Różnica między nimi jest taka, że jeśli dane zostaną przesłane pod adres pamięci 1000h, to zostaną zapisane w komórkach modułu SIMM lub DIMM. Jeśli natomiast dane zostaną wysłane pod adres portu I/O 1000h, znajdą się w magistrali na określonym "kanale" i, jeśli jakieś urządzenie na nim nasłuchuje, wtedy "usłyszy" jego zawartość. Jeśli jednak nie jest prowadzony nasłuch tego adresu portu, wtedy dane dotrą na koniec magistrali i zostaną przejęte przez umieszczone tam rezystory.

Głównym zadaniem sterowników jest pośredniczenie pomiędzy urządzeniami znajdującymi się pod różnymi adresami portów. Sterownik musi wiedzieć, którym portem się posłużyć, aby nawiązać komunikację z urządzeniem i odwrotnie. Zazwyczaj nie stanowi to większego problemu, ponieważ sterownik i urządzenie zostały opracowane przez jednego producenta.

Aby dokładnie poznać sposób działania urządzeń, należy zajrzeć do dołączonej dokumentacji lub poszukać informacji na ich temat w oknie Menedżera urządzeń systemu Windows. Należy zauważyć, że w przypadku niektórych urządzeń w dokumentacji może być tylko podany adres początkowy zamiast pełnego zakresu używanych adresów portów I/O.

Prawie wszystkie urządzenia podłączone do magistral systemowych wykorzystują adresy portów I/O. Większość z nich posługuje się nawet wartościami standardowymi, dzięki czemu konflikty i związane z nimi problemy pojawiają się bardzo rzadko.

Więcej w tej kategorii: « Rodzaje magistral I/O

Skomentuj

Popularne Artykuły

Pomagaj z nami

Warto zobaczyć

Reklama

Nowości

Bestsellery książkowe

  • Autor:
  • Cena:
  • Status:

Książka chwilowo niedostępna.

Szukaj

Newsletter

Kupuj najtaniej

Społeczność