Hlavní navigace

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

Tomáš Kašpárek

Dneska zvládneme písmeno P. Probereme informace o diskových oddílech a o obsazení sběrnic PCI (respektive AGP).

Jak asi víte, mám již nějakou dobu novou mašinku. Na asi každém novém počítači je třeba vyladit řadu detailů. Dost dlouhou dobu jsem bojoval s APM biosem, abych ho přemluvil, že chci počítač po shutdownu vypnout (power off). A moc se mi to nedařilo. Proto jsem se nakonec odhodlal vyzkoušet místo APM raději novější ACPI (Advanced Configuration and Power Interface). Kupodivu to funguje, a tak se dnes výpis trochu mění. Přibyl nový adresář acpi a ubyl soubor apm.

Pokud jste někdo náhodou majitelem Abitu VP6 jako já, ozvěte se mi, rád bych si o pár věcech popovídal.

Jak velí tradice, nejprve (dnes lehce modifikovaný) výpis základního adresáře /proc. Tečka před názvem znamená, že už to máme za sebou:

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

Diskové oddíly se používají v DOSu, ve Windousech, v Unixech a asi i ve většině ostatních operačních systémů – nevíte někdo, jak je to u Jablek (Apple)? Jedná se o způsob, jak rozdělit jeden fyzický disk na několik menších, nazývaných logiké disky nebo též diskové oddíly. Teď zbývá otázka, jaký to má smysl.

Odpověď lze nalézt v historii osobních počítačů. Na počátku měly osobní počítače (nebo též minipočítače) místo pevných disků pouze disketové mechaniky. Často to fungovalo tak, že na jedné byl operační systém a druhá byla pro uživatelovy programy a data. Teď se musím pochlubit, sám jsem i přes svůj nevelký věk takový počítač viděl :) . No a když pak přišly první winchestery, jak se říkalo pevným diskům, uvědomily si počítačové firmy, že uživatelé by byli příliš zmateni, kdyby měli mít najednou místo diskety o kapacitě 360KB disk o velikosti třeba 10MB. Řešením bylo rozdělit těch 10MB na části o velikosti diskety a uživateli podsunout myšlenku, že se vlatně nic nezměnilo, jen má holt těch disketových mechanik o „něco“ více. Za čas si uživatelé na novou skutečnost zvykli a už je tolik nerozptylovalo mít jeden (třeba i 40MB) disk a na něm vše dohromady. No to byly časy.

Doufám, že se vám tahle pohádka líbila (měla přece šťastný konec, ne?), a teď už se vrhněme na to, co všichni čekáte:

major minor  #blocks  name
   3     0    9770544 hda
   3     1    3076416 hda1
   3     2    3478072 hda2
   3     3    3076447 hda3
   3     4     136521 hda4
  22     0    1251936 hdc
  22     1     625936 hdc1
  22     2     625968 hdc2

Tak, copak to tam máme. Začínám mít počit, že se lehce opakuji. Přiřazování hlavních (major) a vedlejších (minor) čísel, jejich význam a odpovídají názvy souborů v adresáři /dev jsme si už probrali, tak jen lehce připomenu, že se jedná o master disky na prvním a druhém kanálu IDE. Vedlejší čísla odpovídají jednotlivým diskovým oddílům. Vedlejší číslo 0 a název bez čísla je pro celý disk (fyzický). Jediný údaj, který zůstává, je velikost oddílu, a to je sloupec nadepsaný jako #blocks, tedy počet bloků. Pro zjištění velikosti oddílu už stačí jen vědět, že velikost bloku je 1024 bajtů, neboli 1KB.

Dále zkusíme porovnat získané vlastnosti s výpisem příkazu df. Ten zjišťuje informace o prostoru pro uživatelská data. Z rozdílu lze tedy vyčíst, kolik místa na disku zabere administrativa operačního systému. Tak se na to mrkneme:

Filesystem  1k-blocks  Used     Available Use% Mounted on
/dev/hda3   3028108    1051276  1915304   36% /
/dev/hda2   3362046    1691800  1496343   54% /home
/dev/hda1   3070400    2156448   913952   71% /mnt/user

Chybějící oddíl 4 je využit pro swap. Jak lze briskně spočítat, pro souborový systém je vyčleněno na zhruba 3GB oddílu kolem 53MB místa. To na první pohlednení není vůbec málo, ale jestli se někdy dostaneme k povídání o souborových systémech, uvidíte, že to na druhou stranu není zase tak moc.

