Soubor zařízení - Device file

V Unix-like operačních systémech , je soubor zařízení nebo speciální soubor je rozhraní s ovladači zařízení , která se objeví v souborovém systému , jako kdyby se jednalo o obyčejný soubor . Existují také speciální soubory v systémech DOS , OS/2 a Windows . Tyto speciální soubory umožňují aplikačnímu programu komunikovat se zařízením pomocí ovladače zařízení prostřednictvím standardních systémových volání vstupu/výstupu . Použití standardních systémových volání zjednodušuje mnoho programovacích úloh a vede ke konzistentním I/O mechanismům v uživatelském prostoru bez ohledu na funkce a funkce zařízení.

Soubory zařízení obvykle poskytují jednoduchá rozhraní standardním zařízením (například tiskárnám a sériovým portům), ale lze je také použít k přístupu ke konkrétním unikátním prostředkům na těchto zařízeních, jako jsou diskové oddíly . Soubory zařízení jsou navíc užitečné pro přístup k systémovým prostředkům , které nemají spojení s žádným skutečným zařízením, jako jsou datové jímky a generátory náhodných čísel .

V operačních systémech podobných Unixu existují dva obecné druhy souborů zařízení, známé jako speciální znakové soubory a blokové speciální soubory . Rozdíl mezi nimi spočívá v tom, kolik dat čte a zapisuje operační systém a hardware. Tyto dohromady lze na rozdíl od pojmenovaných kanálů nazvat speciální soubory zařízení , které nejsou připojeny k zařízení, ale nejsou ani běžnými soubory.

MS-DOS si vypůjčil koncept speciálních souborů od Unixu, ale přejmenoval je na zařízení . Protože dřívější verze systému MS-DOS nepodporovaly hierarchii adresářů , zařízení se odlišovala od běžných souborů tím, že jejich jména byla vyhrazena slova , například: neslavný CON. Ty byly vybrány pro určitý stupeň kompatibility s CP/M a jsou stále přítomny v moderních Windows pro zpětnou kompatibilitu.

V některých Unix-like systémech, většina souborů zařízení jsou spravovány v rámci virtuálního souborového systému tradičně namontované na /dev, případně spojená s řídícím démon, který sčítání sleduje hardware a vyjmutí za běhu, takže odpovídající změny v systému souborů zařízení , jestli je to neprovádí automaticky jádro a případně vyvolává skripty v systémovém nebo uživatelském prostoru pro zpracování speciálních potřeb zařízení. FreeBSD , DragonFly BSD a Darwin mít dedikovaný souborový systém devfs ; uzly zařízení jsou spravovány automaticky tímto souborovým systémem v prostoru jádra . Linux míval podobnou implementaci devfs , ale byl později opuštěn a poté odstraněn od verze 2.6.17; Linux nyní primárně používá implementaci uživatelského prostoru známou jako udev , ale existuje mnoho variant.

V systémech Unix, které podporují izolaci procesu chroot , jako jsou kontejnery Solaris , obvykle každé prostředí chroot potřebuje své vlastní /dev; tyto body připojení budou viditelné na hostitelském operačním systému na různých uzlech ve stromu globálního systému souborů. Omezením uzlů zařízení naplněných do instancí chroot /devlze izolaci hardwaru vynutit prostředím chroot (program se nemůže vměšovat do hardwaru, který nemůže ani vidět, ani pojmenovat - ještě silnější forma řízení přístupu než oprávnění systému souborů Unix ).

Spor o hardwarová zařízení spravovaná systémem MS-DOS (viz TSR ) tím, že se každý soubor zařízení otevře exkluzivně. Aplikace pokoušející se získat přístup k již používanému zařízení by zjistila, že nedokáže otevřít uzel souboru zařízení. V Unixu a Linuxu je implementována řada sémantik ovladačů zařízení týkajících se souběžného přístupu .

Unix a unixové systémy

Zjednodušená struktura jádra Linuxu. Systémy souborů jsou implementovány jako součást I/O subsystému.

Uzly zařízení odpovídají prostředkům, které již jádro operačního systému přidělilo. Unix identifikuje tyto zdroje podle hlavního a vedlejšího čísla , přičemž oba jsou uloženy jako součást struktury uzlu . Přiřazení těchto čísel probíhá jedinečně v různých operačních systémech a na různých počítačových platformách . Obecně hlavní číslo identifikuje ovladač zařízení a vedlejší číslo identifikuje konkrétní zařízení (možná z mnoha), které ovladač ovládá: v tomto případě může systém předat vedlejší číslo řidiči. V případě dynamického přidělování čísel to však nemusí platit (např. Na FreeBSD 5 a výše).

