abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    dnes 00:55 | Zajímavý projekt

    PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.

    vlk | Komentářů: 0
    včera 19:44 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 17:33 | Nová verze

    Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    včera 05:33 | Komunita

    Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.

    Ladislav Hagara | Komentářů: 15
    včera 03:55 | Komunita

    sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.

    Ladislav Hagara | Komentářů: 0
    6.5. 22:11 | Nasazení Linuxu

    Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).

    Ladislav Hagara | Komentářů: 2
    6.5. 13:22 | IT novinky

    Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.

    Ladislav Hagara | Komentářů: 1
    6.5. 04:55 | Nová verze

    Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 1
    6.5. 00:33 | Komunita

    Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.

    Ladislav Hagara | Komentářů: 32
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 550 hlasů
     Komentářů: 26, poslední dnes 09:58
    Rozcestník

    Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD

    12. 7. 2015 | Redakce | Jaderné noviny | 1945×

    Stav vydání jádra. Citáty týdne. Připojení souborových deskriptorů k procesům pomocí CLONE_FD.

    Stav vydání jádra

    Aktuální vývojové jádro je 4.0-rc6, vydané 29. března. Podle Linuse se: "to pomalu uklidňuje, opravy přicházejí ze všech stran. Opravili jsme regresi výkonu NUMA a všeobecně to vypadá dobře. Měli jsme jisté problémy s i915 a dvouchybou u KVM, takže jsem si na chvíli myslel, že půjde o vydání, které si vyžádá rc8, ale možná to nebude nutné."

    Stabilní aktualizace: 3.19.3 byla vydána 26. března; verze 3.14.37 a 3.10.73 následovaly den poté.

    Citáty týdne

    Tento patchset navrhuje řešení. Podpora pro negativní počet procesorů umožňuje škálovat až k O(-NR_CPUS). Čím více máte procesorů tím výše škálujete, až k bodu, kdy software ukončí akci dříve, než ho napíšete (za předpokladu, že máte okolo -1024 CPU). Programování je ještě jednodušší, protože se nemusíte zabývat tolika procesory.

    Mějte na paměti, že tento patchset je zatím jen návrh. Žádné sestavení nebylo testováno a ještě nemám potřebný hardware.

    -Frederic Weisbecker

    32bitový kód je starý, plný otravných háčků, neustále padá, když pracujeme na nových funkcích pro 64 bit. A upřímně, nikoho už 32 bit nezajímá. Pokud vás ano, děláte chybu a měli byste jít s dobou. Běžte ven, zhluboka se nadechněte a projděte se. Jako první věc po návratu se *podívejte* *do* *kalendáře*. Je čas se říct starému 32bitovému písku pápá. Kupte si 64bitový procesor. Žijte trochu. Staňte se součástí skutečného světa.

    -Borislav Petkov

    Připojení souborových deskriptorů k procesům pomocí CLONE_FD

    Tradiční Unixový systém má mnoho výhod, ale šetrnost ke kódu knihoven nebývá jednou z nich. Jádrem problému je použití globálních struktur a mechanismů, se kterými nelze pracovat nezávisle za pomoci aplikaci nebo jakékoli knihovny, kterou by mohly používat; tabulka souborových deskriptorů a vektory pro manipulaci se signály představují jen dva příklady. Nedávno zveřejněný patch se snaží řešit část tohoto problému, ale mohl by vést k větší, dlouhodobější změně, kterak řídit procesy v Linuxu.

    Vezměme si například knihovnu, která podřebuje vytvořit podřízený proces pomocí fork() a dostat upozornění, jakmile proces existuje. Knihovna nemůže volat wait(), aniž by blokovala celý proces volání a zasahovat do podřízených procesů, vytvořených jinde v žádosti. Příjem asynchronních oznámení pomocí SIGCHILD má podobný problém: K dispozici je pouze jeden popisovač SIGCHILD, takže jeho zachycení v knihovně se střetává s použitím signálu aplikací. Potřeba zabránit podobným konfliktům kódem aplikace může výrazně omezit možnosti knihovny.

    Patch CLONE_FD Joshe Tripletta se pokouší tento konkrétní problém řešit. Přidává novou vlajku, CLONE_FD, k variantě clone_() systémového volání (clone4()); Je-li vlajka přítomna, vrátí clone4() souborový deskriptor, odkazující k procesu, který právě vytvořil. Ve výchozím nastavení se s deskriptorem nedá příliš pracovat, ale je-li zároveň nastavena vlajka CLONE_AUTOREAP, chování systému se změní.

    Když skončí proces vytvořený pomocí CLONE_AUTOREAP, dojde k jeho okamžitému vyčištění, místo aby čekal v zombie stavu na voláníwait() rodičovského procesu. Toto chování může být užitečné samo o sobě, pokud se rodič nestará o to, kdy potomek ukončí svou činnost. Pokud rodič čeká na potomkův exit, může vytvořit procesní souborový deskriptor s pomocí CLONE_FD - tak bude umožněno čtení deskriptoru v okamžiku, kdy dojde k ukončení procesu. Viditelná bude struktura:

    	struct clonefd_info {
    	uint32_t code;   /* Signal code */
    	uint32_t status; /* Exit status or signal */
    	uint64_t utime;  /* User CPU time */
    	uint64_t stime;  /* System CPU time */
        };
    

    S pomocí tohoto mechanismu může funkce knihovny vytvořit proces a počkat na jeho dokončení, aniž by došlo k narušení řízení procesu jinde v programu. Tím se řeší problém nutnosti sdílet mechanismus pro řízení informací o ukončení procesu odstraněním onoho sdílení a dochází k proměně běžícího procesu v určitý typ souboru, který může být sledován a řízen výlučně kódem, který o něm ví.

    Toto řešení mělo malý háček ve způsobu provádění řešení: V systémové volání clone již není místo pro žádné další vlajky. Josh proto vytvořil nové, které se jmenuje clone4(). V C knihovně vypadá interface takto:

    	int clone4(uint64_t flags, size_t args_size, struct clone4_args *args,
                   int (*fn)(void *), void *arg);
    

    Pole flags drží vlajky v provozu. Tradiční vlajkyclone(), i ty nové. Jako v případě clone() zavolá po svém vytvoření proces potomka fn(arg). Argument args vypadá takto:

    	struct clone4_args {
    	pid_t *ptid;
    	pid_t *ctid;
    	unsigned long stack_start;
    	unsigned long stack_size;
    	unsigned long tls;
    	int *clonefd;
    	unsigned clonefd_flags;
        };
    

    Většina těchto polí odpovídá argumentům, předaným volání clone(); jen byla přesunuta do samostatné struktury. Pole clonefd a clonefd_flags jsou nová. První označuje místo pro uložení vytvořeného souborového deskriptoru po předání CLONE_FD, druhé smí držet vlajky O_CLOEXEC a O_NONBLOCK, které se použijí na tento deskriptor.

    velikost struktury clone4_args musí být předána odděleně skrze args_size. Pokud je třeba v budoucnu ke struktuře přidat pole, umožní předaná velikost kernelu rozhodnout, která verze struktury je používaná a podle toho reagovat.

    Pro úplnost, takto vypadá celé systémové volání (z knihovny C):

    	int clone4(unsigned flags_high, unsigned flags_low,
                   unsigned long args_size,
                   struct clone4_args *args);
    

    Na této úrovni se clone4() chová jako fork(), vrací se do obou procesů (rodiče i potomka), ovšem s jinými hodnotami.

    Tato funkce je celkem užitečná, ale popis opravy obsahuje mimo jiné tuto zajímavou poznámku:

    Souborový deskriptor CLONE_FD jednoznačně identifikuje proces systému (in a race-free way) držením odkazu k task_struct. V budoucnu možná zavedeme API rozhraní, která podporují použití procesních souborových deskriptorů místo PID.

    ID (PID) procesu podléhají úzkému souběhu: proces by se mohl ukončit a být nahrazen jiným, se stejným PID: V systému se spoustou běžících procesů a rozdílných aktivit je šance na krátkodobé využití PID vysoká, zvlášť, když se počet dostupných PID nezvýšil nad tradičních 32 768. Souborový deskriptor, připojený k procesu v době vzniku není předmětem "race condition", měl by tedy být bezpečnější při práci pro jiné procesy.

    Přidání systému pro řízení souborově deskriptorových systémových volání je úkolem do budoucnosti, prozatím řeší akutní problémy CLONE_FD. Tento patch si prozatím odbyl dvě kola oprav, dočkal se několika významných změn, ale jeho hlavní funkčnost se nezdá být kontroverzní. Ještě to vypadá na jedno kolo revizí, potom by se tahle funkce mohla dostat do vývojového cyklu 4.2.

           

    Hodnocení: 60 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Petr Tomášek avatar 12.7.2015 22:04 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    podřebuje vytvořit podřízený proces
    No, lepší než potřísněný proces ;-)...
    multicult.fm | monokultura je zlo | welcome refugees!
    Petr Tomášek avatar 12.7.2015 22:07 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    Přidává novou vlajku
    Ale fuj... hezky česky je to „příznak“...
    multicult.fm | monokultura je zlo | welcome refugees!
    xkucf03 avatar 12.7.2015 22:54 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    +1, zrovna jsem to chtěl napsat
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    13.7.2015 00:14 2X4B-523P | skóre: 38 | blog: Zelezo_vs_Debian
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    cesky se tomu rika flagy, priznak jsem slysel tak maximalne u nastaveni partition, totiz diskoveho oddilu a stejne rikam ze se nastavuje bootovatelnou... asi je to jak kde... jedno bude hovorove a to druhe spisovne, nebo tak neco...
    xkucf03 avatar 13.7.2015 00:18 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD

    Slovo „flagy“ není česky – „příznak“ se v tomhle smyslu používá úplně normálně.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    13.7.2015 08:26 NN
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    +1
    14.7.2015 09:41 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD

    a pouzivalo se uz v 80. letech

    USE="-gnome -kde";turris
    17.7.2015 16:38 2X4B-523P | skóre: 38 | blog: Zelezo_vs_Debian
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    jak kde
    13.7.2015 12:32 Jardík
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    Dobrá zpráva. Race-free implementace práce s procesy je opravdu potřeba, dodnes to některé knihovny (třeba glib či Qt) řeší prakticky různými hacky, co se rozbijou, jakmile něco spustí proces svojí cestou, nebo co mají lineární časovou složitost, kdy použijí waitpid na každý "známý" proces, který knihovna spustila. Nedej, kdyby třeba uživatel sám zavolal wait ve své aplikaci a reapnul by proces vlastněný knihovnou, okamžitá race condition, kdy pak knihovna provede wait na úplně špatný proces.
    pavlix avatar 13.7.2015 15:06 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    Hlavně že na waitfd se z vysoka sere a všichni se tváří, že se dá použít signalfd.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    pavlix avatar 13.7.2015 15:09 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    Nevím přesně, jakou výhodu má CLONE_FD oproti signalfd a jaké specifické races to řeší, které signalfd neřeší, ale třeba se najde někdo, kdo tyhle znalosti má a podělí se.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    13.7.2015 18:49 Jardík
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    signalfd neřeší vůbec nic, protože zase se budete prát s knihovnou o signalfd, když ho bude chtít použít i cílová aplikace. Race condition kvůli číselnému pid zůstanou, a stejně musíte po dostání signálu přes signalfd zavolat něco z wait rodiny (a zase musíte třeba procházet celý seznam procesů, protože musíte brát v úvahu, že nodostanete tolik signálů, kolik máte procesů, ale i méně, pokud budou 'spojeny'). Taky je tu problém s maskami signálů, kdy se pere aplikace s knihovnou a ta třeba s knihovnou další současně použitou.

    CLONE_FD tohle řeší, proces je reapnut automaticky a vy dostanete info, že se tak stalo a víte přesně který proces, nikde se vám informace neztratí, jako v případě signálu či signalfd.
    13.7.2015 18:53 Jardík
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    Otázkou pak zůstává, jak moc bude v budoucnu API rozšířeno a jestli se to stane použitelné i pro jiné účely.
    pavlix avatar 14.7.2015 08:42 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    Samozřejmě jsem měl namysli waitfd, nikoli signalfd, tedy file deskriptor na konkrétní child proces, o kterém tvrdili, že to v jádře vůbec není potřeba. Jinak waitfd nebylo kdysi přijato nikoli z důvodu, že by se chystalo lepší řešení v podobě CLONE_FD, ale protože to údajně nebylo potřeba a na všechno stačí signalfd. Někdy mi přijde, že by si kerneláři měli občas do userspace taky něco napsat.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    14.7.2015 12:08 Jardík
    Rozbalit Rozbalit vše Re: Jaderné noviny - 1. 4. 2015: Připojení souborových deskriptorů k procesům pomocí CLONE_FD
    Já si vybavuju nějakej článek v souvislosti s Qt a QProcess, kde se snad jeden vývojář pokoušel něco navrhnout, ale že to vedlo k návrhu nějakého waitfd, to už jsem nevěděl. Jinak ten signalfd je v knihovnách prakticky nepoužitelný, pokuď teda nevytvoří knihovna vlákno, které vlastní, a jehož signal maskami si může dělat, co chce. V rámci aplikace se to pak jinak prostě tluče a je to nepoužitelné. signalfd považuji za jakýsi pokus, který prostě nebyl úplně domyšlen.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.