GNU/Linux >> Znalost Linux >  >> Linux

Linux – kdy použít /dev a /sys pro komunikaci mezi uživatelským prostorem a jádrem?

Právě se dostávám do vývoje ovladačů pro Linux a mám koncepční otázku, která podle mě pomůže i dalším nováčkům ve vývoji jádra.

Pročítám knihu Linux Device Drivers a dokončil jsem až kap. 3 knihy. Až dosud jsem to viděl vydáním open , close a další příkazy k souborům v /dev složka, má uživatelský prostor přístup k funkcím jádra.

Další způsob ovládání sdílení je prostřednictvím souborů v /sys , kde čtení nebo zápis z sys soubory mohou komunikovat s ovladačem.

Chtěl jsem vědět, jaké by byly případy použití pro jednotlivé metody? Jsou to dva přístupy ke stejnému úkolu? Má jeden vůči druhému nějaká omezení? Může se někdo podělit o praktické příklady, kdy by jeden mohl být užitečný nad druhým?

Přečetl jsem si další otázky zde a vysvětlují dev a sys . I když je to užitečné, chtěl jsem získat trochu podrobnější znalosti o tom, jak se oba liší a jak by se měly používat.

Přijatá odpověď:

Velmi zhruba:

/dev obsahuje uzly zařízení, což byl v dřívějších unixových systémech jediný způsob interakce s jádrem. Existují dva typy těchto, blok zařízení a znak zařízení. Odpovídající API je zaměřeno na něco, co umožní blokové I/O (nějaký druh disku) nebo znakové I/O (např. sériový port).

/sys (a /proc ) byly přidány později, možná inspirované OS Plan 9. Poskytují kompletní adresářové podstromy a položky souborů v těchto podstromech obsahují text, který popisuje vnitřní stav modulu jádra při čtení, nebo při zápisu nastavuje vnitřní stav.

Typická aplikace by tedy byla:

Chcete napsat ovladač jádra pro nějaký druh úložného zařízení? Použijte /dev uzel pro přístup k samotnému zařízení a /sys (nebo /proc ) záznamy pro doladění způsobu přístupu k úložišti.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Bash =~ Regex A Https://regex101.com/?

  3. Kdy použít /dev/random vs /dev/urandom?

  1. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  2. Jak mohu změnit množství a velikost linuxových ramdisků (/dev/ram0 - /dev/ram15)?

  3. Linux:Rozdíl mezi /dev/console , /dev/tty a /dev/tty0

  1. jádro:deaktivace /dev/kmem a /dev/mem

  2. Je špatné propojit /dev/random s /dev/urandom v Linuxu?

  3. Měly by weby žít ve /var/ nebo /usr/ podle doporučeného použití?