abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 22:00 | Zajímavý software

    V květnu bylo oznámeno, že dnes budou zveřejněny zdrojové kódy přehrávače Winamp. Stalo se tak (𝕏). Zdrojové kódy jsou k dispozici na GitHubu. Nejedná se ale o svobodný a otevřený software (licence).

    Ladislav Hagara | Komentářů: 1
    dnes 13:55 | IT novinky

    Fiala navrhne odvolání Bartoše z postu vicepremiéra pro digitalizaci a ministra pro místní rozvoj ke 30. září. Důvodem je nezvládnutí digitalizace stavebního řízení, podle premiéra ji Bartoš není schopen dotáhnout do konce. „Po projednání analýzy digitálního stavebního řízení na vládě minulou středu a po dnešním ranním rozhovoru s panem vicepremiérem Ivanem Bartošem jsem bohužel nabyl jistoty, že není schopen tuto digitalizaci

    … více »
    Ladislav Hagara | Komentářů: 16
    dnes 12:33 | IT novinky

    Komunikační platforma Telegram začne po tlaku úřadů poskytovat vládám více informací o svých uživatelích. V pondělí to oznámil její zakladatel a generální ředitel Pavel Durov. Ten už několik týdnů ve Francii čelí obvinění, že nedělá dost pro to, aby platformu nevyužívaly i kriminální živly. To chce Durov nyní také změnit, informují tiskové agentury.

    Ladislav Hagara | Komentářů: 21
    dnes 12:22 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 145 (pdf) a Hello World 25 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Nová verze

    Programovací jazyk Hy (Wikipedie) dospěl do verze 1.0.0. Po téměř dvanácti letech vývoje. Jedná se o dialekt programovacího jazyka LISP navržený pro interakci s programovacím jazykem Python.

    Ladislav Hagara | Komentářů: 0
    včera 20:00 | Zajímavý software

    Zen je webový prohlížeč vycházející z Firefoxu. Vývoj probíhá na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 1
    včera 15:11 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 23 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána verze 24.3 aneb čtvrtletní aktualizace open source počítačového planetária Stellarium (Wikipedie, GitHub). Vyzkoušet lze webovou verzi Stellaria na Stellarium Web.

    Ladislav Hagara | Komentářů: 0
    včera 12:11 | Pozvánky

    Ve čtvrtek 3. října se v Red Hat Labu (místnost Q305) na FIT VUT v Brně uskuteční další Fedora Installfest. Od 10 do 16 budou v labu připravení odborníci na Fedoru ze společnosti Red Hat, kteří vám můžou pomoct nejen s instalací, ale taky pomoct s dalšími problémy a dotazy ohledně Fedory. Akce je primárně zaměřená na studenty FIT VUT, ale vítáni jsou i lidé, kteří tuto školu nenavštěvují.

    Ladislav Hagara | Komentářů: 35
    včera 05:22 | Nová verze

    Byla vydána nová verze 9.9 sady aplikací pro SSH komunikaci OpenSSH. Z novinek lze vypíchnout podporu hybridní post-kvantové výměny klíčů založené na FIPS 203 ML-KEM (Module-Lattice Key Enapsulation mechanism) v kombinaci s X25519 ECDH, tj. nový výchozí algoritmus "mlkem768x25519-sha256". Počátkem roku 2025 bude z OpenSSH odstraněna podpora DSA.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Jaderné noviny – 11. 8. 2011: Přesun TCP spojení do jiného procesu

    22. 8. 2011 | Luboš Doležel | Jaderné noviny | 3587×

    Aktuální verze jádra: 3.1-rc1. Citáty týdne: Thomas Gleixner, Linus Torvalds, Valerie Aurora. Mel Gorman vydal MMTests 0.01. Zmocňování se TCP spojení a paraziti - jako dobrá věc.

    Obsah

    Aktuální verze jádra: 3.1-rc1

    link

    Aktuální vývojovou verzí jádra je 3.1-rc1 vydané 7. srpna. Linus k tomu řekl:

    Co stojí za zmínku? To záleží na tom, co vás zajímá. Práce na zpětném zápisu VM? Je to tam. A také tam bylo trochu kontroverze kolem kódu cíle iSCSI. Jsou tam změny kolem síťování, přesun zbytku obecné podpory ACL do vrstvy VFS, zjednodušení starého kódu kolem souborových systémů, který měl často jen podobu nakopírované kostry programu. A zároveň také zrychlování naší práce. A také pročišťování rozhraní správy výkonu.

    Ale není tu nic *obrovského*. Vypadá to jako docela normální vydání, jak jsem už řekl. Ledaže bych na něco zapomněl.

    Všechny podrobnosti lze nalézt v kompletním seznamu změn.

    Stabilní aktualizace: verze 3.0.1 byla vydána 4. srpna s dlouhým seznamem oprav. Verze 2.6.32.44 a 2.6.33.17 vyšly 8. srpna. Greg dává vědět, že údržba jádra 2.6.33 může být zanedlouho ukončena.

    Citáty týdne: Thomas Gleixner, Linus Torvalds, Valerie Aurora

    link

    Je třeba pochopit, že preempt_disable, bh_disable, irq_disable jsou BKL pro aktuální CPU s velice nepatrnou sémantikou, která je velmi blízká původnímu hororu BKL (big kernel lock; velký zámek jádra). Všechny tyto mechanismy ovlivňují jednotlivá CPU a faktem je, že musíme doplnit nějaké anotace, které napomohou pochopitelnosti a v první řadě odladitelnosti. Vedlejším účinkem je to, že to pomůže RT toto vyřešit, což je samozřejmě žádoucí, ale nikoliv hlavním cílem tohoto snažení.

    -- Thomas Gleixner

    Skutečností je, že pro příští začleňovací okno chystám poměrně drsné opatření. Po otevření začleňovacího okna natáhnu strom -next a pokud dostanu něco, co není jen triviální oprava a není to v „stromu -next v momentu otevření začleňovacího okna“, budu takový požadavek na přetažení ignorovat. Protože lidé zjevně nejsou dostatečně opatrní.

    -- Linus Torvalds

    Neměli bychom dělat voodoo. Nebo teda, vůbec mi nebude vadit, pokud budete doma v soukromí mít voskové figurky s mou podobou – je tu ta svoboda vyznání a tak – ale prosím nedělejte to v jádře.

    -- Linus Torvalds

    Kdykoliv mě dostihne frustrace z papírování, tak si prostě představím, že bych měla na práci odhadovat, kolik času trvá vyřešit papírování, a hned se cítím lépe.

    -- Valerie Aurora

    Mel Gorman vydal MMTests 0.01

    link

    Jaderný hacker Mel Gorman vydal testovací sadu pro subsystém správy paměti Linuxu. Pročistil některé skripty, co používá, a učinil je méně specifickými pro konkrétní sady patchů. Zatímco nejsou „v žádném směru komplexní“, mohou být pro jiné lidi užitečné. Také zveřejnil surová data z testů, které nedávno provedl. „Vím, že struktura hlášení vypadá dost surově, ale neměl jsem zájem na tom dělat je hezké. Kvůli tomu, že některé skripty jsou velice staré, jsou kvalita a styl kódování dosti různorodé. Toto může být časem pročištěno, ale mezitím se při čtení skripů pokuste udržet obsah svých žaludků na místě.

    Zmocňování se TCP spojení a paraziti – jako dobrá věc

    link

    Jádro 3.1 bude obsahovat řadu vylepšení systémového volání ptrace() od Tejuna Hea. Tato vylepšení mají usnadnit spolehlivé ladění programů, ale Tejun zjevně není s takhle obyčejnými cíli spokojen. Takže zveřejnil ukázkový program, který předvádí, jak mohou být nové funkce využity k řešení složitých problémů, kterým čelí implementace kontrolního bodu/restartu [checkpoint/restart]: zachycení a obnova stavu síťových spojení. Kód je ve rané fázi vývoje; je smělý a děsivý, ale předvádí, jak může být dosaženo zajímavých věcí.

    Tradiční volání API ptrace() připojuje cílový program ke sledujícímu procesu příkazem PTRACE_ATTACH; tento příkaz přepne cíl do sledovaného stavu a zastaví jej. PTRACE_ATTACH nebylo nikdy dokonalé; změní to obsluhu signálů cílového procesu a nikdy proti cílovému programu nemůže být zcela transparentní. Proto jej Tejun doplnil o nový příkaz PTRACE_SEIZE; PTRACE_SEIZE se připojí k cílovému programu, ale nezastaví jej a ani nezmění jeho obsluhu signálů. Cílový program pak lze zastavit pomocí PTRACE_INTERRUPT, které opět neposílá žádné signály a nemění způsob jejich obsluhy. Toto přináší mechanismus umožňující práci s procesy transparentnějším a méně rušivým způsobem.

    Toto se zdá být užitečné, ale nevypadá to nezbytně jako součást implementace kontrolního bodu/restartu. Nicméně to dokáže významným způsobem pomoci. Jedním z problémů spojených s ukládáním stavu procesu je to, že ne všechen stav je viditelný z uživatelského prostoru. Snaha obejít toto omezení vedla vždy k vytváření kontrolních bodů v jádře nebo vytváření nových rozhraní, která by požadované informace poskytovala; ani jeden z těchto přístupů nebyl idelání. Jenže v mnoha případech je možné získat požadované informace z kontextu cílového procesu; toto je situace, kdy přístup založený na ptrace() může hrát roli.

    Tejun si ve své ukázkové implementaci vzal na starost ukládání a obnovu stavu otevřeného TCP spojení. Proces je zahájen použitím ptrace() pro zmocnění se a zastavení cílového vlákna (vláken); pak už je získání nezbytných informací otázkou spuštění nějakého toho kódu v kontextu daného procesu. Aby to mohl udělat, Tejunův ukázkový program se prohrabe paměťovým prostorem cílového programu a najde nějakou trochu paměti, která má právo ke spuštění; obsah této paměti je uložen a nahrazen jeho „parazitickým“ kódem. Trocha manipulace s registry umožní to, že je cílový proces spuštěn v místě vloženého kódu, které se postará po shromáždění potřebných informací. Jakmile je to hotové, původní kód a registry jsou obnoveny a cílový proces je ve stejném stavu, v jakém byl, než se tohle všechno událo.

    "Parazitický" kód začíná shromážděním základních informací o otevřených spojeních: IP adresy, porty apod. Stav strany příjmu dat každého spojení je uložen 1) překopírováním jakýchkoliv příchozích dat v bufferu za použití volby MSG_PEEKrecvmsg() a 2) získáním sekvenčního čísla dalších čtených dat za pomoci nového povelu SIOCGINSEQioctl(). Na straně odesílání dat musí být sekvenční číslo každého odchozího paketu ve frontě zachyceno spolu se samotnými daty v paketu získáno pomocí dalšího nového páru příkazů ioctl(). Jakmile je toto hotové, je hotové i vytvoření kontrolního bodu síťových spojení.

    Obnovení spojení – dost možná v jiném procesu a na úplně jiném stroji – je trochu zrádnější; představa jádra o spojení musí přesně odpovídat situaci v době vytvoření kontrolního bodu, aniž by byla druhá strana zmatena nebo pocítila jiné problémy. To vyžaduje, aby kód provádějící restart předstíral, že je na druhé straně spojení, dokud nebudou věci synchronizovány. Jádro už poskytuje většinu věcí nutných pro tento úkol: odchozí pakety mohou být zachyceny mechanismem „nf_queue“ a raw socket může být použit pro vložení nových paketů, které vypadají, jako by přicházely od vzdálené strany.

    Takže v moment restartu se začíná jednoduše otevřením nového spojení se vzdálenou stranou. Další příkaz ioctl() (SIOCSOUTSEQ) je použit pro nastavení sekvenčního čísla před odpojením, aby odpovídalo číslu zjištěnému v době vytváření kontrolního bodu. Jakmile je zahájen proces připojování, odchozí paket SYN je odchycen – jelikož vzdálená strana na něj jistě nebude připravena – a SYN/ACK je pak vložen lokálně. Odchozí ACK musí také samozřejmě být zachycen a odhozen. Jakmile je toto hotové, jádro má za to, že má otevřené spojení ke vzdálené straně se sekvenčním číslem odpovídají stavu před vytvořením kontrolního bodu.

    Pak už je to jen otázkou obnovení příchozích dat, která byla nalezena ve frontě v jádře v době vytvoření kontrolního bodu; toho je dosaženo vložením nových paketů, které obsahují tato data, a odchycením následných ACK od síťové vrstvy. Odchozí data mohou na druhou stranu být nahrazeny jednoduchými voláními send(), ale je tu jedna malá zrada. Pakety v odchozí frontě už mohly být odeslány a přijaty vzdálenou stranou. Opětovné odeslání těchto paketů není problém, pokud je velikost těchto paketů zachována. Pokud by systém použil odlišné offsety pro rozdělování odchozích dat do paketů, mohlo by to vzdálenou stranu zmást. Aby se to nestalo, Tejun přidal ještě jedno ioctl() (SIOCFORCEOUTBD), aby zajistil, že pakety odpovídají těm, které byly vytvoření před zahájením vytváření kontrolního bodu.

    Jakmile je odesílací fronta obnovena, spojení je opět v původním stavu. V tento moment může zachycování odchozích paketů přestat.

    Celá tahle věc může vypadat trochu komplexně a křehce, ale Tejun tvrdí, že „ve skutečnosti to funguje dosti spolehlivě“. Navzdory tomu je spousta detailů, které byly ignorovány; jde konec konců jen o důkaz toho, že je to možné. Nemá jít o kompletní řešení problému vytváření kontrolních bodů a obnovy síťových spojení; myšlenkou je předvést, že to samozřejmě je možné. Pokud práce na kontrolních bodech/restartu v uživatelském prostoru pokročí, může někdy tento přístup k věci použít. Mezitím tu ale máme zajímavý hack předvádějící, čeho může být dosaženo s novými příkazy ptrace(). Ti, kteří chtějí více podrobností o fungování celé věci, je mohou najít v souboru README v repozitáři se zdrojovým kódem příkladu.

           

    Hodnocení: 88 %

            š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ář

    Fluttershy, yay! avatar 22.8.2011 10:30 Fluttershy, yay! | skóre: 92 | blog:
    Rozbalit Rozbalit vše Re: Jaderné noviny – 11. 8. 2011: Přesun TCP spojení do jiného procesu

    Neměli bychom dělat voodoo. Nebo teda, vůbec mi nebude vadit, pokud budete doma v soukromí mít voskové figurky s mou podobou – je tu ta svoboda vyznání a tak – ale prosím nedělejte to v jádře.

    -- Linus Torvalds

    Weboví vývojáři potřebují Linuse.

    🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
    11.9.2011 15:41 Vladimír Čunát | skóre: 19
    Rozbalit Rozbalit vše Re: Jaderné noviny – 11. 8. 2011: Přesun TCP spojení do jiného procesu
    předposlední odkaz je chybný
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.