Hlavní navigace

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

12. 7. 2001
Doba čtení: 4 minuty

Sdílet

Tentokrát budeme pokračovat v popisu obsahu souborů základního adresáře proc. Na řadě jsou dnes soubory devices a dma.

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:

CS24_early

  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/a­dresovatelný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.

Byl pro vás článek přínosný?

Autor článku