Stejně jako u jiných speciálních typů souborů počítačový systém přistupuje k uzlům zařízení pomocí standardních systémových volání a zachází s nimi jako s běžnými počítačovými soubory. Existují dva standardní typy souborů zařízení; jejich jména jsou bohužel z historických důvodů dosti neintuitivní a vysvětlení rozdílu mezi nimi je často nesprávné.

Charakteristická zařízení

Speciální soubory znaků nebo znaková zařízení poskytují přímý přístup k hardwarovému zařízení bez vyrovnávací paměti. Ne nutně umožňují programům číst nebo zapisovat jednotlivé znaky najednou; to záleží na dotyčném zařízení. Znakové zařízení pro pevný disk například bude normálně vyžadovat, aby všechna čtení a zápisy byly zarovnány podle hranic bloku a zcela jistě neumožní čtení jediného bajtu.

Znaková zařízení jsou někdy známá jako nezpracovaná zařízení, aby se předešlo nejasnostem ohledně skutečnosti, že znakové zařízení pro kus hardwaru založeného na blocích bude obvykle vyžadovat programy pro čtení a zápis zarovnaných bloků.

Blokovat zařízení

Blokovat speciální soubory nebo blokovat zařízení poskytují přístup k hardwarovým zařízením ve vyrovnávací paměti a poskytují určitou abstrakci z jejich specifik. Na rozdíl od znakových zařízení bloková zařízení vždy umožní programátorovi číst nebo zapisovat blok jakékoli velikosti (včetně jednotlivých znaků/bajtů) a jakéhokoli zarovnání. Temnější stránkou je, že protože bloková zařízení jsou ukládána do vyrovnávací paměti, programátor neví, jak dlouho bude trvat, než budou zapsaná data předána z vyrovnávacích pamětí jádra do skutečného zařízení, nebo dokonce v jakém pořadí dorazí dva samostatné zápisy na fyzické zařízení. Navíc pokud stejný hardware odhaluje znaková i bloková zařízení, existuje riziko poškození dat, protože klienti používající znakové zařízení nevědí o změnách provedených ve vyrovnávacích pamětech blokového zařízení.

Většina systémů vytváří bloková i znaková zařízení reprezentující hardware jako pevné disky. FreeBSD a Linux zejména ne; první odstranil podporu blokových zařízení, zatímco druhý vytváří pouze bloková zařízení. V Linuxu je k získání znakového zařízení na disku nutné použít ovladač „raw“, ačkoli stejný účinek jako otevření znakového zařízení lze získat otevřením blokového zařízení s O_DIRECTpříznakem specifickým pro Linux .

Pseudozařízení

Uzly zařízení v unixových systémech nemusí nutně odpovídat fyzickým zařízením . Uzly, kterým tato korespondence chybí, tvoří skupinu pseudozařízení . Poskytují různé funkce zpracovávané operačním systémem. Mezi nejčastěji používaná (na základě znaků) pseudozařízení patří:

  • /dev/null  - přijme a zahodí veškerý zapsaný vstup; při čtení zposkytujeindikaci konce souboru .
  • /dev/nula  - přijme a zahodí veškerý zapsaný vstup; produkuje nepřetržitý proud nulových znaků (bajtů nulové hodnoty) jako výstup při čtení z.
  • /dev/full  -vytváří nepřetržitý proud nulových znaků (bajtů nulové hodnoty) jako výstup při čtení z a generuje chybu ENOSPC („plný disk“) při pokusu o zápis do něj.
  • /dev/random  - vytváří bajty generované kryptograficky zabezpečeným generátorem pseudonáhodných čísel jádra. Jeho přesné chování se liší podle implementace a někdy jsou k dispozici také varianty jako /dev /urandom nebo /dev /arandom .

Pseudozařízení specifická pro BSD s rozhraním ioctl mohou dále zahrnovat:

Vytvoření uzlu

Uzly jsou vytvářeny systémovým voláním mknod . Program příkazového řádku pro vytváření uzlů se také nazývá mknod. Uzly lze přesouvat nebo mazat obvyklými systémovými voláními systému souborů ( přejmenovat , odpojit ) a příkazy ( mv , rm ).

Některé verze Unixu obsahují skript s názvem makedev nebo MAKEDEV pro vytvoření všech potřebných zařízení v adresáři /dev. Má to smysl pouze v systémech, jejichž zařízením jsou staticky přiřazena hlavní čísla (např. Pomocí hardcodingu v jejich modulu jádra).

