Pokud se podíváte na diskusi k minulému dílu, najdete tam několik zajímavých výpisů souborů z /proc. Určitě stojí za shlédnutí. Stroj, na kterém články dělám, je taky dual (Abit VP6 – Dual PIII), ale mám zatím (z finančních důvodů) osazen jen jeden procesor. Snad časem, až napíšu hodně dílů tohoto seriálu :-). K výpisům informací o obsazení sběrnice PCI se určitě dostaneme později.
Pro lepší orientaci opět výpis základního adresáře /proc:
809 cmdline fs/ kmsg mounts slabinfo version 840 cpuinfo ide/ ksyms mtrr stat 842 devices interrupts loadavg net/ swaps 847 dma iomem locks nv/ sys/ 848 driver/ ioports meminfo partitions sysvipc/ apm execdomains irq/ misc pci tty/ bus/ filesystems kcore modules self@ uptime
Minule jsme skončili u informací o procesoru (pro některé případně procesorech) a dnes pokračujeme dál:
- devices
- Nejprve výpis z ukázkového stroje:
Character devices: 1 mem 2 pty 3 ttyp 4 vc/0 5 ptmx 7 vcs 10 misc 14 sound 128 ptm 136 pts 162 raw 180 usb 195 nvidia Block devices: 2 fd 3 ide0 22 ide1
Jak vidno, soubor obsahuje zaregistrovaná znaková (Character) a bloková (Block) zařízení. Rozdíl mezi nimi je ve velikosti najednou přenášených/adresovatelných dat. Zatímco u znakových zařízení se komunikuje po jednotlivých bajtech, znacích, případně slovech, u blokových zařízení se pracuje (kvůli efektivnosti) s větším blokem dat najednou. Jako příklad znakového zařízení lze uvést třeba zvukovou kartu (14 sound), USB sběrnici (180 usb) nebo grafickou kartu (195 nvidia). Typickými blokovými zařízeními jsou naopak disky všeho druhu, v našem případě floppy rozhraní (2 fd) a ide rohraní na (nejen) hardisky (3 ide0).
Jádro operačního systému komunikuje s ovladači zařízení pomocí jejich hlavního (major) a vedlejšího (minor) čísla. Hlavní číslo spolu s typem zařízení určuje druh hardwaru. Například char,1 jednoznačně (při statickém přidělování) určuje fyzickou paměť systému. Jednotlivá čísla zařízení jsou patrná při výpisu adresáře /dev:
brw-rw---- 1 root disk 3, 0 srp 24 2000 hda brw-rw---- 1 root disk 3, 1 srp 24 2000 hda1 brw-rw---- 1 root disk 3, 2 srp 24 2000 hda2 brw-rw---- 1 root disk 3, 3 srp 24 2000 hda3 brw-rw---- 1 root disk 3, 4 srp 24 2000 hda4 brw-rw---- 1 root disk 3, 5 srp 24 2000 hda5
Písmeno na začátku každého řádku určuje typ souboru a b znamená právě blokové zařízení. Další informace z výpisu jsou identické jako u normálních souborů až na velikost. Na jejím místě jsou uvedena dvě čísla, a to právě hlavní a vedlejší číslo pro zařízení, které reprezentuje daný (speciální) soubor. V našem výpisu je vidět master disk na prvním kanálu ide. Při statickém přidělování čísel jsou v adresáři /dev uvedeny všechny (většina) potřebné varianty a využívají se samozřejmě pouze ty, které jsou v danou dobu v systému.
Na mém stroji jsou tedy využity (dle výpisu jádra o rozdělení disku/ů při startu) tyto soubory:
Partition check: hda: hda1 hda3 hda4
odpovídá využití /dev/hda, /dev/hda1, /dev/hda3 a /dev/hda4. Soubor /dev/hda, respektive soubor s hlavním a vedlejším číslem 3:0, ať už se jmenuje jakkoliv, odpovídá celému disku. Číslované /dev/hda? jsou potom jednotlivé diskové oblasti (partitions). Opět zde nezáleží (z pohledu jádra) na jménu souboru, ale na jeho hlavním a vedlejším čísle. Obdobný je význam i pro jiná zařízení než disk. Například při použití více grafických karet v jednom stroji budou mít všechny stejné hlavní číslo a jednotlivé karty se budou rozlišovat pomocí vedlejšího čísla.
Hlavní a vedlejší čísla zařízení jsou dnes přiřazována napevno (staticky) na požádání u patřičné autority. Tou je člověk z okruhu vývojářů jádra, ale jeho jméno si opravdu nepamatuji. V současné době se uvažuje o možnosti přidělování hlavních čísel dynamicky na podobném principu. jako je devfs – dynamický souborový systém pro zařízení. Celé je to o tom, že čísel (hlavních) je „pouze“ 256, a to dnes při rozmanitosti periferií počítačů přestává stačit. V našem případě je vidět, že ovladač grafické karty má číslo 195, a to už k maximu moc daleko nemá. U vedlejších čísel takový problém není, protože těžko budete mít disk s 255 oddíly nebo 255 grafických karet v systému. Zde jde spíše o to, že je adresář /dev přeplněn soubory, z nichž se využívá nepatrné procento. Proto někteří lidé přišli s tím, že se bude vytváření souborů v adresáři /dev a v dalším kroku i přidělování hlavních čísel provádět dynamicky, tedy na požádání, při zavádění ovladačů do systému. Souborový systém /devfs je již dnes součástí standardních jader (minimálně řady 2.4.x), ale přímé praktické využití je zatím minimální, neboť je nutno modifikovat také systémový software pro práci s novými jmény zařízení. Po dobu přechodu je proto k dispozici démon, který zajišťuje programům překlad přísupu do adresáře /dev statickým způsobem (překládá jména z nového systému pojmenovávání na stará).
- dma
- Zde by měly být informace o přiřazení jednotlivých kanálů DMA řadičů, nicméně posuďte sami:
4: cascade
To opravdu moc informací není, že. V podstatě chybí veškeré DMA kanály kromě jediného, sloužícího pro spojení obou DMA řadičů. Z důvodu složitosti obvodu totiž řadič DMA není jeden čip, ale funkce je rozdělena mezi čipy dva, a ty spolu musí být nějak propojeny. K tomu slouží právě zmiňovaný DMA kanál.
Asi byste řekli, že se využívá více DMA kanálů, to já také, ale při požadavku na výpis se provede průchod strukturou aktivních DMA kanálů, a pouze tyto se vypíší. Zkoušel jsem pro vás vykouzlit zajímavější výpis pomocí čtení z disku nebo přehrávání hudby, ale bohužel obsah souboru /proc/dma byl stále stejný. Pokud máte někdo v tomto souboru i něco navíc, rád bych to viděl (a ostatní určitě taky).
Tak, a na další díl si budete muset počkat zase za týden. Já si teď dávám malou dovolenou a jedu si vyšlápnout do hor.