Mire használják az irq megszakítási számot? A rendszer megszakításai betöltik a processzort

A konfliktus olyan helyzet, amelyben több objektum egyszerre próbál hozzáférni egy olyan erőforráshoz, amelyet csak az egyiknek szán. Megszakítási ütközés akkor fordul elő, ha több eszköz ugyanazt a megszakítási vonalat használja kérési jel küldésére, és nincs mechanizmus az egyidejű kérések kezelésére. Ha a vezérlő fogadó vezérlő nem működik a kérést küldő eszközzel, akkor vagy hiba lép fel, vagy az egyik eszköz egyszerűen nem működik.

Felmerül a kérdés: több eszköz is használhatja ugyanazt a megszakítási vonalat, vagy elvileg lehetetlen? Végül is, ha a vezető meg tudja határozni, hogy kitől érkezett pontosan a kérés, akkor csak a "saját" eszköz jeleire reagál, figyelmen kívül hagyva a többieket. De ezt valamilyen módon előre ki kell kötni, különben a konfliktus elkerülhetetlen.

A helyi PCI buszt úgy tervezték, hogy megszakítsa a megosztást. Minden PCI -eszköznek megfelelően kell működnie ugyanazon a megszakítási vonalon más PCI -eszközökkel. Ez a következő módon történik: a jel megszakítás vonalon való jelenlétének tényét nem az él határozza meg, azaz a feszültségszint változása, de maga a tény, hogy egy bizonyos feszültség jelen van. Több eszköz is képes egyszerre változtatni a feszültséget a vonalon, mintegy sorba állva a szervizeléshez.

Így, ha ugyanazt az IRQ -t több PCI -eszköz osztja meg, az definíció szerint nem ütközik (ábra). Néha azonban problémák merülnek fel. Először is, nem minden PCI -eszköz működik megfelelően ugyanazon a megszakítási vonalon másokkal. Másodszor, az illesztőprogramok néha hibákat okoznak, amelyek miatt nem tudják helyesen meghatározni a jelforrást, zavarva a többi illesztőprogramot. Harmadszor, nem minden eszköz működik a PCI buszon; például az ISA eszközök, amelyek például COM / LPT portvezérlőket tartalmaznak, nem oszthatják meg a megszakításokat másokkal.

Rizs. Win2000 Eszközkezelő IRQ térkép - IO PIC Intel 440BX lapkakészlet

Rizs. Win2000 IRQ TÉRKÉP - IO APIC - KT266a lapkakészleten keresztül

Ennek eredményeként előfordulhatnak olyan helyzetek, amikor a számítógép gyakran fagyni kezd, nem hajlandó semmilyen funkciót végrehajtani, vagy akár egyszerűen beleesik az ún. kék képernyő halál".

Apic (Speciális programozható megszakításvezérlő)

Amint fentebb látható, a megszakítási vonal nagyon szűkös erőforrás a számítógép számára. A számítástechnikai ipar fejlődésével azonban folyamatosan nő a különböző külső eszközök száma a számítógépben. Például egy alaplapon lehet 5-6 PCI-bővítőhely, AGP-bővítőhely, beépített IDE-vezérlő, beépített SCSI-vezérlő, beépített 1/2 portos hálózati adapter stb. Mindezek az eszközök megszakításokat igényelnek. 16 IRQ vonal fokozatosan hiányzott.

APIC Egy megszakításvezérlő, amely lehetővé teszi, hogy 16 helyett 24 hardver megszakítást használjon. A 16 hardver megszakítás korlátja, 1982 óta változatlan, visszatartotta a további eszközök telepítését a személyi számítógépben. 2001 végén megjelentek az első APIC -vel ellátott alaplapok.

Rizs. A rendszer megszakítása többprocesszoros környezetben.

Az előző leírás az egyprocesszoros rendszerekhez tervezett PIC -ekre vonatkozott. Ha a rendszer két vagy több processzort tartalmaz, ez a megközelítés már nem megengedett, és összetettebb PIC -k szükségesek.

Minden modern processzorok x86 tartalmazza a helyi APIC -t. Minden helyi APIC 32 bites regiszterekkel, belső órával, helyi időzítővel és két további IRQ vonallal rendelkezik, a LINT0 és LINT1, amelyek a helyi APIC megszakítások számára vannak fenntartva. Minden helyi APIC külső I / O APIC -hez van csatlakoztatva.

Az I / O APIC 24 IRQ sort tartalmaz, 24 bemenetű megszakítási útválasztási táblázatot, programozható regisztereket és üzenetblokkot az üzenetek APIC buszon történő küldéséhez és fogadásához. A 8259A IRQ csapjaival ellentétben a megszakítási prioritás nincs a pin számhoz kötve.

A megszakítási útválasztási táblázat minden bejegyzése egyedileg programozható a megszakításvektor és prioritásának, a megszakítást kezelő processzornak és ennek a processzornak a kiválasztásához. A megszakítási útválasztási táblázat információi arra szolgálnak, hogy minden külső jelet egy vagy több helyi APIC -hez címzett üzenetre fordítsanak az APIC buszon keresztül.

Statikus eloszlás

Az IRQ jel a helyi megszakítási átirányítási táblázat bejegyzésben felsorolt ​​helyi APIC -ekhez kerül. A megszakítást egy adott CPU -ra, több CPU -ra vagy az összes CPU -ra szállítják.

Dinamikus allokáció

Az IRQ jel a processzor helyi APIC -jéhez kerül, amely a legalacsonyabb prioritással hajtja végre a folyamatot.

Minden helyi APIC rendelkezik programozható feladatprioritási regiszterrel, amely az aktuális folyamat prioritásának kiszámítására szolgál. Az Intel azt várja, hogy ezt a regisztert az operációs rendszer kernelje módosítsa minden folyamatkapcsolón.

A megszakítások processzorok közötti elosztása mellett a multi-APIC rendszer lehetővé teszi a CPU számára, hogy interprocesszoros megszakításokat generáljon. Ha egy CPU megszakítást akar küldeni egy másik CPU -nak, akkor a megszakítási vektort és a helyi APIC azonosítót a helyi APIC megszakítási parancsregiszterében (ICR) tárolja. Az üzenet ezután az APIC buszon keresztül eljut a cél helyi APIC -hez, amely kiadja a megfelelő megszakítást a CPU -nak.

Sok egyprocesszoros rendszer jelenleg tartalmaz egy I / O APIC chipet, amely kétféleképpen konfigurálható:

1. Alapértelmezett 8259A PIC a CPU -hoz kapcsolódva. A helyi APIC le van tiltva, és a LINT0 és LINT1 két sor INTR és NMI csapként van konfigurálva.

2. Szabványos külső I / O APIC -ként. A helyi APIC engedélyezve van, és minden külső megszakítás az I / O APIC -en keresztül érkezik.

  • Alieva Elena Viktorovna, diák
  • Ufa Állami Repülési Műszaki Egyetem
  • MEGSZAKÍTÁS VEZÉRLŐ
  • VEZÉRLŐ
  • HARDVER -KAPCSOLATOK
  • MEGSZAKÍTÁS

A megszakítás a fő számítási folyamat ideiglenes megszakítását jelenti a hardver vagy a program működése által okozott tervezett vagy nem tervezett műveletek végrehajtása érdekében. A megszakítás mechanizmusa hardveres szinten támogatott. A hardver megszakítások a mikroprocesszor reakciójaként jelentkeznek valamilyen eszköz (billentyűzet, rendszeróra, billentyűzet, HDD stb.), ezek a megszakítások az előfordulás időpontjában aszinkronok, azaz véletlenszerű időpontokban fordulnak elő. A megszakításvezérlő a bejövő szolgáltatáskérések feldolgozására és döntésére szolgál központi feldolgozó egység perifériás eszközökről. A megszakításoknak van egy bizonyos prioritása, amely lehetővé teszi a megszakításvezérlő számára, hogy előnyben részesítse Ebben a pillanatban időt az egyik eszközre, nem a másikra. Egy modern számítógépben akár 16 külső és perifériás eszköz is létezik, amelyek megszakításokat generálnak.

  • Dokumentumáramlás automatizálása egy gyártó vállalkozás raktárában
  • Technológiákat, funkciókat, alkalmazásokat és hatékonyságot hív meg
  • A jogi osztály információs rendszerének modelljének kidolgozása a vállalkozás támogatására és szerződéseinek megkötésére

Bevezetés