Zatímco některé jiné unixové systémy, jako je FreeBSD , používaly správu uzlů zařízení založenou na jádře pouze prostřednictvím devfs a nepodporovaly ruční vytváření uzlů. Systémové volání mknod (2) a příkaz mknod (8) existují, aby byla zachována kompatibilita s POSIX, ale ručně vytvořené uzly zařízení mimo devfs nebudou vůbec fungovat.

Konvence pojmenování

Pro názvy některých zařízení v /devhierarchii slouží k identifikaci typu zařízení následující předpony :

V některých operačních systémech se běžně používají některé další předpony:

  • fb: vyrovnávací paměť snímků
  • fd: (platformové) diskety , ačkoli stejná zkratka se také běžně používá k označení deskriptoru souboru
  • hd: („Klasický“) ovladač IDE (dříve používaný pro jednotky pevného disku ATA , optické jednotky ATAPI atd.)
    • hda: hlavní zařízení na prvním kanálu ATA (obvykle označeno velkým číslem 3 a vedlejším číslem 0)
    • hdb: podřízené zařízení na prvním kanálu ATA
    • hdc: hlavní zařízení na druhém kanálu ATA
    • hdd: podřízené zařízení na druhém kanálu ATA
  • parport, pp: paralelní porty
  • mem: Hlavní paměť (znakové zařízení)
  • Ovladač NVMe
    • nvme0: první registrovaný ovladač zařízení zařízení (znakové zařízení)
    • nvme0n1: první jmenný prostor prvního registrovaného zařízení (blokovat zařízení)
    • nvme0n1p1: první oddíl prvního registrovaného zařízení první obor názvů (blokové zařízení)
  • Ovladač MMC
    • mmcblk: ovladač úložiště pro MMC Media ( karty SD , čipy eMMC na přenosných počítačích atd.)
      • mmcblk0: první registrované zařízení
      • mmcblk0p1: první registrovaný první oddíl zařízení
  • Ovladač SCSI , používá ho také libATA (moderní ovladač PATA / SATA ), USB , IEEE 1394 atd.
    • sd: ovladač velkokapacitního úložiště (blokovací zařízení)
      • sda: první registrované zařízení
      • sdb, sdcatd.: druhé, třetí atd. registrovaná zařízení
    • ses: Ovladač skříně
    • sg: obecná vrstva SCSI
    • sr: Ovladač „ROM“ (datově orientované optické diskové jednotky; scd je pouze sekundární alias)
    • st: ovladač magnetické pásky
  • tty: terminály
    • ttyS: (platformový) ovladač sériového portu
    • ttyUSB: USB sériové převaděče, modemy atd.

Kanonický seznam předpon používaných v systému Linux lze nalézt v seznamu zařízení Linux, oficiálním registru přidělených čísel zařízení a /devuzlů adresářů pro operační systém Linux.

U většiny zařízení za touto předponou následuje číslo jednoznačně identifikující konkrétní zařízení. U pevných disků se k identifikaci zařízení používá písmeno a za ním identifikace oddílů . Souborový systém tedy může „znát“ například oblast na disku /dev/sda3nebo „vidět“ relaci síťového terminálu spojenou s /dev/pts/14.

Na discích používajících typický hlavní spouštěcí záznam z počítače jsou čísla zařízení primárního a volitelného rozšířeného oddílu očíslována od 1 do 4, zatímco indexy všech logických oblastí jsou 5 a dále, bez ohledu na rozložení dřívějších oddílů (jejich nadřazený rozšířený oddíl) oddíl nemusí být čtvrtým oddílem na disku, ani nemusí existovat všechny čtyři primární oddíly).

Názvy zařízení obvykle nejsou přenosné mezi různými unixovými systémovými variantami, například u některých systémů BSD jsou zařízení IDE pojmenována /dev /wd0, /dev /wd1 atd.

devfs

devfs je specifická implementace systému souborů zařízení v operačních systémech podobných Unixu, který se používá k prezentaci souborů zařízení. Základní mechanismus implementace se může lišit v závislosti na operačním systému.

Údržba těchto speciálních souborů na fyzicky implementovaném systému souborů (tj. Na pevném disku) je nepohodlná, a protože stejně potřebuje podporu jádra, vznikla myšlenka účelového logického systému souborů, který není fyzicky uložen.

Také definovat, kdy jsou zařízení připravena k zobrazení, není úplně triviální. Přístup „devfs“ je pro ovladač zařízení požadovat vytvoření a odstranění položek „devfs“ souvisejících se zařízeními, která povoluje a zakazuje.

