Hlavní navigace

Co před námi tají /proc (5)

Tomáš Kašpárek 26. 7. 2001

Dnešní díl bude o trojici souborů kolem periferií, dozvíte se tedy (snad i něco nového) o přerušeních, vstupně/výstupních portech a mapované paměti pro ovládání periferií.

Již tradičně opět výpis základního adresáře /proc. Tečka před názvem znamená, že jsme daný soubor/adresář již probrali:

  .840     .devices      kcore    modules     stat     ide/
  .842     .dma          kmsg     mounts      swaps    irq/
  .847     .execdomains  ksyms    mtrr        uptime   net/
  .848     .filesystems  loadavg  partitions  version  nv/
  .apm      interrupts   locks    pci         bus/     sys/
  .cmdline  iomem        meminfo  self@       driver/  sysvipc/
  .cpuinfo  ioports      misc     slabinfo    fs/      tty/

Na začátek si musím trochu sypat popel na hlavu. Posledních pár dílů jsem vás trochu zanedbával, času bylo pořád míň a míň, ale pokusím se s tím něco udělat. Putování po horách už jsem si užil dost, tak budu mít nyní na články (doufám) víc času. Tak co nás čeká tentokrát:

interrupts

Obsah souboru na použitém počítači. Pro ty, co nečtou od začátku, nebo již pozapomněli (obojí je škoda), opakuji, že se jedná o PIII na Abitu VP6. Výbavu je možno vyčíst z výpisu:

         CPU0
  0:     460943    IO-APIC-edge  timer
  1:      21161    IO-APIC-edge  keyboard
  2:          0          XT-PIC  cascade
  9:     460757   IO-APIC-level  nvidia
 10:          0   IO-APIC-level  ESS Solo1, eth0
 12:      83236    IO-APIC-edge  PS/2 Mouse
 14:       9901    IO-APIC-edge  ide0
 15:          5    IO-APIC-edge  ide1
NMI:          0
ERR:          0

Jak je z názvu souboru patrné, jedná se o informace o využití přerušení. V prvním sloupci je číslo přerušení, v Dalším počet obsloužených přerušení pro jednotlivé procesory (zde pouze jeden – zatím :). Následuje typ obsluhy a ovladač, který obsluhu provádí. Poslední dva řádky určují počet nemaskovatelných přerušení a chyb při obsluhách přerušení.

Nejprve trochu teorie. Desky pro více procesorů (a možná i některé novější jednoprocesorové) obsahují vylepšený řadič přerušení – APIC (Advanced Programmable Interrupt Controller), v Linuxu nazývaný IO-APIC. Jedná se o systém doručování přerušení k procesoru/ům a také příslušný hardwarový prvek. Oproti klasickému řadiči přerušení umí obsluhovat více procesorů (každý z procesorů může obsluhovat přerušení) a také zvládá například sdílení jednoho přerušení více zařízeními (v našem případě přerušení 10 se zvukovkou a síťovkou).

Zbývá ještě říci pár slov o tom, co to je nemaskovatelné přerušení. Obecně lze přerušení rozdělit na několik typů. Prvním typem jsou přerušení procesoru. Jedná se o způsob oznámení fatálních chyb za běhu počítače. Příkladem buďtěž dělení nulou, chybná instrukce, výpadek stránky a další. Většina z nich způsobuje neopravitelnou chybu (někdy v rámci procesu – dělení nulou v uživatelském kódu, někdy celého jádra při chybě v jeho kódu). Jiné (jako výpadek stránky) jsou standardně obslouženy jádrem a nemusí vést k chybě (výpadek stránky vede k chybě SIGSEGV, pokud ho nelze ošetřit). Dalším typem jsou přerušení pro kontakt s periferiemi. Jsou vyvolávána signálem INTR a zpracovávána procesorem za účasti řadiče přerušení. Řadič řeší například priority přerušení, zachytávání do front(y) a další. Tento typ přerušení je popisován v souboru interrupts. Posledním typem jsou takzvaná softwarová přerušení vyvolávaná instrukcí INT. Ta se používají například jako prostředek pro volání služeb jádra. Z důvodů zachování konzistentního stavu operačního systému je možno v kritických situacích pomocí instrukce CLI (x86) zakázat obsluhu přerušení. Existují ale situace, které je třeba řešit okamžitě (chyba paměti atd.), proto exituje přerušení NMI, které nelze zakázat (jinak též maskovat). To slouží pro oznamování právě těchto chybových stavů. V současném jádře (2.4.5) jsou rozpoznávány chyby 0×80 a 0×40, tedy chyba parity paměti a chyba IO_CHECK. Další chyby mohou být případně rozpoznávány ovladači periferních zařízení na sběrnici MCA (MicroChannel).

Posledním využitím přerušení NMI je takzvaný NMI Watchdog. Je to způsob, jak ladit situace úplného zatuhnutí systému. Generováním nemaskovatelných přerušení lze jistým způsobem přimět systém (občas) k nějaké činnosti. Více informací naleznete v dokumentaci k jádru v souboru mni_watchdog.txt.

A teď o tom, co konkrétně náš výpis říká. Počítač obsahuje pouze jeden procesor (přesněji přerušení obsluhuje pouze jeden procesor). V počítači máme 16 linek přerušení (hardwarových) a prozatím jsme se obešli bez chyby. Počet nemaskovatelných přerušení (dále NMI) je rovněž nulový. Jde o čítač všech přerušení procesoru číslo 0×02. V předposledním sloupci je možné nalézt tři typy přerušení. XT-PIC je standardní řadič přerušení a dnes je používán téměř výhradně pro kaskádové spojení jednotlivých prvků řadiče (podobně jako DMA řadič). Potom tu máme IO-APIC přerušení obsluhovaná řadičem APIC. Ta jsou buď edge, což znamená samostatné přerušení pro každé zařízení (IDE disky) s poměrně složitým ovládáním handleru, nebo level, což je kromě jiného přerušení pro PCI sběrnice s možností sdílení přerušení. Základní rozdíl je v tom, že obsluha přerušení typu edge musí dospět do určité své části (edge), než je možno jednoduže zakázat další přerušení téhož typu. Pro podrobnosti odkazuji na soubory arch/<xxx>/ker­nel/io_apic.c a další z něj vyplývající. Názvy ovladačů zařízení jsou snad dostatečně vysvětlující, a tak jen dodám, že počet přerušení u přerušení časovače je počet tiků časovače od spuštění počítače s přetočením na hodnotě max(unsigned int). Také si lze udělat obrázek o využití zbývajících zařízení. Je vidět, že se nepoužily (od spuštění) zvukovka ani síťovka a disky na ide1 nejsou připojeny (případně využívány, ale to by těch přerušení bylo asi přece jen víc).

No trošku jsem se rozšoupl, tak iomem a ioports přesunu do dalšího dílu. A místo závěrečného proslovu se do něj radši rovnou pustím :)

Našli jste v článku chybu?

4. 8. 2001 12:12

Vena (neregistrovaný)

me to zobrazuje na jednom ze serveru:
<pre>
root@radka:/proc# cat interrupts
CPU0 CPU1
0: 29790179 32089001 IO-APIC-edge timer
1: 492 432 IO-APIC-edge keyboard
2: 0 0 XT-PIC cascade
3: 1 1 IO-APIC-edge NE2000
4: 0 4 IO-APIC-edge serial
8: 62 62 IO-APIC-edge rtc
13: 1 0 XT-PIC fpu
14: 10 0…










30. 7. 2001 6:54

tomas kasparek (neregistrovaný)

Chtel jsem se na to mrknoput, ale nejak jsem to zasklil. Mam za to, že se proste v techto ovladacich (LPT, COM a dalsi) neprovede kdovijaka registrace a proto nejsou informace videt. Jeste se na to mrknu a doplnim to.

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?