A megszakítás a fő számítási folyamat ideiglenes megszakítását jelenti a hardver vagy a program működése által okozott tervezett vagy nem tervezett műveletek végrehajtása érdekében. Azok. ez egy folyamat, amely ideiglenesen átkapcsolja a mikroprocesszort egy másik program végrehajtására, majd visszatér a megszakított programhoz. A billentyűzet valamelyik gombjának megnyomásával azonnali hívást kezdeményezünk a programhoz, amely felismeri a kulcsot, beteszi annak kódját a billentyűzetpufferbe, ahonnan egy másik program olvassa be. Azok. a mikroprocesszor egy időre megszakítja a végrehajtást aktuális programés átkapcsol a megszakításkezelőre, az úgynevezett megszakításkezelőre. Miután a megszakításkezelő befejezte munkáját, a megszakított program folytatja a végrehajtást attól a ponttól, ahol felfüggesztették. A megszakításkezelő címét a megszakítási vektor táblázatból számítják ki.

A megszakítás mechanizmusa hardveres szinten támogatott. A forrástól függően a megszakítások a következőkre oszlanak:

  • hardver- a mikroprocesszor reakciójaként lépnek fel valamilyen eszköz (billentyűzet, rendszeróra, billentyűzet, merevlemez stb.) fizikai jelére, ezek a megszakítások az előfordulás idején aszinkronok, azaz véletlenszerűen fordulnak elő;
  • programadó- mesterségesen hívják a program megfelelő parancsának segítségével (int), az operációs rendszer egyes műveleteinek végrehajtására szolgálnak, szinkronban vannak;
  • kivételek- a mikroprocesszor reakciója egy nem szabványos helyzetre, amely egy bizonyos programparancs végrehajtása során merült fel a mikroprocesszorban (osztás nullával, megszakítás a TF jelzővel (nyomkövetés)).

A rendszer hardverének megszakítása

A megszakítási rendszer olyan szoftverek és hardverek gyűjteménye, amelyek megvalósítják a megszakítási mechanizmust.

A megszakító rendszer hardvere a következőket tartalmazza:

  • mikroprocesszoros kimenetek - jelek generálódnak rajtuk, amelyek értesítik a mikroprocesszort arról, hogy valamilyen külső eszköz "figyelmet kér" (INTR), vagy hogy valamilyen esemény vagy katasztrofális hiba (NMI) sürgős feldolgozása szükséges
  • INTR - tű a megszakítási kérés bemeneti jeléhez,
  • NMI - csap a nem maszkolható megszakítás bemeneti jelhez
  • INTA - kimenet a megszakítási jel mikroprocesszor általi visszaigazolásának kimeneti jeléhez (ez a jel a 8259A vezérlő mikroáramkör azonos nevű bemenetére kerül;
  • 8259A programozható megszakításvezérlő (nyolc különböző külső eszköz megszakító jeleinek rögzítésére tervezték; mikroáramkör formájában készül; általában két sorba kapcsolt mikroáramkört használnak, így a szám lehetséges források külső megszakítások legfeljebb 15 plusz egy nem maszkolható megszakítás; ő képezi a megszakítás vektor számát és kiadja annak adatbuszát);
  • külső eszközök (időzítő, billentyűzet, mágneses lemezek stb.)

A kezelés megszakítása

A megszakítás események sorozatát váltja ki, amelyek mind a hardverben, mind a szoftver... Ábrán. Az 1. ábra ezen események tipikus sorrendjét mutatja.

Az I / O eszköz befejezésekor a következők történnek:

  • A készülék megszakítási jelet küld a processzornak.
  • Mielőtt válaszolna egy megszakításra, a processzornak be kell fejeznie az aktuális parancs végrehajtását (lásd 1. ábra).
  • A processzor ellenőrzi, hogy van -e megszakítás, észleli és elküldi a megszakítást küldő eszközt, jelezve a sikeres vétel jelét. Ez a jel lehetővé teszi a készülék számára, hogy törölje a megszakítás jelét.
1. ábra Program időzítése: Lassú I / O

Most a processzornak fel kell készülnie arra, hogy átadja az irányítást a megszakításkezelőnek. Először mindent meg kell mentenie fontos információ, hogy később visszatérhessen az aktuális program helyére, ahol szüneteltette. A minimálisan szükséges információ a program állapotszava és a következő végrehajtott parancs címe, amely a programszámlálóban található. Ezeket az adatokat a rendszervezérlő veremre tolja.

2. ábra Egyszerű megszakítás kezelése

Továbbá a megszakításkezelő bemenetének címe, amely felelős a megszakítás feldolgozásáért, betöltődik a processzor programszámlálójába. A számítógép architektúrájától és az operációs rendszer eszközétől függően lehet egy program az összes megszakítás kezelésére, vagy lehet saját feldolgozó programja minden eszközhöz és minden megszakítási típushoz. Ha több program áll rendelkezésre a megszakítások kezelésére, a processzornak meg kell határoznia, hogy melyikhez kell hozzáférnie. Ez az információ az eredeti megszakítási jelben lehet; ellenkező esetben a szükséges információk megszerzése érdekében a processzornak sorban ki kell kérdeznie az összes eszközt, hogy megállapítsa, melyik küldte a megszakítást.

Amint új értéket tölt be a programszámlálóba, a processzor a következő utasításciklusra lép, és elkezdi lekérni azt a memóriából. Mivel a parancsot lekérjük a cellából, amelynek számát a programszámláló tartalma határozza meg, a vezérlés átadódik a megszakítási rutinnak. A program végrehajtása a következő műveleteket foglalja magában.

A programszámláló tartalma és a megszakított program állapotszava már a rendszer veremben van tárolva. Ez azonban nem minden, a végrehajtható program állapotára vonatkozó információ. Például el kell mentenie a processzorregiszterek tartalmát, mivel ezekre a regiszterekre szükség lehet a megszakításkezelő számára. Ezért minden információt el kell menteni a program állapotáról. A megszakításkezelő általában azzal kezdi, hogy az összes regiszter tartalmát felírja a veremre. A megőrzendő egyéb információkat a 3. fejezet "Folyamatok leírása és ellenőrzése" tárgyalja. Ábrán. egy egyszerű példa látható, amelyben a felhasználói program megszakad, miután végrehajtotta az utasítást az N cellából. Az összes regiszter tartalma, valamint a következő utasítás címe (N + 1), összesen M szót alkotva a veremre tolta. A veremmutató ezután frissül, hogy a verem új tetejére mutasson. A programszámláló is frissül, hogy jelezze a megszakítási rutin kezdetét.

A megszakításkezelő most megkezdheti munkáját. A megszakításkezelés magában foglalja az I / O műveletekhez vagy a megszakítást kiváltó eseményekhez kapcsolódó állapotinformációk ellenőrzését. Ez magában foglalhatja további utasítások vagy értesítési üzenetek küldését az I / O eszközökre.

A megszakítási feldolgozás befejezése után a korábban tárolt értékek kipattannak a veremből, amelyeket ismét a regiszterekbe helyeznek, és így folytatják azt az állapotot, amelyben a megszakítás előtt voltak.

Az utolsó lépés a program állapotszavának és a programszámláló tartalmának visszaállítása a veremből. Ennek eredményeként a megszakított program parancsa kerül végrehajtásra.

Tekintettel arra, hogy a megszakítás nem a programból meghívott alprogram, fontos, hogy a teljes helyreállítás megőrizze a megszakított program összes állapotinformációját. Megszakítás azonban bármikor és bárhol előfordulhat a felhasználói programban. Ez az esemény kiszámíthatatlan.

Megszakítás vezérlő

A megszakításvezérlőt úgy tervezték, hogy feldolgozza és eldöntse a perifériás eszközökről a központi processzorhoz érkező szolgáltatási kérelmeket. Hasonlóképpen a megszakításvezérlő funkciója összehasonlítható valamilyen főnök titkárával. A titkárnak a főnök által megadott prioritások és maga a látogató státusza alapján el kell döntenie, hogy a látogatók közül kit enged be először a főnöknek, és kit később. Hasonlóan a számítógépes rendszerekhez is lehetséges, hogy több perifériás eszköz megszakítási jelet vagy megszakítási kérést küld. A számítógépes szakirodalomban ezt a jelet IRQ -nak (Interrupt Request) nevezik.

Amint fentebb említettük, a megszakításoknak van egy bizonyos prioritása, ami lehetővé teszi, hogy a megszakításvezérlők adott időpontban az egyik eszközt részesítsék előnyben, a másikat nem. Egy modern számítógépben akár 16 külső és perifériás eszközök megszakításokat generál. Ezek az eszközök:
–IRQ 0, rendszer időzítő; –IRQ 1, billentyűzet; –IRQ 2, kaszkádba kapcsolt eszközök lekérdezésére szolgál; –IRQ 8, valós idejű óra; –IRQ 9, fenntartva; –IRQ 10, fenntartva; –IRQ 11, fenntartva; –IRQ 12, ps / 2 - egér; –IRQ 13, társprocesszor; –IRQ 14, merevlemez -vezérlő; –15 IRQ, fenntartva; –IRQ 3, COM2, COM4 portok; –IRQ 4, COM1, COM3 portok; –IRQ 5, LPT2 port; –IRQ 6, hajlékonylemez -meghajtó vezérlő; –IRQ 7, LPT1 port, nyomtató.

Itt a jelek csökkenő prioritási sorrendben vannak felsorolva. Látható, hogy az IRQ 2, majd az IRQ 8 után. A tény az, hogy egy időben a megszakításvezérlő két mikroáramkörből állt, az egyik a másikhoz volt csatlakoztatva. Ez a második mikroáramkör az IRQ 2 vonalhoz van csatlakoztatva, kaszkádot képezve. Az IRQ8 - IRQ 15 vonalakat szolgálja. Ezután az első mikroáramkör vonalai következnek.

A vezérlő működésének megszakítása

Megszakító vezérlők chip alapúnak tekintik Intel 8259A, amelyeket a nagyon régi számítógépekben használtak, a 386 -os sorozatú processzorokkal. Ezekhez a számítógépekhez rendszerint 2 8259A lapka volt kaszkádban csatlakoztatva, vagyis egyik a másikhoz. A megszakítás kérési vonalon keresztül közvetlenül a processzorhoz csatlakoztatott mikroáramkörök egyike a master vagy a master. A többit, amely hasonló csapokon keresztül kapcsolódik a mesterhez, rabszolgának nevezik.


3. ábra A megszakításvezérlők kapcsolási rajza és a központi processzorral való kölcsönhatásuk

A 3. ábra a megszakításvezérlők csatlakozási diagramját és a központi processzorral való interakcióját mutatja. A perifériás eszközök vagy slave vezérlők megszakítási jelei a master vezérlő IR0 - IR7 bemeneteire kerülnek. A fővezérlő belső logikája a bejövő kéréseket prioritás szempontjából dolgozza fel. Ha az eszközkérés prioritása elegendő, akkor a vezérlő INT kimenete jelet generál a processzor INTR bemenetére. Ellenkező esetben a kérés blokkolva van.

Ha a processzor engedélyezi a megszakításokat, akkor az aktuális parancs végrehajtásának befejezése után az INTA vonalon jelsorozatot generál, amely a slave vezérlőt immunitási állapotba hozza a bejövő új megszakítási kérésekkel szemben, és ezenkívül a belső A vezérlő regiszterei a vezérlő belső regisztereiből kerülnek ki az adatvonalra, amelyek alapján a processzor felismeri a megszakítás típusát.

A processzor a buszvezérlőn keresztül továbbítja a megszakítási engedélyt a megszakításvezérlőnek. Az RD jel arra szolgál, hogy a megszakításvezérlő elhelyezze a belső regiszterek tartalmát az adatbuszon. A WR jelzésen a megszakításvezérlő éppen ellenkezőleg, adatokat fogad az azonos nevű buszról, és beírja a belső regiszterekbe. Ennek megfelelően ez befolyásolja a megszakításvezérlő működési módját.

A CS bemenet csatlakozik a címbuszhoz, és ez a jel egy adott megszakítóvezérlő azonosítására szolgál. Az A0 bemenet a megszakító vezérlő portjára mutat az I / O térben.

Az IR0 - IR7 bemeneteket úgy tervezték, hogy megszakítási kéréseket fogadjanak a perifériás eszközöktől és a slave vezérlőktől.

A CAS0 - CAS2 kimenetek egy meghatározott slave vezérlő azonosítására szolgálnak.

A cikk a hardver megszakításokat és eszköz, funkciók, a megszakításvezérlő működése. Ez a vezérlő megszakítások jelentek meg az első PC-kompatibilis számítógépeken. Azóta mind a processzorok, mind maga a számítógép sokat változott, bár néhány pont megmaradt. Ezért a világosabbá tétel és a 8295A megszakításvezérlő megszervezése érdekében fontolóra vettük.

A fenti diagram nem csak a slave és master megszakító vezérlőknek, hanem a többi slave -nek is jeleket mutat. Azonban a számítógépének vagy laptopjának valójában 2 megszakításvezérlője van, a fentiek szerint: master és slave. De létrehozhat sajátot számítógépes rendszerekígy akár 64 slave megszakító vezérlőt használhat.

A modern számítógépekben sokáig megszakítja a vezérlő funkcióit Nem a 8259A mikroáramköröket hajtják végre, hanem a déli hidat. Azonban minden program és eszköz esetében minden ugyanaz marad. Ezenkívül a megszakításvezérlő programozható, és a belső regiszterekhez és portokhoz ugyanúgy kell hozzáférni, mint a 8259A vezérlőhöz.

Következtetés

Ebben a cikkben a megszakításokat vették figyelembe, nevezetesen a hardveres megszakításkezelést és a megszakításkezelés elvét. A megszakításvezérlőket és működési elvüket is figyelembe veszik.

A megszakítás a fő számítási folyamat ideiglenes megszakítását jelenti a hardver vagy a program működése által okozott tervezett vagy nem tervezett műveletek végrehajtása érdekében. A megszakítás mechanizmusa hardveres szinten támogatott. A hardver megszakítások a mikroprocesszor válaszaként jelentkeznek egy eszköz (billentyűzet, rendszeróra, billentyűzet, merevlemez stb.) Fizikai jelére; ezek a megszakítások aszinkronok az előfordulás idején, azaz véletlenszerű időpontokban fordulnak elő.

Megszakító vezérlő a központi processzorhoz érkező, a perifériás eszközökről érkező szolgáltatáskérések feldolgozására és döntésére szolgál. A megszakításoknak van egy bizonyos prioritása, ami lehetővé teszi megszakító vezérlő előnyben részesíteni egy adott időpontban az egyik eszközt a másikkal szemben. Egy modern számítógépben akár 16 külső és perifériás eszköz is létezik, amelyek megszakításokat generálnak.

Bibliográfia

  1. Előadás. Megszakítja. Email Forrás. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Rendszerszünetek | Hardver megszakítás | A kezelés megszakítása http://life-prog.ru/view_os.php?id=16
  3. Megszakítás vezérlő. Email Forrás: http://sdelaycomputersam.ru/Controller_irq.php,
  4. Megszakítja. Megszakítás vezérlő. Eszköz, funkciók, munka. Email Forrás: http://sdelaycomputersam.ru/Controller_irq.php
  5. Az Intel 8259A megszakításvezérlő E-erőforrás felépítése és inicializálása https://dev64.wordpress.com/2012/05/30/8259-programming/
Jó, ha az összeszerelés vagy a tervezett korszerűsítés után a számítógép először elindul, és stabilan, hibák nélkül működik. Sokkal rosszabb, ha váratlan problémák merülnek fel - spontán újraindítás és lefagyás, program összeomlás, működésképtelenség vagy "láthatatlanság" stb. Az első ok, ami ebben az esetben általában eszünkbe jut, egy megszakított konfliktus. Jól ismerjük -e ennek a jelenségnek a természetét, kellően felkészültek vagyunk -e ellene?

Mi az IRQ
A megszakítások az alapmechanizmusa a rendszer reakciójának a felmerülő eseményekre. A hardver megszakítások, amelyeket általában IRQ -knak (Interrupt ReQuest) neveznek fizikai jelek, amelynek segítségével az eszközvezérlő tájékoztatja a processzort valamilyen kérés feldolgozásának szükségességéről. Hagyományosan a megszakítás kezelési sémája így néz ki:
1) a processzor megszakítási jelet és annak számát kapja;
2) egy speciális táblázat segítségével keresik meg a megszakítás feldolgozásáért felelős program címét a megadott számmal - a megszakításkezelőt;
3) a processzor felfüggeszti jelenlegi foglalkozásés átvált a kezelő végrehajtására (általános esetben ez valamiféle meghajtó);
4) a vezető hozzáfér az eszközhöz, és ellenőrzi a megszakítás okát;
5) elindulnak a kért műveletek - inicializálás, eszközkonfiguráció, adatcsere stb.
6) az illesztőprogram kilép, és a processzor visszatér a megszakított feladathoz.
Nyilvánvaló, hogy a megszakítási mechanizmus megfelelő működéséhez két feltételnek kell teljesülnie: először is a kérési jelnek el kell érnie a processzort, másodsorban pedig a kezelő meghajtónak helyesen kell reagálnia erre a jelre. Konfliktus esetén a második feltétel nem teljesül: a megszakítás jel érkezik, de az erre adott reakció helytelennek bizonyul, aminek következtében (legjobb esetben) nem működő eszközünk van.

Konfliktus
Azt mondhatjuk, hogy a konfliktus olyan helyzet, amelyben több objektum egyszerre próbál hozzáférni egy olyan erőforráshoz, amelyet csak az egyiknek szán. Megszakítási ütközés akkor fordul elő, ha több eszköz ugyanazt a megszakítási vonalat használja kérési jel küldésére, és nincs mechanizmus az egyidejű kérések kezelésére. Ha a vezérlő fogadó vezérlő nem működik a kérést küldő eszközzel, akkor vagy hiba lép fel, vagy az egyik eszköz egyszerűen nem működik.
Felmerül a kérdés: több eszköz is használhatja ugyanazt a megszakítási vonalat, vagy elvileg lehetetlen? Végül is, ha a vezető meg tudja határozni, hogy kitől érkezett pontosan a kérés, akkor csak a "saját" eszköz jeleire reagál, figyelmen kívül hagyva a többieket. De ezt valamilyen módon előre ki kell kötni, különben a konfliktus elkerülhetetlen.
A helyi PCI buszt úgy tervezték, hogy megszakítsa a megosztást. Minden PCI -eszköznek megfelelően kell működnie ugyanazon a megszakítási vonalon más PCI -eszközökkel. Ez a következő módon történik: a jel megszakítás vonalon való jelenlétének tényét nem az él határozza meg, azaz a feszültségszint változása, de maga a tény, hogy egy bizonyos feszültség jelen van. Több eszköz is képes egyszerre változtatni a feszültséget a vonalon, mintegy sorba állva a szervizeléshez.
Így ugyanazon IRQ megosztása több PCI -eszköz között értelemszerűen nem ütközik. Néha azonban problémák merülnek fel. Először is, nem minden PCI -eszköz működik megfelelően ugyanazon a megszakítási vonalon másokkal. Másodszor, az illesztőprogramok néha hibákat okoznak, amelyek miatt nem tudják helyesen meghatározni a jelforrást, zavarva a többi illesztőprogramot. Harmadszor, nem minden eszköz működik a PCI buszon; például az ISA eszközök, amelyek például COM / LPT portvezérlőket tartalmaznak, nem oszthatják meg a megszakításokat másokkal. Ahhoz, hogy világos legyen, hogyan kerülheti el vagy oldhatja meg a konfliktusokat, meg kell értenie, hogyan kezelik az IRQ -kat.

Hardver megszakítások szervezése személyi számítógépben
Amint tudod, személyi számítógépek az IBM PC -vel kezdődött. Az architektúrája nyolc hardver megszakítási (IRQ) vonalat tartalmazott, amelyeket egy speciális vezérlő irányított. Mindegyikükhöz kapott egy számot, amely meghatározta a megszakítás prioritását és a kezelő címét (az úgynevezett megszakítási vektor). Az új architektúra, az IBM PC AT további nyolc megszakítási vonalat biztosított, amelyekhez egy második vezérlőt is használtak, az első vezérlő egyik megszakítási vonalához csatlakoztatva. Sajnos ez az architektúra volt az utolsó, miután az IBM elvesztette képességét az általa létrehozott platform fejlesztésének irányítására, így minden modern számítógép továbbra is csak tizenhat megszakítással rendelkezik, amelyek közül az egyiket a második vezérlő használja.
Az IBM PC AT számítógépnek csak egy busza volt, amelyen keresztül az eszközök kommunikálhatnak a processzorral és a memóriával - ISA. A megszakítási vonalak nagy részét szabványos ISA eszközökhöz rendelték, a többit a jövőre foglalták. Amikor eljött ez a jövő, világossá vált, hogy az új univerzális busz A PCI csak négy ingyenes megszakítást kapott. Ezért találtak ki egy okos mechanizmust a megszakítások megosztására (IRQ Sharing) és a számok dinamikus újradefiniálására (IRQ Steering vagy Mapping).
A PCI eszköz megszakítás vezérlő mechanizmusának lényege a következő. Általában négy fizikai PCI megszakítási vonal létezik, amelyeket PIRQ0, PIRQ1, PIRQ2 és PIRQ3 neveznek. A megszakításvezérlőhöz vannak csatlakoztatva. Úgy tűnik, hogy minden PCI -eszköznek négy csatlakozója van, az úgynevezett INT A, INT B, INT C és INT D. Bármilyen sorrendben csatlakoztathatja a vezetékeket a csatlakozókhoz. Például az első PCI -nyíláshoz a következő huzalozást végezheti el: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. A másodikhoz - más módon: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Általában a készülékhez csak egy megszakítási vonalra van szükség, amely az INT A -hoz van csatlakoztatva. Amikor az első nyílásba telepítették, a készülék a PIRQ0 vonalat használja, a második foglalatban pedig a A PIRQ1 vonal ugyanazon a tűn lesz. Így a különböző résekben lévő eszközök különböző fizikai megszakítási vonalakat fognak használni. A köztük lévő hardverkonfliktus megszűnik.
Az AGP busz, amely valójában egy speciális PCI -módosítás, szintén a PIRQ vonalak egyikét használja - általában PIRQ0 -t.
A modern rendszerekhez négy vonal nem elegendő, ezért az új lapkakészletek gyakran nyolc PIRQ vonalat használnak, amelyek ugyanúgy, különböző kombinációkban csatlakoznak a PCI -bővítőhelyekhez és a fedélzeti eszközökhöz.
A PIRQ vonalak a megszakításvezérlőhöz vannak csatlakoztatva. Ők, mint más sorok, logikai IRQ számokat kapnak. Ha több eszköz van ugyanazon a fizikai vonalon (és ez megengedett), akkor mindegyiknek ugyanaz lesz az IRQ száma. Ha az eszközök különböző fizikai vonalakon vannak, akkor is ugyanazokat az IRQ -számokat fogadhatják. A normál illesztőprogramok lehetővé teszik számukra, hogy szabadon fussanak a teljesítmény feláldozása nélkül, mivel a PCI buszt továbbra is csak egy eszköz rögzítheti. A lényeg az, hogy felismerjük, melyik eszközről érkezett a jel.
A hírhedt Plug & Play mechanizmusnak köszönhetően a PIRQ vonalszámok automatikusan hozzárendelésre kerülnek. De vannak Plug & Play ISA eszközök is. Arra is képesek, hogy automatikusan megkapják az IRQ számot. De a megszakítási vonaluk kizárólag rájuk tartozik, és ha az egyik PIRQ vonal ugyanazt a számot kapja, megoldhatatlan konfliktus keletkezik.
Tehát rájöttünk, hogy a PCI -eszközöknek menteseknek kell lenniük az IRQ -konfliktusoktól. Ha természetesen helyesen működnek, és ez nem mindig van így. Ezenkívül a járművezetőknek támogatniuk kell a megszakítási megosztási mechanizmust. Az ISA -eszközök nem tudják, hogyan kell megosztani a megszakítási vonalakat, ezért konfliktus -provokátorok. Következésképpen a konfliktusok kiküszöbölésének problémája a számok helyes kiosztására (a problémák forrása az ISA -eszközök és a "görbe" illesztőprogramok) vagy a különböző fizikai vonalak mentén történő elkülönítésre ("görbe" PCI -vezérlők) csökken.
Nézzük meg, hogyan osztják el a számokat a rendszerben, és hogyan tudjuk befolyásolni ezt a folyamatot.

Térkép megszakítása
Mint mondtam, az IRQ számok nagy részét már szabványos eszközök foglalják el, vagy inkább megszakító vonalaikhoz vannak rendelve. Nézzük végig a sorrendet:
0 - rendszer időzítő (a szám mindig foglalt);
1 - billentyűzet (a szám mindig foglalt);
2 - második megszakításvezérlő (mindig foglalt);
3 - COM2 port (letiltható, és a szám kiadható);
4 - COM1 port (letiltható, és a szám kiadható);
5 - LPT2 port (általában a szám szabad);
6 - hajlékonylemez -vezérlő (letiltható és a szám kiadható);
7 - LPT1 port (ha nem EPP vagy ECP módban van, akkor a szám szabad);
8 - valós idejű óra (mindig elfoglalt);
9 - ingyenes;
10 - ingyenes;
11 - ingyenes;
12 - PS / 2 egér (ingyenes lehet, ha nincs ilyen egér);
13 - társprocesszor (mindig elfoglalt);
14 és 15 - vezérlő merevlemezek(letiltható, és a szám kiürül).
Egy tipikus rendszerben az 5, 7, 9-11 számok állnak rendelkezésre, azaz öt a tizenötből. Ezenkívül biztonságosan letilthatja a COM2 és LPT1 portokat, így a szabad számok száma hétre nő. Az ingyenes nem azt jelenti, hogy nincsenek elfoglalva, csak azt, hogy szabad keverés lehetséges közöttük.
Minden rendszer három szabványos PCI eszközzel rendelkezik - ACPI, USB vezérlők és videokártya, amelyek mindegyike egy számot vesz igénybe. Egy összetett eszköz (pl. hangkártya) több sort is igényelhet - INT A, INT B stb. alkatrészeikért, amelyek nem ütköznek egymással (elvégre különböző fizikai vonalak), hanem más eszközökkel - könnyen.
Több módon is megtudhatja, hogy a megszakítási számok jelenleg hogyan vannak kiosztva. A számítógép indításának legelején megjelenik egy szöveges konfigurációs táblázat. Közvetlenül azután megjelenik a hozzárendelt IRQ -számmal rendelkező PCI -eszközök listája (lásd a képernyőképet). Egy másik módszer Windows 9x rendszeren működik. A vezérlőpulton megjelenik a "Rendszer" ikon, a kisalkalmazásban pedig az "Eszközök" fül. Kiválasztjuk a "Számítógép" eszköz tulajdonságait, és ott minden eszköz megjelenik, feltüntetve azok IRQ -ját (lásd a képernyőképet).
A Windows 2000 rendszerben nem férünk hozzá a megszakításkezeléshez, ezért az IRQ lista megtekintéséhez a szabványos információs segédprogramot kell használnunk (Vezérlőpult / Felügyeleti eszközök / Számítógép -kezelés / Rendszerinformációk / Hardverforrások).

BIOS IRQ -kiosztás
A rendszerben az IRQ számokat kétszer osztják el a fizikai vonalak között. Ezt először a rendszer BIOS -ja teszi rendszerindításkor. Minden Plug & Play eszközhöz (minden PCI, modern ISA, integrált eszközök), vagy inkább megszakító vonalához tízből egy szám tartozik. Ha nincs elegendő szám, több sor kap egy közöset. Ha ezek PIRQ vonalak, akkor semmi baj - normál illesztőprogramok és az operációs rendszer támogatása mellett (lásd alább), minden működni fog. És ha több ISA eszköz vagy PCI és ISA eszköz ugyanazt a számot kapja, akkor a konfliktus egyszerűen elkerülhetetlen, és akkor be kell avatkozni az elosztási folyamatba.
Először is le kell tiltania az összes használaton kívüli ISA eszközt (az ISA bővítőhely nélküli rendszerekben ezek is jelen vannak) - a COM1, COM2 portokat és a hajlékonylemez -meghajtót. Az LPT port EPP és ECP módját is letilthatja, akkor az IRQ7 megszakítás elérhetővé válik.
V BIOS beállítások szükségünk van a "PCI / PNP konfiguráció" szakaszra. Az IRQ -számok kiosztásának befolyásolásának két alapvető módja van: blokkoljon egy adott számot, és közvetlenül rendeljen hozzá PIRQ -sorszámot.
Az első módszer minden BIOS -hoz elérhető: keresse meg az "IRQ x by:" (in új BIOS az "IRQ erőforrások" almenüben rejtve). Azokat a megszakításokat, amelyeket kizárólag ISA -eszközökhöz kell hozzárendelni, "Legacy ISA" -ra kell állítani. Így, amikor számokat rendel a PCI eszközökhöz, ezek a megszakítások kihagyásra kerülnek. Ezt akkor kell megtenni, ha egy ISA eszköz továbbra is fennáll egy megszakításban egy PCI eszközzel, ami miatt mindkettő nem működik. Ezután megkeressük az IRQ számát, és blokkoljuk a BIOS beállításban. A PCI eszköz erre megy új szám IRQ, de az ISA eszköz megmarad. A konfliktus megoldódott.
A második, kényelmesebb módja az IRQ -számok vezérlésének a közvetlen hozzárendelés. Ugyanebben a BIOS Setup almenüben lehetnek „Slot X use IRQ” formátumú elemek (más nevek: „PIRQx use IRQ”, „PCI Slot x priority”, „INT Pin x IRQ”).
Segítségükkel a négy PIRQ sor mindegyikéhez hozzá lehet rendelni egy adott számot. Egyébként az új AwardBIOS 6.00-ban pontosan láthatja, hogy mely eszközök (beleértve a beépítetteket is) használják ezt vagy azt a vonalat. Nézd csak jobb oldal BIOS beállítási képernyő: a fényképen látható, hogyan mutattam a kurzort az "Slot 1/5 use IRQ no." Elemre, és a "Display Contr." Felirat jelent meg a jobb oldalon. Vagyis az első PIRQ sort használja a videokártya. Ha most bármilyen számot teszek az "Auto" helyett, akkor a videokártya erre a megszakításra kapcsol.

IRQ számok kiosztása Windows eszközök
A megszakítási számok második kiosztásakor operációs rendszer... Amint azt a kísérleteim mutatják, a Windows "98 csak szélsőséges esetekben kezd zavarni a BIOS által végrehajtott műveletekben." Ha normál BIOS -ja van, akkor az itt leírt technikákra nincs szükség.
Meg kell jegyezni, hogy az IRQ megosztási és dinamikus allokációs mechanizmusok megfelelő működéséhez a Windowsnak fel kell ismernie a lapkakészletet. alaplapés letöltötte az IRQ Miniport -ot. Minél újabb verziójú a Windows, annál több lapkakészlet támogatja a saját miniportját (PCIIMP.PCI). Mindazonáltal mindig a legjobb, ha biztonságosan játszik, és telepíti a legújabb chipset -illesztőprogramokat.
A Windows 98 rendszerben az IRQ -kiosztási rendszert a szabványos eszközkezelő vezérli. A listában rendszer eszközei meg kell találnia a PCI buszt. A tulajdonságaiban van egy speciális lap (lásd a képernyőképet). Ha minden helyesen van konfigurálva, akkor a miniport ott lesz említve ("sikeresen betöltve"), és a vezérlő PCI busz(Kormányzás) engedélyezve lesz. Így a Windows "98 rendelkezik egy eszközzel a megszakított számok fizikai vonalak közötti elosztásának szabályozására. De mivel a BIOS gyakran jól megbirkózik ezzel, ez a mechanizmus nem érintett.
De néha egyszerűen szükséges. Ahogy korábban említettem, a PCI -eszközök nem ütközhetnek egymással, ha ugyanazt a logikai megszakítást használják. Egy másik dolog az ISA eszközök, amelyek COM és LPT portokat is tartalmaznak. Ha az eszköz nem Plug & Play, akkor a BIOS nem veszi észre, ha a megszakítást a PCI-eszköznek adja. Ezután le kell foglalnia a megszakítást. Ez a diszpécserben történik Windows eszközök"98: válassza ki a" Számítógép "eszközt, hívja fel a tulajdonságait, váltson a második fülre. Ezután minden világos.
A redundancia mellett közvetlenül beállíthatja az eszköz megszakítási számát. Ehhez meg kell találnia az "Erőforrások" fület a tulajdonságaiban, tiltsa le automatikus hangolásés próbálja megváltoztatni a hozzárendelt megszakítási számot.
Sajnos ez nem mindig működik.
A Windows 2000 egy speciális rendszer. Ha van modern számítógép akkor valószínűleg támogatja az ACPI konfigurációs felületet. Ebben az esetben a Windows 2000 teljesen figyelmen kívül hagyja a BIOS -műveleteket, és minden logikai megszakításra "felakasztja" az összes PCI -eszközt. Általában ez jól fog működni (ha nincs ISA), de néha problémák is előfordulnak. A megszakítási számok megváltoztatásához meg kell változtatnia a HAL kernelt, vagy újra kell telepítenie a Windows 2000 rendszert, ha az ACPI ki van kapcsolva a BIOS -ban. A kernel cseréje a következőképpen történik: az eszközkezelőben válassza a "Számítógép" / "Számítógép ACPI -vel" lehetőséget, változtassa meg az illesztőprogramot " Standard számítógép Ha ez nem működik, akkor újra kell telepítenie a Windows 2000 rendszert.
Remélem, hogy a fenti információk segítenek a hardverhibák elleni küzdelemben. És ne feledje: a felmerülő problémák többsége összefügg alacsony szint számítógépes ismeretek a számítógép gazdája. Ezért mindig az önképzésre kell törekednie, akkor kevesebb probléma lesz, és azok, amelyek felmerülnek, nem tűnnek megoldhatatlannak.