PC DOS, TOS, OS/2 a Windows

Soubor zařízení je vyhrazené klíčové slovo používané v systémech PC DOS , TOS , OS/2 a Windows, které umožňuje přístup k určitým portům a zařízením.

MS-DOS si vypůjčil koncept speciálních souborů od Unixu, ale přejmenoval je na zařízení . Protože dřívější verze systému MS-DOS nepodporovaly hierarchii adresářů , zařízení se odlišovala od běžných souborů vytvořením jejich názvů vyhrazenými slovy . To znamená, že určité názvy souborů byly vyhrazeny pro zařízení a neměly by být použity k pojmenování nových souborů nebo adresářů. Samotná vyhrazená jména byla vybrána tak, aby byla kompatibilní se zpracováním PIPpříkazů v CP/M se „speciálními soubory“ . V systému DOS existovaly dva druhy zařízení: bloková zařízení (používaná pro diskové jednotky) a znaková zařízení (obecně všechna ostatní zařízení, včetně zařízení COM a PRN).

DOS používá soubory zařízení pro přístup k tiskárnám a portům. Většina verzí systému Windows také obsahuje tuto podporu, což může způsobit zmatek při pokusu o vytvoření souborů a složek s určitými názvy, protože tyto názvy nemohou mít. Verze 2.x systému MS-DOS poskytují parametr AVAILDEV CONFIG.SYS, který, pokud je nastaven FALSE, činí tyto speciální názvy aktivní pouze s předponou \DEV\, což umožňuje vytváření běžných souborů s těmito názvy.

