Jaký je rozdíl mezi procfs a sysfs? Proč jsou vyráběny jako souborové systémy? Jak to chápu, proc je prostě něco, co uchovává okamžité informace týkající se procesů probíhajících v systému.
Jaký je rozdíl mezi procfs a sysfs?
proc
je starý, je víceméně bez pravidel a struktury. A v určitém okamžiku bylo rozhodnuto, že proc
je příliš chaotický a je potřeba nový způsob.
Poté byl vytvořen sysfs
a nové věci, které byly přidány, byly vloženy do sysfs
podobných informací o zařízení.
V jistém smyslu tak dělají totéž, ale sysfs
je trochu strukturovanější.
Proč jsou vyráběny jako souborové systémy?
Filozofie UNIX nám říká, že vše je „soubor“, proto byl vytvořen tak, aby se choval jako soubory.
Jak to chápu, proc je prostě něco, co uchovává okamžité informace týkající se procesů probíhajících v systému.
Tyto části tam vždy byly a pravděpodobně se nikdy nepřesunou do sysfs
.
Existuje však několik starých věcí, které najdete v proc
, který nebyl přesunut.
Na začátku (cesta zpět v Unixu) byl způsob, jakým se programy zjišťovaly o běžících procesech v systému, prostřednictvím přímého čtení procesních struktur z paměti jádra (otevírání/dev/mem a přímá interpretace prvotních dat). Takto fungovaly úplně první příkazy „ps“. Postupem času byly některé informace zpřístupněny prostřednictvím systémových volání.
Je však špatnou formou vystavovat systémová data přímo do uživatelského prostoru prostřednictvím/dev/mem a je nepříjemné neustále vytvářet nová systémová volání pokaždé, když jste chtěli exportovat nová data procesních dat, a tak byla vytvořena nová metoda pro přístup ke strukturovaným datům pro aplikace v uživatelském prostoru, kde se dozvíte o atributech procesu. Toto byl souborový systém/proc. Pomocí/proc bylo možné udržovat rozhraní a struktury (adresáře a soubory) stejné, i když se změnila základní datová struktura v jádře. To bylo mnohem méně křehké než dřívější systém a bylo to lepší měřítko.
Souborový systém/proc byl původně navržen tak, aby publikoval informace o procesu a několik klíčových systémových atributů, vyžadovaných 'ps', 'top', 'free' a několika dalšími systémovými nástroji. Protože se však snadno používalo (jak ze strany jádra, tak ze strany uživatelského prostoru), stalo se to skládkou pro celou řadu systémových informací. Začala také získávat soubory pro čtení a zápis, které se používají k úpravě nastavení a řízení provozu jádra nebo jeho různých subsystémů. Metodika implementace kontrolních rozhraní však byla ad-hoc a/proc se brzy stala spletitou nepořádkem.
Systém sysfs (nebo souborový systém sys) byl navržen tak, aby přidával strukturu této nepořádku a poskytoval jednotný způsob, jak vystavit systémové informace a řídicí body (nastavitelné atributy systému a ovladače) uživatelskému prostoru z jádra. Rámec ovladačů nyní v jádře automaticky vytvoří adresáře pod/sys, když jsou ovladače zaregistrovány, na základě typu ovladače a hodnot v jejich datových strukturách. To znamená, že ovladače konkrétního typu budou mít všechny prvky odkryté prostřednictvím sysfs.
Mnoho původních systémových informací a kontrolních bodů je stále přístupných v/proc, ale všechny nové sběrnice a ovladače by měly své informační a kontrolní body vystavovat prostřednictvím sysfs.
procfs umožňuje libovolný file_operations
, sysfs je omezenější
položky procfs dostávají strukturu file_operations
, která obsahuje funkční ukazatele, které určují, co se stane s každým systémovým voláním založeným na souborech, např. open
, read
, mmap
atd. a můžete z nich provádět libovolné akce.
Minimální příklady:
sysfs je omezenější v následujících smyslech:
show
a store
, které Linux používá k implementaci open
, close
, read
, write
a lseek
pro vás. Viz také: Jak připojit operace se soubory k atributu sysfs v ovladači platformy? | Přetečení zásobníkkobject
Minimální příklad: Jak vytvořit jednoduchý atribut třídy sysfs v linuxovém jádře v3.2 | Stack Overflow
sysfs je virtuální souborový systém vytvořený během cyklu vydání jádra 2.6, který zobrazuje informace o zařízení, protože procfs tento typ informací neučinil tak dobře.
Paměť atd. Nebyla do systému sysfs přenesena, protože nikdy nemělo ukázat tento typ informací, takže je nepravděpodobné, že bude přenesena vůbec.
Jak sem také chci přidat ... As/proc je starší verze, obsahuje informace o jaderném zařízení té doby ... jako sysfs přišel s verzí 2.6 jádra, takže informace o ovladači zařízení si vytvářejí svůj vlastní adresář, podle kterého jsou trochu strukturované a snadno přístupné ..