Valószínűleg a leggyakoribb megszakítási konfliktus (IRQ) a modern integrált COM2 soros porthoz kapcsolódik alaplapok, és egy belső modemet (azaz teljes értékű belső PC-modemet, nem pedig szoftveres modemet, más néven WinModemet). A tény az, hogy egy teljes értékű belső modem már támogatja egy bizonyos portot; alapértelmezés szerint ez a port a COM2 -hez van hozzárendelve, a rendszer általában engedélyezi a második soros portot is. Így a rendszernek két azonos portja van, amelyek ugyanazokat az erőforrásokat használják (megszakítások és I / O portcímek).

A probléma megoldása meglehetősen egyszerű: lépjen be a rendszer BIOS-beállításába, és tiltsa le a beépített COM2-portot. Ezenkívül fontolóra veheti a szintén ritkán használt COM1 port letiltását. A nem használt COMx portok letiltása az egyik jobb módszereket felszabadítás megszakítások (IRQ) más eszközök számára.

Egy másik gyakori konfliktus a soros portokkal van. A szabványos megszakítási leképezési táblázatban észrevehette, hogy az IRQ3 a COM2 -hez, az IRQ4 pedig a COM1 -hez van hozzárendelve. A probléma akkor merül fel, ha további COM3 és / vagy COM4 portokat adnak hozzá a rendszerhez, és az ingyenes megszakításokat nem rendelik hozzá manuálisan (alapértelmezés szerint ugyanazt az IRQ3 -at és IRQ4 -et használják).

További bonyodalmakat okoz az a tény, hogy egyes portkártyák nem teszik lehetővé az IRQ3 és IRQ4 kivételével a megszakítások kiválasztását. Ennek eredményeképpen az IRQ3 hozzárendelése a COM4 -hez és az IRQ4 hozzárendelése a COM3 -hoz konfliktushoz vezet a COM1 és COM2 -vel, amelyek szintén használják ezeket a megszakításokat: két port nem használhatja egyszerre ugyanazt a megszakításvezérlő csatornát. A DOS -ban való munkavégzés során ez megengedett volt, mivel egyszerre csak egy feladatot lehetett végrehajtani benne, de Windows és OS / 2 esetén ez teljesen lehetetlen. Ahhoz, hogy egy számítógépen több mint két párhuzamos COM portot használhasson, többportos kártya szükséges, amely a 3 és 4 számozású megszakítások mellett további megszakítások használatát is lehetővé teszi. A megszakítások megosztása elvileg elfogadható azoknál az eszközöknél, amelyek általában nem működnek egyszerre (vagy folyamatosan). A portok nem tartoznak ebbe az eszközkategóriába. A megszakítást együtt használhatja a szkenner és a modem számára, de ebben az esetben, ha egyidejűleg használják, ütközés lép fel. Szerencsére a legtöbb olyan eszköz, amely korábban portokat használt (például egerek, címkenyomtatók és külső modemek) most csatlakozzon az USB -portokhoz, így problémák merülnek fel a több port támogatásának szükségességével. modern felhasználók számítógépek ne jelenjenek meg.

Ha továbbra is több soros portot kell használnia, a legjobb megoldás egy többportos kártya megvásárlása lesz, amely vagy nem ütköző megszakítások beállítását teszi lehetővé, vagy saját processzort tartalmaz, amely lehetővé teszi egy rendszermegszakítás elosztását több port között. Néhány régebbi többportos kártya ISA interfésszel rendelkezett, de napjainkban PCI kártyák váltották fel, amelyek teljesítményelőnyöket is kínálnak.

Ha hiányzik néhány, a táblázatban említett eszköz (például a beépített egérport (IRQ12) vagy a második párhuzamos port (IRQ5)), akkor megszakításuk elérhetőnek tekinthető. Például a második párhuzamos port rendkívül ritka, ezért a hozzá rendelt IRQ5 megszakítást leggyakrabban a hangkártya -kártyához használják. Hasonlóképpen, az IRQ15 megszakítást használják a másodlagos IDE vezérlőhöz. Ha a rendszerben nincsenek lemezegységek csatlakoztatva a másodlagos IDE csatornához, letilthatja ezt a vezérlőt a BIOS -ban, ezáltal újabb megszakítást szabadítva fel más eszközök számára.

Meg kell jegyezni, hogy a megszakítás beállításainak legegyszerűbb módja a Windows Eszközkezelő. Windows 95b rendszeren a HWDIAG program található, Windows 98 és újabb verziókban későbbi verziók- Konzol rendszerinformációk. Ezek a segédprogramok lehetővé teszik, hogy részletes jelentést kapjon a rendszer erőforrásainak felhasználásáról, valamint telepített illesztőprogramok eszközöket és a Windows rendszerleíró bejegyzéseket minden eszközön. V Windows rendszerek XP és Vista esetén a rendszerinformációkat az Msinfo32 program biztosítja.

Annak érdekében, hogy a lehető legtöbb megosztott megszakítást biztosítsa egy modern rendszerben, ISA -csatlakozók nélkül, kövesse ezeket a lépéseket, amikor a rendszer BIOS -jával dolgozik.

  1. Kapcsolja ki a nem használt portokat a rendszer BIOS -ban. Például, ha soros és párhuzamos portokat használunk USB portok, tiltsa le őket. Ennek eredményeként legfeljebb három megszakítás oldható fel.
  2. Adja meg a PCI / PnP eszközök számára elérhető megszakítások listájában az 1. lépésben kiadott IRQ megszakítást. Attól függően, hogy BIOS verzió a megfelelő paraméterek a PnP / PCI erőforráskizárás vagy a PnP / PCI konfiguráció részben érhetők el.
  3. Aktiválja a Konfigurációs adatok visszaállítása opciót az IRQ útválasztási táblák törléséhez a CMOS memóriában.
  4. Mentse el a módosításokat, és lépjen ki a BIOS telepítőprogramjából.

Jó, ha az összeszerelés vagy a tervezett korszerűsítés után a számítógép először elindul, és stabilan, hibák nélkül működik. Sokkal rosszabb, ha váratlan problémák merülnek fel - spontán újraindítás és lefagyás, program összeomlás, működésképtelenség vagy "láthatatlanság" stb. Az első ok, ami ebben az esetben általában eszünkbe jut, egy megszakított konfliktus. Jól ismerjük -e ennek a jelenségnek a természetét, kellően felkészültek vagyunk -e ellene?

Mi az IRQ


A megszakítások az alapmechanizmusa a rendszer reakciójának a felmerülő eseményekre. A hardver megszakítások, általában IRQ -k (Interrupt ReQuest), fizikai jelek, amelyeket az eszközvezérlő használ, hogy tájékoztassa a processzort bizonyos kérések feldolgozásáról. Hagyományosan a megszakítás kezelési sémája így néz ki:
1) a processzor megszakítási jelet és annak számát kapja;
2) egy speciális táblázat segítségével keresik meg a megszakítás feldolgozásáért felelős program címét a megadott számmal - a megszakításkezelőt;
3) a processzor felfüggeszti az aktuális munkát, és átkapcsol a kezelő végrehajtására (általában ez valamiféle illesztőprogram);
4) a vezető hozzáfér az eszközhöz, és ellenőrzi a megszakítás okát;
5) elindulnak a kért műveletek - inicializálás, eszközkonfiguráció, adatcsere stb.
6) az illesztőprogram kilép, és a processzor visszatér a megszakított feladathoz.
Nyilvánvaló, hogy a megszakító mechanizmus megfelelő működéséhez két feltételnek kell teljesülnie: először is a kérés jelnek el kell érnie a processzort, másodszor pedig a kezelő meghajtónak helyesen kell reagálnia erre a jelre. Konfliktus esetén a második feltétel nem teljesül: a megszakítás jel érkezik, de az erre adott reakció helytelennek bizonyul, aminek következtében (legjobb esetben) nem működő eszközünk van.

Konfliktus

Azt mondhatjuk, hogy a konfliktus olyan helyzet, amelyben több objektum egyszerre próbál hozzáférni egy olyan erőforráshoz, amelyet csak az egyiknek szán. Megszakítási ütközés akkor fordul elő, ha több eszköz ugyanazt a megszakítási vonalat használja a kérési jel küldésére, és nincs mechanizmus az egyidejű kérések kezelésére. Ha a vezérlő fogadó vezérlő nem működik a kérést küldő eszközzel, akkor vagy hiba lép fel, vagy az egyik eszköz egyszerűen nem működik.
Felmerül a kérdés: több eszköz is használhatja ugyanazt a megszakítási vonalat, vagy elvileg lehetetlen? Végül is, ha a vezető meg tudja határozni, hogy kitől érkezett pontosan a kérés, akkor csak a "saját" eszköz jeleire reagál, figyelmen kívül hagyva a többieket. De ezt valamilyen módon előre ki kell kötni, különben a konfliktus elkerülhetetlen.
A helyi PCI buszt úgy tervezték, hogy megszakítsa a megosztást. Minden PCI -eszköznek megfelelően kell működnie ugyanazon a megszakítási vonalon más PCI -eszközökkel. Ez a következő módon történik: a jel megszakítás vonalon való jelenlétének tényét nem az él határozza meg, azaz a feszültségszint változása, de maga a tény, hogy egy bizonyos feszültség jelen van. Több eszköz is képes egyszerre változtatni a feszültséget a vonalon, mintegy sorba állva a szervizeléshez.
Így ugyanazon IRQ megosztása több PCI -eszköz között értelemszerűen nem ütközik. Néha azonban problémák merülnek fel. Először is, nem minden PCI -eszköz működik megfelelően ugyanazon a megszakítási vonalon másokkal. Másodszor, az illesztőprogramok néha hibákat okoznak, amelyek miatt nem tudják helyesen meghatározni a jelforrást, zavarva a többi illesztőprogramot. Harmadszor, nem minden eszköz működik a PCI buszon; például az ISA eszközök, amelyek például COM / LPT portvezérlőket tartalmaznak, nem oszthatják meg a megszakításokat másokkal. Ahhoz, hogy világos legyen, hogyan kerülheti el vagy oldhatja meg a konfliktusokat, meg kell értenie, hogyan kezelik az IRQ -kat.

Hardver megszakítások szervezése személyi számítógépben


Mint tudják, a személyi számítógépek az IBM PC -vel kezdődtek. Az architektúrája nyolc hardver megszakítási (IRQ) vonalat tartalmazott, amelyeket egy speciális vezérlő irányított. Mindegyikükhöz kapott egy számot, amely meghatározta a megszakítás prioritását és a kezelő címét (az úgynevezett megszakítási vektor). Az új architektúra, az IBM PC AT további nyolc megszakítási vonalat biztosított, amelyekhez egy második vezérlőt is használtak, az első vezérlő egyik megszakítási vonalához csatlakoztatva. Sajnos ez az architektúra volt az utolsó, miután az IBM elvesztette képességét az általa létrehozott platform fejlesztésének irányítására, így minden modern számítógép továbbra is csak tizenhat megszakítással rendelkezik, amelyek közül az egyiket a második vezérlő használja.
Az IBM PC AT számítógépnek csak egy busza volt, amelyen keresztül az eszközök kommunikálhatnak a processzorral és a memóriával - ISA. A megszakítási vonalak nagy részét szabványos ISA eszközökhöz rendelték, a többit a jövőre foglalták. Amikor eljött ez a jövő, kiderült, hogy az új univerzális PCI busz csak négy ingyenes megszakítást kapott. Ezért találtak ki egy okos mechanizmust a megszakítások megosztására (IRQ Sharing) és a számok dinamikus újradefiniálására (IRQ Steering vagy Mapping).
A PCI eszköz megszakítás vezérlő mechanizmusának lényege a következő. Általában négy fizikai PCI megszakítási vonal létezik, amelyeket PIRQ0, PIRQ1, PIRQ2 és PIRQ3 neveznek. A megszakításvezérlőhöz vannak csatlakoztatva. Úgy tűnik, hogy minden PCI -eszköznek négy csatlakozója van, az úgynevezett INT A, INT B, INT C és INT D. Bármilyen sorrendben csatlakoztathatja a vezetékeket a csatlakozókhoz. Például az első PCI -nyíláshoz a következő huzalozást végezheti el: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. A másodikhoz - más módon: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Általában a készülékhez csak egy megszakítási vonalra van szükség, amely az INT A -hoz van csatlakoztatva. Amikor az első nyílásba telepítették, a készülék a PIRQ0 vonalat használja, a második foglalatban pedig a A PIRQ1 vonal ugyanazon a tűn lesz. Így a különböző résekben lévő eszközök különböző fizikai megszakítási vonalakat fognak használni. A köztük lévő hardverkonfliktus megszűnik.
Az AGP busz, amely valójában egy speciális PCI -módosítás, szintén a PIRQ vonalak egyikét használja - általában PIRQ0 -t.
A modern rendszerekhez négy vonal nem elegendő, így az új lapkakészletek gyakran nyolc PIRQ vonalat használnak, amelyek ugyanúgy, különböző kombinációkban csatlakoznak a PCI -bővítőhelyekhez és az alaplapba épített eszközökhöz.
A PIRQ vonalak a megszakításvezérlőhöz vannak csatlakoztatva. Ők, mint más sorok, logikai IRQ számokat kapnak. Ha több eszköz van ugyanazon a fizikai vonalon (és ez megengedett), akkor mindegyiknek ugyanaz lesz az IRQ száma. Ha az eszközök különböző fizikai vonalakon vannak, akkor is ugyanazokat az IRQ -számokat fogadhatják. A normál illesztőprogramok lehetővé teszik számukra, hogy szabadon fussanak a teljesítmény feláldozása nélkül, mivel a PCI buszt továbbra is csak egy eszköz rögzítheti. A lényeg az, hogy felismerjük, melyik eszközről érkezett a jel.
A hírhedt Plug & Play mechanizmusnak köszönhetően a PIRQ vonalszámok automatikusan hozzárendelésre kerülnek. De vannak Plug & Play ISA eszközök is. Arra is képesek, hogy automatikusan megkapják az IRQ számot. De a megszakítási vonaluk kizárólag rájuk tartozik, és ha az egyik PIRQ vonal ugyanazt a számot kapja, megoldhatatlan konfliktus keletkezik.
Tehát rájöttünk, hogy a PCI -eszközöknek menteseknek kell lenniük az IRQ -konfliktusoktól. Ha természetesen helyesen működnek, és ez nem mindig van így. Ezenkívül a járművezetőknek támogatniuk kell a megszakítási megosztási mechanizmust. Az ISA -eszközök nem tudják, hogyan kell megosztani a megszakítási vonalakat, ezért konfliktus -provokátorok. Ezért a konfliktusok kiküszöbölésének problémája a helyes számkiosztásban (a problémák forrása az ISA eszközök és a "görbe" illesztőprogramok) vagy a különböző fizikai vonalak mentén történő elkülönítésben ("görbe" PCI vezérlők) merül fel.
Nézzük meg, hogyan osztják el a számokat a rendszerben, és hogyan tudjuk befolyásolni ezt a folyamatot.

Térkép megszakítása

