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 12:33 | Zajímavý projekt

    Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.

    Ladislav Hagara | Komentářů: 0
    dnes 12:11 | Pozvánky

    Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.

    Ladislav Hagara | Komentářů: 0
    včera 14:22 | IT novinky

    Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.

    Ladislav Hagara | Komentářů: 23
    3.5. 22:33 | Nová verze

    Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.

    Ladislav Hagara | Komentářů: 2
    2.5. 22:22 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).

    Ladislav Hagara | Komentářů: 0
    2.5. 19:11 | IT novinky

    Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.

    Ladislav Hagara | Komentářů: 5
    2.5. 11:22 | Zajímavý projekt

    Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.

    Ladislav Hagara | Komentářů: 2
    2.5. 09:11 | Bezpečnostní upozornění

    Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.

    Ladislav Hagara | Komentářů: 2
    1.5. 20:00 | Komunita

    V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.

    Ladislav Hagara | Komentářů: 3
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (8%)
     (21%)
     (4%)
     (2%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 524 hlasů
     Komentářů: 22, poslední dnes 10:06
    Rozcestník

    Jaderné noviny – 31. 3. 2010

    28. 4. 2010 | Jirka Bourek | Jaderné noviny | 2029×

    Aktuální verze jádra: 2.6.34-rc3. Citáty týdne: Linus Torvalds, Andrew Morton, Andy Lutomirski. Směrem k rozumnějšímu execve(). Koncovka BKL. Zakázání IRQF_DISABLED.

    Obsah

    Aktuální verze jádra: 2.6.34-rc3

    link

    Současné vývojové jádro je 2.6.34-rc3 vydané 30. března. Každopádně máme ze zaneřáděného -rc2 -rc3, které by mělo být v mnohem lepším stavu. Regrese opraveny a zkrácený log je dost krátký na to, aby ho stálo za to posílat do lkml. Testery, kteří používají SELinux a ext3, bude zajímat následující oznámení; regrese v předchozích jádrech mohla na takových systémech zanechat poškozené bezpečnostní značky [security labels]. Zkrácený changelog je v oznámení, všechny detaily můžete nalézt v kompletním changelogu.

    Během minulého týdne nevyšly žádné stabilní aktualizace. Revidují se ale ne méně než čtyři aktualizace: 2.6.27.46 (45 patchů), 2.6.31.13 (89 patchů), 2.6.32.11 (116 patchů), 2.6.33.2 (156 patchů). Vydání všech těchto aktualizací lze očekávat 1. dubna nebo později.

    Citáty týdne: Linus Torvalds, Andrew Morton, Andy Lutomirski

    link

    Ok, v -rc2 byl bordel, o tom se nikdo nepře. Jsem moc velký měkota na to, abych brzdil práci jiných lidí, takže moje -rc1 s danou hranicí nefungovalo tak, jak jsem chtěl. Ale příště! A tentokrát opravdu.

    -- Linus Torvalds

    Co se stane, když do téhle věci zapíše 10000 procesů zároveň? Je to jenom pro roota, takže hádám, že odpověď je něco jako „root přijde o práci“.

    -- Andrew Morton

    Podívejte se na výchozí instalaci Fedory. Pokud pochopíte bezpečnostní dopady zakázání setuid, dostanete sušenku. Jestli přijdete na to, u kterých programů se změní bezpečnostní značka, když jsou execnuty, dostanete další sušenku.

    -- Andy Lutomirski

    Směrem k rozumnějšímu execve()

    link

    napsal Jonathan Corbet, 30. února

    Současné linuxové systémy umožňují procesům mnoha způsoby nastavit své prostředí. Z různých důvodů vývojáři často chtějí ještě větší flexibilitu; konkrétně by většinou ve jménu bezpečnosti rádi běžícímu procesu odebrali některé možnosti (přístup k souborovému systému, přístup k síti, kvalifikace). Problém je v tom, že takové změny mohou ve skutečnosti bezpečnost zhoršit; jak bylo mnohokrát k vidění, privilegované programy lze přinutit k tomu, aby dělaly nešťastné věci, když běží v neočekávaném prostředí.

    Jak poznamenává Andy Lutomirski, jedna možná reakce na tento problém je zakázat i sémantiku setuid. Systémové volání execve() má však mnoho možností, jak změnit práva procesu, aniž by to zahrnovalo setuid programy; to platí obzvláště v přítomnosti bezpečnostních modulů. Andy tedy navrhl jiný přístup: Zbavit se execve(). Za tímto účelem navrhuje novou volbu pro prctl() (PR_RESTRICT_ME), kterou by bylo možné přidat restrikce k běžícímu procesu; první by byla, že tento proces nesmí volat execve(). Zakázání execve() by bylo povinné předtím, než by bylo možné přidat další omezení.

    Program běžící v omezeném režimu by nicméně mohl i tak chtít spustit jiné programy; software v Linuxu často takovým způsobem pracuje. Aby této potřebě vyhověl, přidal Andy nové systémové volání pojmenované execve_nosecurity(). Tato varianta execve() spustí zadaný program, ale nebude přitom dělat naprosto žádné změny související s bezpečností. Takže žádné setuid, žádné změny SELinuxového typu atd. Konečný výsledek tohoto volání se funkcionalitou bude podobat jednoduchému namapování do adresového prostoru volajícího a přímému spuštění. S execve_nosecurity() není možné zvýšit práva spuštěním jiného programu, takže by odstranění kvalifikací běžícího procesu mělo být bezpečnější.

    Tento patch by měl řešit mnoho obav, které vývojáři měli z omezování privilegií. Těžko to ale říci s jistotou, protože zatím bylo jenom málo reakcí.

    Koncovka BKL

    link

    napsal Jonathan Corbet, 30. února

    Odstranění velkého jaderného zámku (BKL, big kernel lock) je již mnoho let jedním z vývojových cílů jádra. BKL vytváří problémy se škálovatelností a poskytuje opravdu podivnou sémantiku zamykání; obojího by bylo hezké se zbavit. Skutečné odstranění byl nicméně dlouhodobý proces; je to nudná práce, která vyžaduje poměrně hluboké znalosti upravovaného kódu. Relativně málo lidí se do této práce chce pustit, takže BKL přežil mnohem déle, než by se komu mohlo líbit.

    Jeden vývojář, který odstranění BKL věnoval významné množství času, je Arnd Bergmann; Arnd právě zaslal sérii patchů, která slibuje úplné – téměř – odstranění BKL.

    Za tímto účelem bylo provedeno mnoho významných změn. Blokový subsystém a subsystém tty získávají mutexy na úrovni subsystému, které nahrazují používání BKL; to je relativně složitá práce, protože sémantika zamykání poskytovaná mutexem je trochu jiná. Velká snaha byla věnována auditu a dokumentaci ioctl()llseek(), které BKL stále potřebují; žádná jiná funkce ze struktury file_operations již BKL nepotřebuje. Kód, který stále vyžaduje BKL, je explicitně označen v konfiguračním systému jádra, což umožňuje vytvořit jádra bez BKL. Tato sada patchů také obsahuje významnou sérii od Jana Bluncka, který odstranil BKL z velké části vrstvy VFS.

    Co zbývá, jsou z větší části nepoužívané moduly s ovladači. Arnd použil výraz „z větší části nepoužívané“ velice zeširoka – na BKL například stále závisí subsystém USB. BKL stále používá 148 modulů, ovladače z toho tvoří většinu. To může vypadat jako mnoho, ale je to obrovský krok správným směrem. Mnoho z nás možná bude mít jádra bez BKL dříve, než jsme si mysleli.

    Zakázání IRQF_DISABLED

    link

    napsal Jonathan (io, parametry), 30. února

    Obsluhy přerušení běží asynchronně v reakci na signál od hardwaru. Vzhledem k tomu, že vyruší CPU z toho, co dělalo předtím, očekává se od nich, že budou velmi rychlé; ve většině případů by měly hardwaru jenom říci, aby byl zticha, připravit práci, která bude následovat, a zmizet z cesty. Historicky to nebylo tak jednoduché, takže v počátcích Linuxu se obsluhy dělily na „rychlé“ a „pomalé“. A nyní se zdá, že toto dělení by mohlo již v 2.6.35 zmizet.

    Hlavní rozdíl mezi rychlou a pomalou obsluhou spočívá v následujícím: Rychlé obsluhy běží se zakázáním ostatních obsluh přerušení, zatímco v pomalých je obsluha jiných přerušení povolena. Pomalou obsluhu tedy lze přerušit jinou obsluhou, kdežto rychlou ne. V ideálním světě by pomalé obsluhy neexistovaly; svou práci by odvedly rychle a nezabíraly by si CPU, takže by nebyl důvod je přerušovat. V reálném světě, ve kterém existuje problematický hardware, pomalé procesory a vývojáři různících se schopností, jsou ale pomalé obsluhy fakt, se kterým je nutné počítat. Povaha některého hardwaru (například staré IDE řadiče) neumožňuje vyhnout se spoustě práce přímo v obsluze přerušení. Zároveň s tím jiné typy zařízení musí mít opravdu rychlé reakce na přerušení, aby se předešlo ztrátě dat; klasický příklad jsou mnohé sériové porty, které jsou schopny do bufferu uložit přesně jeden znak. Pomalé práci s IDE nesmělo být dovoleno zpozdit zpracovávání sériové linky; obsluha přerušení od IDE tedy musela být pomalá.

    Postupem času se však situace změnila. Hardware je chytřejší a lépe zvládá zpoždění při reakci na přerušení. CPU se zrychlila a tak i relativně pomalý hardware dokáže odvést spoustu práce rychle. Potřeby realtime stromu (a dalších pracovních zátěží citlivých na latence) motivovaly přepracování těch nejhorších škodičů, co se doby obsluhy týče. A vylepšení jaderných mechanismů pro odloženou práci zjednodušilo přesun práce pryč z obsluhy. Potřeba dělení obsluh přerušení na dva typy se tedy ztrácí.

    Současně s tím narůstají problémy s dichotomií pomalá/rychlá. Neexistuje způsob, jak se zakázanými přerušeními obsloužit přerušení na sdílených linkách (k nalezení na jakémkoliv systému s PCI sběrnicí), protože jakákoliv jiná obsluha pro zařízení na stejné lince by mohla přerušení povolit. Umožnit obsluhám přerušení, aby se přerušovaly navzájem, vede k horšímu chování při práci s cache a navíc nelze předvídat, za jakou dobu se obsluha dokončí. Aktuální diskuzi nicméně zahájil tento patch od Andiho Kleena, který chtěl řešit další problém: Hluboce vnořené obsluhy přerušení mohou způsobit přetečení zásobníku přerušení [interrupt stack] v CPU – což je situace, od které nelze očekávat dobré věci.

    Andiho řešení je monitorovat zásobník přerušení v jaderném kódu pro obsluhu přerušení. Když bude zásobník více než z poloviny zaplněn, vnitřní kód již nepovolí přerušení před voláním pomalých obsluh. Efektivně se tedy bude k pomalým obsluhám chovat tak, jako by byly rychlé, dokud bude v daném zásobníku málo místa. Patch řeší problém, který již byl pozorován, ale narazil na nějaké potíže; konkrétně Thomas Gleixner nijak neváhal a dal najevo svůj odpor. Autor článku se zde pokusí jeho argumenty popsat s použitím slušnějších výrazů; podle Thomase patch implementuje řešení, které je přinejlepším nespolehlivé, které hrozí vytvořením významných latencí v systému a které ignoruje skutečný problém.

    Skutečný problém je podle Tomhase fakt, že pomalé obsluhy vůbec existují. Byl by radši, kdyby všechny obsluhy přerušení běžely se zakázanými přerušeními a svou práci odváděly rychle. Jakákoliv delší obsluha by měla být přemístěna do vlastního vlákna. Shrnuto:

    Jaký je tedy důvod spouštět dobře napsané (krátké) obsluhy přerušení s povolenými přerušeními? Žádný. Jenom se kvůli tomu musí řešit sračky jako bezdůvodně přetékající zásobníky.

    Linus původně tento nápad poslal k čertu s tím, že svět, ve kterém budou jenom rychlé obsluhy, není reálný:

    Takže, Thomasi, nemáš pravdu. Nemůžeme opravit všechny obsluhy přerušení, aby byly opravdu rychlé, a NESMÍME je spouštět se zakázáním ostatních přerušení, pokud rychlé nejsou – protože pak přerušení ztrácí smysl.

    Je nicméně třeba podotknout, že tento postoj se časem posunul. Linus (a další) vyjádřil mnoho obav z toho, když budou všechny obsluhy běžet se zakázaným přerušením:

    • Obsluhy u některých zařízení prostě musí odvést spoustu práce a není snadné to změnit. Embedded systémy například mívají podivný hardware a pomalé procesory.

    • Některé obsluhy nebudou fungovat správně, když nebude obsluha přerušení povolena. V minulosti některé ovladače například čekaly, až uplyne nějaký čas (podle změn v proměnné jiffies). Tato podivná praktika okamžitě selže, když se zakáží přerušení: Přerušení časovače bude blokováno a jiffies se nebude měnit.

    • Některý hardware má prostě striktní požadavky na latenci a nemůže čekat, až jiná obsluha přerušení dodělá svoji práci.

    Když se na všechny tyto obavy podíváme, můžeme si položit otázku, jestli systém, který zakazuje přerušení u všech obsluh, vůbec může fungovat dobře. Je tedy vhodné upozornit na jednu věc: jakýkoliv systém, na kterém je povolený kontrolor zamykání lockdep, má takové obsluhy přerušení již několik let. Mnoho vývojářů a testerů provozuje jádra s povoleným lockdep a taková jádra jsou také k dispozici i v některých dobrodružnějších distribucích (například Rawhide). Pro tento způsob práce tedy již máme poměrně dobré pokrytí testováním.

    Další věc, která se během několika minulých let udála, je začlenění kódu pro dynamický tik, který zakazuje tikání hodin, když je systém nečinný. Tikání hodin tedy není pro obsluhy přerušení povoleno, takže jakákoliv obsluha přerušení, která očekává, že se jiffies změní, dříve či později spadne do nedůstojné nekonečné smyčky. Uživatelé si takového chování obyčejně všimnou, takže většina ovladačů, která se takto chovala, je již dlouho opravena.

    A nakonec vývojáři v realtime stromě strávili spoustu času vyhledáváním zdrojů latence; nadměrné množství času stráveného obsluhou přerušení je jeden z nejhorších, takže ovladače, které řídí zajímavý hardware, byly většinou opraveny. Přidání obsluhy přerušení ve vláknech opravování ovladačů zjednodušilo; většinu kódu lze jednoduše přesunout do samostatného vlákna bez jakékoliv změny.

    Vzhledem k tomu všemu si Ingo Molnár byl dostatečně jist, aby řekl:

    Jsem si docela jist, vzhledem k tomu, že jsem si s těmito aspekty hrál z mnoha úhlů pohledu, že zakázání irq ve všech ovladačích by již dnes mělo fungovat bez problémů.

    Poté, co toto slyšel od hlavních vývojářů, a po vlastním výzkumu nakonec Linus přestal tomuto návrhu oponovat a začal mluvit o tom, jak to implementovat. Thomas poté zaslal patch s implementací. S tímto patchem se z IRQF_DISABLED stává no-op; očekává se, že bude úplně odstraněn v 2.6.36.

    Ohledně této změny stále panují obavy, obzvláště s ohledem na pomalý hardware v embedded systémech. V některých z těchto případů lze problém vyřešit obsluhou přerušení ve vláknech, vývojáři se ale obávají, že obsluhy ve vláknech k reakci na přerušení přidávají příliš velkou latenci. Zlepšení této situace je úkol do budoucna; do té doby mohou přerušení obsluhy povolit samy. K tomuto účelu je preferována funkce local_irq_enable_in_hardirq(); používána je například v IDE vrstvě.

    Vzhledem k tomu, že všechny technické překážky byly podle všeho překonány, je tu slušná šance, že si patch najde cestu do jádra v začleňovacím okně 2.6.35.

           

    Hodnocení: 100 %

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

    28.4.2010 07:47 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše kontrolor zamykání
    s/kontrolor/řadič/
    28.4.2010 12:57 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: kontrolor zamykání
    Nesouhlas. AFAIK lockdep zamykání neřídí, lockdep zamykání kontroluje, jestli je v pořádku
    Quando omni flunkus moritati
    28.4.2010 21:19 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: kontrolor zamykání

    Máte pravdu, tři čtvrtě na osm je asi ne mně moc brzy.

    Možná by se hodil „hlídač“.

    28.4.2010 21:21 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: kontrolor zamykání
    A půl desatý taky. Dnes už raději nebudu nic psát.
    28.4.2010 20:22 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: kontrolor zamykání
    Btw. když už máš pocit, že je potřeba článek nějak opravit, možná bys měl investovat tu trochu času a podívat se do originálu, jestli nenavrhuješ úplnou blbost.
    Quando omni flunkus moritati
    13.12.2021 08:23 geebranz
    Rozbalit Rozbalit vše Re: Jaderné noviny – 31. 3. 2010
    Very detailed. Thanks!

    smallbusinessloansriversideca.com

    Založit nové vláknoNahoru

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