GEMDOS , část systému Atari TOS podobná DOS, podporovala podobná jména zařízení jako DOS, ale na rozdíl od DOSu vyžadovala koncový znak „:“ (v systému DOS je to volitelné), aby je bylo možné identifikovat jako zařízení na rozdíl od běžných názvů souborů (tedy „ CON: "by fungovalo na DOS i TOS, ale" CON "by pojmenovalo obyčejný soubor na TOS, ale konzolové zařízení na DOSu). V mátou a Magic , speciální UNIX jako jednotný pohled souborového systému přistupovat prostřednictvím „U:“ písmeno jednotky umístěné také soubory zařízení v „U: \ DEV“.

Klíčové slovo zařízení Použijte jako vstup Použijte jako výstup
OŠIDIT Přijímá zadaná data, dokud není stisknuto ^ Z (Ctrl-Z). Vytiskne data do konzoly.
PRN N/A Vytiskne text na tiskárnu, obvykle přesměrovaný na LPT1 nebo LST . Někdy lze konfigurovat na jiná zařízení.
AUX (není v OS/2) Čte data z pomocného zařízení, obvykle ze sériového zařízení, jako je COM1 . Někdy lze konfigurovat na jiná zařízení. Odesílá data na pomocné zařízení, obvykle sériové zařízení jako COM1 . Někdy překonfigurovatelná na jiná zařízení.
NUL Vrátí null nebo žádná data. Zruší přijatá data.
CLOCK $ ( v některých verzích systému MS-DOS 2.11 se stále jmenuje CLOCK ) N/A N/A
KEYBD $ (pouze v multitaskingu MS-DOS ) ? ?
KBD $ (pouze v OS/2 ) ? ?
SCREEN $ (pouze v multitaskingu MS-DOS a OS/2) ? ?
POINTER $ (pouze v OS/2) ? ?
MOUSE $ (pouze v OS/2) ? ?
$ IDLE $ (pouze v rodinách DR-DOS (od 5.0) a Multiuser DOS (od souběžného DOS 386 )) N/A N/A
CONFIG $ (pouze v systému MS-DOS 7.0 a novějších) N/A N/A
LST (pouze v 86-DOS a DOS 1.x, také v MS-DOS 2.11 společnosti Hewlett-Packard pro HP Portable Plus ) Nevrací žádná data. Odesílá data do řádkové tiskárny. (LPT2 pro MS-DOS 2.11 společnosti Hewlett-Packard)
PLT (pouze v systému MS-DOS 2.11 společnosti Hewlett-Packard pro HP Portable Plus ) Nevrací žádná data. Odesílá data do přiřazeného plotru . Připojené zařízení plotru je možné konfigurovat.
LPT1 , LPT2 , LPT3 a někdy LPT4 (v DR-DOS 7.02 a vyšší a některé verze Multiuser DOS) N/A Odesílá data na vybraný paralelní port.
COM1 , COM2 , COM3 , COM4 Čte data z vybraného sériového portu. Odesílá data na vybraný sériový port.
82164A (pouze v systému MS-DOS 2.11 společnosti Hewlett-Packard pro HP Portable Plus ) Přesměruje na COM2. Přesměruje na COM2.

Pomocí přesměrování prostředí a kanálů lze data odesílat nebo přijímat ze zařízení. Zadáním následujícího například odešlete soubor c:\data.txtna tiskárnu:

TYPE c:\data.txt > PRN

PIPE, MAILSLOT a MUP jsou další standardní zařízení Windows.

IOCS

8bitový operační systém kapesních počítačů Sharp, jako jsou PC-E500 , PC-E500S atd., Se skládá z BASIC tlumočníka, DOS 2-like File Control System (FCS) implementujícího základní 12bitový souborový systém podobný FAT a systém řízení vstupu/výstupu podobný systému BIOS (IOCS) implementující řadu ovladačů standardních znaků a blokových zařízení a také speciální souborová zařízení včetně STDO:/SCRN: (displej), STDI:/KYBD: (klávesnice), COM: ( sériové I/O), STDL:/PRN: (tiskárna), CAS: (kazetová páska), E:/F:/G: (soubor v paměti), S1:/S2:/S3: (paměťová karta), X: /Y: (disketa), SYSTM: (systém) a NIL: (funkce).

Implementace

Operační systém Souborový systém nebo software pro správu Standardní montážní bod Autor Poznámky
Linux 2.3.46pre5–2.6.17 devfs a devfsd /dev Richard Gooch Plně implementováno v jádře, s volitelným démonem devfsd pro zpracování událostí uzlu zařízení v uživatelském prostoru. Zastaralé - uživatelé jsou vyzváni k migraci na udev a/nebo devtmpfs .
Linux 2.5– udev na libovolných fs, ale obvykle tmpfs /dev Greg Kroah-Hartman , Kay Sievers a Dan Stekloff Informace o zařízení, implementované převážně v uživatelském prostoru, jsou shromažďovány ze systému sysfs . Soubory zařízení lze ukládat v konvenčním univerzálním systému souborů nebo v systému souborů v paměti ( tmpfs ).
Linux 2.6.32 - devtmpfs s udev nebo bez /dev Kay Sievers , Jan Blunck, Greg Kroah-Hartman Hybridní přístup jádra/uživatelského prostoru souborového systému zařízení k zajištění uzlů před prvním spuštěním udev
Solaris devfs /devices Sun Microsystems Představeno s dynamicky načtenými ovladači v systému Solaris-2.1
FreeBSD 2.0– devfs /dev Poul-Henning Kamp Plně implementováno v jádře.
DragonFly BSD 2.3.2– devfs /dev Alex Hornung Plně implementováno v jádře.
Operační Systém Mac devfs /dev Apple Inc. Plně implementováno v jádře.
HP-UX B.11.31 devfs /dev HP Plně implementováno v jádře.
Plán 9 # Bell Labs Implementováno v jádře.
RISC OS DeviceFS Devices: Počítače Acorn DeviceFS byl spuštěn v roce 1991 a poprvé se objevil v RISC OS 3. Spravuje několik zařízení jako speciální soubory, nejčastěji: Parallel, Serial, FastParallel a USB. Modul SystemDevices implementuje pseudo zařízení, jako jsou: Vdu, Kbd, Null a Printer.
MS-DOS , PC DOS , DR-DOS TLUSTÝ \DEV(a /DEV) rozličný Jak je implementováno v jádře, znaková zařízení se objeví ve virtuálním adresáři \ DEV a v libovolném adresáři disku. V systému MS-DOS/PC DOS 2.x lze použít direktivu CONFIG.SYS AVAILDEV = FALSE k vynucení existence zařízení pouze v \ DEV.
Magic , MINT , MultiTOS U:\DEV Aplikační systémy Heidelberg, Eric R. Smith, Atari Corp. Speciální jednotka U: obsahuje virtuální adresář DEV, ve kterém lze najít soubory zařízení.
Windows 9x \\devices\ Microsoft
Windows NT \Device Microsoft \DeviceAdresář je součástí objektu názvů Windows NT.
Subsystém Windows NT Win32 \\.\ Microsoft Tyto \\.\předpony značky podporující rozhraní API přístup k zařízení názvů Win32 namísto souboru názvů Win32. Názvy zařízení Win32 jsou symbolické odkazy na názvy zařízení v \Deviceadresáři Windows NT .

Viz také

Reference

Další čtení