Mint mondtam, az IRQ számok nagy részét már szabványos eszközök veszik fel, vagy inkább megszakító vonalaikhoz vannak rendelve. Nézzük végig a sorrendet:
0 - rendszer időzítő (a szám mindig foglalt);
1 - billentyűzet (a szám mindig foglalt);
2 - második megszakításvezérlő (mindig foglalt);
3 - COM2 port (letiltható, és a szám kiadható);
4 - COM1 port (letiltható, és a szám kiadható);
5 - LPT2 port (általában a szám szabad);
6 - hajlékonylemez -vezérlő (letiltható és a szám kiadható);
7 - LPT1 port (ha nem EPP vagy ECP módban van, akkor a szám szabad);
8 - valós idejű óra (mindig elfoglalt);
9 - ingyenes;
10 - ingyenes;
11 - ingyenes;
12 - PS / 2 egér (ingyenes lehet, ha nincs ilyen egér);
13 - társprocesszor (mindig elfoglalt);
14 és 15 - merevlemez -vezérlő (letiltható és a szám kiadható).
Egy tipikus rendszerben az 5, 7, 9-11 számok állnak rendelkezésre, azaz öt a tizenötből. Ezenkívül biztonságosan letilthatja a COM2 és LPT1 portokat, így a szabad számok száma hétre nő. Az ingyenes nem azt jelenti, hogy nincsenek elfoglalva, csak azt, hogy szabad keverés lehetséges közöttük.
Minden rendszer három szabványos PCI eszközzel rendelkezik - ACPI, USB vezérlők és videokártya, amelyek mindegyike egy számot vesz igénybe. Egy összetett eszköz (például hangkártya) több sort is igényelhet - INT A, INT B stb. alkatrészeikért, amelyek nem ütköznek egymással (elvégre különböző fizikai vonalak), hanem más eszközökkel - könnyen.
Több módon is megtudhatja, hogy a megszakítási számok jelenleg hogyan vannak kiosztva. A számítógép indításának legelején megjelenik egy szöveges konfigurációs táblázat. Közvetlenül azután megjelenik a hozzárendelt IRQ -számmal rendelkező PCI -eszközök listája (lásd a képernyőképet). Egy másik módszer Windows 9x rendszeren működik. A vezérlőpulton megjelenik a "Rendszer" ikon, a kisalkalmazásban pedig az "Eszközök" fül. Kiválasztjuk a "Számítógép" eszköz tulajdonságait, és ott minden eszköz megjelenik, feltüntetve azok IRQ -ját (lásd a képernyőképet).
A Windows 2000 rendszerben nem férünk hozzá a megszakításkezeléshez, ezért az IRQ lista megtekintéséhez a szabványos információs segédprogramot kell használnunk (Vezérlőpult / Felügyeleti eszközök / Számítógép -kezelés / Rendszerinformációk / Hardverforrások).

BIOS IRQ -kiosztás

A rendszerben az IRQ számokat kétszer osztják el a fizikai vonalak között. Ezt először a rendszer BIOS teszi indításkor. Minden Plug & Play eszközhöz (minden PCI, modern ISA, integrált eszközök), vagy inkább megszakító vonalához tízből egy szám tartozik. Ha nincs elegendő szám, több sor kap egy közöset. Ha ezek PIRQ vonalak, akkor semmi baj - normál illesztőprogramok és az operációs rendszer támogatása mellett (erről bővebben lásd alább), minden működni fog. És ha több ISA eszköz vagy PCI és ISA eszköz ugyanazt a számot kapja, akkor a konfliktus egyszerűen elkerülhetetlen, és akkor be kell avatkozni az elosztási folyamatba.
Először is le kell tiltania az összes használaton kívüli ISA eszközt (az ISA bővítőhely nélküli rendszerekben ezek is jelen vannak) - a COM1, COM2 portokat és a hajlékonylemez -meghajtót. Az LPT port EPP és ECP módját is letilthatja, akkor az IRQ7 megszakítás elérhetővé válik.
A BIOS beállításban szükségünk van a "PCI / PNP konfiguráció" szakaszra. Az IRQ -számok kiosztásának befolyásolásának két alapvető módja van: blokkoljon egy adott számot, és közvetlenül rendeljen hozzá PIRQ -sorszámot.
Az első módszer minden BIOS -hoz elérhető: keresse meg az "IRQ x by:" elemek listáját (az új BIOS -ban az "IRQ Resources" almenüben van elrejtve). Azokat a megszakításokat, amelyeket kizárólag ISA -eszközökhöz kell hozzárendelni, "Legacy ISA" -ra kell állítani. Így, amikor számokat rendel a PCI eszközökhöz, ezek a megszakítások kihagyásra kerülnek. Ezt akkor kell megtenni, ha bármely ISA -eszköz továbbra is megszakad egy PCI -eszközzel, ami miatt mindkettő nem működik. Ezután megkeressük az IRQ számát, és blokkoljuk a BIOS beállításban. A PCI eszköz az új IRQ számra lép, de az ISA eszköz megmarad. A konfliktus megoldódott.
A második, kényelmesebb módja az IRQ -számok vezérlésének a közvetlen hozzárendelés. Ugyanebben a BIOS Setup almenüben lehetnek „Slot X use IRQ” formátumú elemek (más nevek: „PIRQx use IRQ”, „PCI Slot x priority”, „INT Pin x IRQ”).
Segítségükkel a négy PIRQ sor mindegyikéhez hozzá lehet rendelni egy adott számot. Egyébként az új AwardBIOS 6.00-ban pontosan láthatja, hogy mely eszközök (beleértve a beépítetteket is) használják ezt vagy azt a vonalat. Vessen egy pillantást a BIOS beállítási képernyő jobb oldalára: a fényképen látható, hogyan mutattam a kurzort az "Slot 1/5 use IRQ no." Elemre, a jobb oldalon pedig a "Display Contr." Felirat. Vagyis az első PIRQ sort használja a videokártya. Ha most bármilyen számot teszek az "Auto" helyett, akkor a videokártya erre a megszakításra kapcsol.

IRQ -k kiosztása Windows használatával

A második alkalommal a megszakítási számokat az operációs rendszer osztja ki. Amint azt a kísérleteim mutatják, a Windows "98 csak szélsőséges esetekben kezd zavarni a BIOS által végrehajtott műveletekben." Ha normál BIOS -ja van, akkor az itt leírt technikákra nincs szükség.
Meg kell jegyezni, hogy az IRQ megosztási és dinamikus allokációs mechanizmusok megfelelő működéséhez a Windowsnak fel kell ismernie az alaplapi lapkakészletet, és be kell töltenie az IRQ Miniportot. Minél újabb verziójú a Windows, annál több lapkakészlet támogatja a saját miniportját (PCIIMP.PCI). Mindazonáltal mindig a legjobb, ha biztonságosan játszik, és telepíti a legújabb chipset -illesztőprogramokat.
A Windows 98 rendszerben az IRQ -kiosztási rendszert a szabványos eszközkezelő vezérli. Keresse meg a PCI buszt a rendszereszközök listájában. A tulajdonságaiban van egy speciális lap (lásd a képernyőképet). Ha minden megfelelően van konfigurálva, akkor egy mini -portot említenek ott ("sikeresen betöltve"), és engedélyezik a PCI buszkezelést (Steering). Így a Windows "98 rendelkezik egy eszközzel a megszakított számok fizikai vonalak közötti elosztásának szabályozására. De mivel a BIOS gyakran jól megbirkózik ezzel, ez a mechanizmus nem érintett.
De néha egyszerűen szükséges. Ahogy korábban említettem, a PCI -eszközök nem ütközhetnek egymással, ha ugyanazt a logikai megszakítást használják. Egy másik dolog az ISA eszközök, amelyek COM és LPT portokat is tartalmaznak. Ha az eszköz nem Plug & Play, akkor a BIOS nem veszi észre, ha a megszakítást a PCI-eszköznek adja. Ezután le kell foglalnia a megszakítást. Ez a Windows 98 Eszközkezelőben történik: válassza ki a Számítógép eszközt, hívja fel a tulajdonságait, váltson a második fülre.
A redundancia mellett közvetlenül beállíthatja az eszköz megszakítási számát. Ehhez meg kell találnia az "Erőforrások" fület a tulajdonságaiban, tiltsa le az automatikus konfigurációt, és próbálja meg megváltoztatni a hozzárendelt megszakítási számot.
Sajnos ez nem mindig működik.
A Windows 2000 egy speciális rendszer. Ha modern számítógépe van, akkor valószínűleg támogatja az ACPI konfigurációs felületet. Ebben az esetben a Windows 2000 teljesen figyelmen kívül hagyja a BIOS műveleteket, és "felfüggeszti" az összes PCI -eszközt egy logikai megszakításra. Általában ez jól fog működni (ha nincs ISA), de néha problémák is előfordulnak. A megszakítási számok megváltoztatásához meg kell változtatnia a HAL kernelt, vagy újra kell telepítenie a Windows 2000 rendszert, ha az ACPI ki van kapcsolva a BIOS -ban. A kernel cseréje a következőképpen történik: az eszközkezelőben válassza a "Számítógép" / "Számítógép ACPI -vel" lehetőséget, módosítsa az illesztőprogramot "Normál számítógépre", indítsa újra. Ha ez nem működik, akkor újra kell telepítenie a Windows 2000 rendszert.
Remélem, hogy a fenti információk segítenek a hardverhibák elleni küzdelemben. És ne feledje: a felmerülő problémák nagy része a számítógép -tulajdonos számítógépes ismereteinek alacsony szintjéhez kapcsolódik. Ezért mindig az önképzésre kell törekednie, akkor kevesebb probléma lesz, és azok, amelyek felmerülnek, nem tűnnek megoldhatatlannak.