Nakonec ještě něco o detailech rozdělení disku. Na začátku disku je umístěna tzv. partition table (tabulka rozdělení disku). V té je zaznamenán v každé položce typ oddílu, jeho začátek a konec v rozumné adrese, případně další příznaky a informace. Rozumná adresa je CHS (Cylindr, Hlava, Sektor), nebo jednoduše číslo sektoru pro LBA (Lineární adresování bloků). Fuj, to zní divně. Mimochodem, napište mi, jestli vám moc vadí anglické názvy, pokud ne, asi je začnu ve větší míře používat). No tak zpátky. Prozatím byly všechny informace obecné. Ale svět není jen DOS, a tak podobný systém rozdělení disků používají třeba počítače BSD/SUN nebo IRIX/SGI. Rozdíl je v počtu položek v tabulce diskových oddílů. SUN může mít až osm diskových oddílů, SGI šestnást. Starý dobrý DOS nemá počet omezen. V základní tabulce je místo pro čtyři záznamy, ale jedním z typů oddílu může být tzv. rozšířený oddíl (extended). Ten může opět obsahovat další čtyři oddíly, a tak dále. Jediná drobnost je, že z rozšířených oddílů někdy nejde startovat systém. (Alespoň jsem to slyšel říkat o Windousech.)

pci

Tohle je asi jeden z nejobsáhlejších souborů v adresáři /proc vůbec. Najdete zde spoustu informací o zařízeních připojených na sběrnici PCI respektive AGP. Jako příklad jen část souboru:

 ...
 Bus  0, device   7, function  0:
   ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 64).
  Bus  0, device   7, function  1:
   IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 6).
     Master Capable.  Latency=32.
     I/O at 0xc000 [0xc00f].
  Bus  0, device   7, function  2:
   USB Controller: VIA Technologies, Inc. UHCI USB (rev 22).
     IRQ 19.
     Master Capable.  Latency=32.
     I/O at 0xc400 [0xc41f].
 ...
   Bus  0, device  10, function  0:
    Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 16).
     IRQ 17.
     Master Capable.  Latency=32.  Min Gnt=32.Max Lat=64.
     I/O at 0xcc00 [0xccff].
     Non-prefetchable 32 bit memory at 0xdc000000 [0xdc0000ff].
 ...

Každé zařízení má v tomto výpisu vyhrazen malý odstavec. Ten začíná adresou zařízení, která se skládá z identifikace sběrnice. V běžných počítačích je jen jedna sběrnice (pozor, ne slot!) PCI, takže je zde Bus 0. Bus 1 potom odpovídá AGP sběrnici a zařízení k ní připojené (často grafická karta :). Číslem u device jsou odlišena jednotlivá zařízení. Pokud některé z nich plní více funkcí, je číslo zařízení stejné a rozlišení se provádí pomocí function. Dále jsou uvedeny třída, výrobce a název zařízení. To jsou číselné hodnoty, jejichž odpovídající textové popisky lze nalézt v drivers/pci/clas­slist.h pro třídy a drivers/pci/de­vlist.h pro výrobce a jednotlivá zařízení. Následují konfigurační údaje daného zařízení, jako adresa IO paměti, číslo IRQ, obsazení mapované paměti a další.

No a teď bych se měl rozepsat o tom, jak PCI sběrnice a její programování funguje, jak se nastavují jednotlivá zařízení a proč je pro USB přiřazeno přerušení 19. Je mi to líto, ale nerozepíšu. Zatím. Ale protože i mne to opravdu zajímá, tak o to nepřijdete a můžete se těšit, že se k tomuto problému ještě vrátím (a se mnou přijde i zákon! :)

Našli jste v článku chybu?

7. 9. 2001 10:47

Tomas Kasparek (neregistrovaný)

Jo tak nejak to bylo. Dalsi problem byl, ze rozdeleni slova na casti pro C-H-S mel jinak DOS a jinak bios. vysledkem bylo minimum z obou hodnot. (tohle bylo tusim omezeni na 504MB ale nejsem si jisty)

Jinak lba se vysvetluje obojim - linearni i logicke. Oboji dava smysl - je to linarni adresovani a take logicke - protoze nedopovida stavu ulozeni na disku.
(zkuste si vhledat treba pres Google neco jako "LBA disk block adressing")




6. 9. 2001 19:33

petrch (neregistrovaný)

imho to bylo omezeni biosu, kdy volani funkce biosu pro cteni/zapis bloku neumoznovalo dat do cylindru vetsi cislo nez 1024,protoze na to bylo vyhrazeno jen 10 (jestli dobre pocitam) bitu, na hlavy pak zbyvalo 6 bitu. vzhledem k tomu, ze novejsi disky mely vice cylindru a maloktery mel vic jak 64 hlav, lba to prepocitalo. tak bylo mozne adresovat i novejsi disky.

u rozdelovani disku bych jeste doplnil informaci o fat12: fat16 na tom nebyla o mnoho lepe. muze adresovat 65536 clusteru (opravte …

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

Recenze Westworld: zavraždit a...

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

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

DigiZone.cz: Dreambox DM900 Ultra HD přichází

Dreambox DM900 Ultra HD přichází

DigiZone.cz: Placené VoD a obsah zdarma

Placené VoD a obsah zdarma

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

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

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

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

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

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

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

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

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech