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 04:55 | Komunita

    Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 150. Aktuální verze Firefoxu je 152. V březnu bylo oznámeno, že od září přejde Chrome na dvoutýdenní cyklus vydávání verzí. To by znamenalo, že Chrome v číslování verzí Firefox brzy přeskočí. Vývojáři Firefoxu proto také od září přecházejí na dvoutýdenní cyklus vydávání verzí. :-)

    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Zajímavý software

    Microsoft Comic Chat (Wikipedie), tj. grafický IRC klient z devadesátek, který převáděl konverzace na IRC do podoby komiksových panelů, a který zpopularizoval font Comic Sans, je dnešním dnem open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    včera 19:55 | Nová verze

    Byla vydána (𝕏) nová verze 26.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 26.7 je Xenial Xenops. Přehled novinek v příspěvku na fóru.

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

    Na Seznam nepovolených internetových her (Wikipedie) se k 13. 7. 2026 dostala predikční platforma Polymarket.

    Ladislav Hagara | Komentářů: 3
    včera 14:22 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 167 (pdf) a Hello World 30 (pdf).

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

    Byla vydána nová verze 3.22.0 grafického vývojového prostředí a platformy Gambas (Wikipedie) založené na interpretru programovacího jazyka Basic s rozšířením o objektově orientované programování. Přehled novinek v poznámkách k vydání. Zdrojové kódy jsou k dispozici na GitLabu.

    Ladislav Hagara | Komentářů: 0
    15.7. 20:22 | Komunita

    FreeBSD odstranilo poslední GPL kód ze základního systému. Konkrétně dpv, libdpv, libfigpar a dialog. Instalátor před čtyřmi lety přešel z dialogu na bsddialog.

    Ladislav Hagara | Komentářů: 2
    15.7. 15:22 | IT novinky

    Sociální síti 𝕏 (dříve Twitter) má dnes 20 let. Pro veřejnost byla zpřístupněna 15. července 2006.

    Ladislav Hagara | Komentářů: 2
    15.7. 14:22 | Zajímavý software

    Insula Faktury je open source generátor faktur, který běží přímo ve webovém prohlížeči. Žádná registrace, žádné sledování, žádné omezení. Zdrojové kódy jsou k dispozici na Codebergu.

    Ladislav Hagara | Komentářů: 18
    15.7. 13:22 | Komunita

    První Mobile Linux Hackday v Plzni, tj. komunitní setkání věnované Linuxu na mobilních zařízeních, proběhne 24. července od 10:00. Akce je otevřená všem zájemcům – od zvědavců po zkušené vývojáře. Dopoledne proběhnou přednášky Davida Heidelberga a Petra Hodiny o aktuálním stavu mobilního Linuxu: proč vůbec chtít tučňáka v kapse, jaké telefony jsou dnes dobře podporované a co taková podpora obnáší. Po obědě se zaměříme na konkrétní

    … více »
    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 2147 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Jaderné noviny – 20. 3. 2014: Volatilní rozsahy paměti

    9. 4. 2014 | Luboš Doležel | Jaderné noviny | 3240×

    Akuální verze jádra: 3.14-rc7. Citáty týdne: Alan Cox, Andrew Morton, David Miller. Volatilní rozsahy paměti a MADV_FREE.

    Obsah

    Akuální verze jádra: 3.14-rc7

    link

    Aktuální vývojová verze jádra je 3.14-rc7 vydaná 16. března. Linus už z toho má lepší pocit. Jediný týden a jaké změny přinese. Před týdnem, když jsem vytvářel rc6, jsem neměl dobrou náladu: ve vydání byla spousta změn a vnímal jsem to tak, že rc8 a možná i rc9 by byly reálnou možností. Teď uběhl týden a rc7 vypadá mnohem lépe. Aktuálně říká, že může jít o poslední -rc ve verzi 3.14.

    Stabilní aktualizace: řadu 3.12 nyní spravuje Jiří Slabý; jeho první vydání 3.12.14 vyšlo 14. března.

    Citáty týdne: Alan Cox, Andrew Morton, David Miller

    link

    Na bezpečnosti mi záleží, měli bychom práci odvádět pořádně. Máme tu další velký skok v nezbytnosti zabezpečení, který bude přinejmenší stejně velký jako skok mezi internetem typu „univerzita, všichni jsou hodní“ a internetem dneška.

    -- Alan Cox

    Ano, je to tak trochu hack, ale je to jednoduché a přímé a explicitní a zjevné. Škodu páchá nenápadná hackovitost.

    -- Andrew Morton

    Obvykle, když někdo říká „nemůžu“, tak mi to spíš zní jako "Rozhodl jsem se přestat snažit přemýšlet o tom, jak to vyřešit."

    -- David Miller

    Volatilní rozsahy paměti a MADV_FREE

    link

    Rozhraní „smrskávače“ [shrinker] v jádře umožňuje subsystému pro správu paměti informovat ostatní subsystémy o tom, že se paměti nedostává a měla by být nějaká paměť uvolněna, pokud je to jen možné. Objevily se různé pokusy o to přidat podobný mechanismus, který by umožnil jádru požádat procesy v uživatelském prostoru, aby pročistily paměť, ale všechny narazily kvůli známým problémům se složitostí a obecnou obtížností začleňování změn ve správě paměti. To ale nezabránilo vývojářům v tom, aby se o to pokoušeli; nedávno byly zaslány dva nové patche podobného ražení.

    Oba tyto patche implementují variaci na téma zvané volatilní rozsahy paměti. Tyto rozsahy představují oblasti v adresním prostoru procesu, které obsahují data, jež je možné v případě nutnosti regenerovat. V případě, že se jádru nebude dostávat paměti, tak si může vzít stránky z volatilního rozsahu, a to s jistotou, že se z toho proces používající danou paměť zotaví, třebaže se ztrátou výkonu. Dokud je ale paměti dostatek, tak nebudou volatilní rozsahy jádrem odebírány a data tam cachovaná mohou být volně používána aplikací.

    Většina práce na volatilních rozsazích je motivovaná snahou o vytvoření náhrady pro mechanismus ashmem z Androidu, který je s hlavní částí subsystému pro správu paměti lépe integrován. Pro tuto funkčnost se ale najde i jiné využití.

    Volatilní rozsahy

    link

    Během uplynulých let se objevila spousta verzí patchů pro volatilní rozsahy. Někdy byly implementovány pomocí systémového volání posix_fadvise(); jindy byly dodány do fallocate(). Další verze je zase přidávaly jako dodatečnou funkci do madvise(). 11. verze patche pro volatilní rozsahy se ale vydává úplně jiným směrem. Namísto toho přidává nové systémové volání:

    int vrange(void *start, size_t length, int mode, int *purged);
    

    V této podobě vrange() pracuje s length bajty paměti začínajícími na adrese start. Pokud je režim mode nastaven na VRANGE_VOLATILE, tak tento rozsah paměti bude označen jako volatilní. Pokud je naopak režim VRANGE_NONVOLATILE, pak je označení jako volatilní odstraněno. V tomto případě ale některé nebo všechny stránky dříve prohlášené za volatilní mohly být odebrány jádrem; v takovém případě je *purged nastaveno na nenulovou hodnotu na znamení toho, že předchozí obsah paměti už není k dispozici. Je-li *purged nulové, tak aplikace ví, že obsah paměti není ztracen.

    Proces může nadále přistupovat k paměti ve volatilním rozsahu. Pokud se pokusí přistoupit ke stránce, která byla odebrána jádrem, tak dostane signál SIGBUS na znamení toho, že stránka je pryč. Proto programy, které jsou na přijetí tohoto signálu připravené, mohou volatilní rozsahy používat bez potřeby volat vrange() před přistoupením k paměti.

    Tato verze patche se od svých předchůdců liší dalším významným způsobem: fungují jen s anonymními stránkami, zatímco předchozí verze fungovaly pouze se systémem souborů tmpfs. Práce s anonymními stránkami pomáhá patch zjednodušit, jak je to jen možné, aby se zvětšila šance, že bude revidován a nakonec začleněn, ale bere si to svou daň: nemožnost pracovat s tmpfs znamená, že volatilní stránky nebudou vhodnou náhradou z ashmem. V plánu je podporovat případ, kdy se za pamětí skrývá soubor (což kód zesložiťuje), ale až jakmile bude panovat shoda ohledně zákadního patche.

    Interně pracuje vrange() na úrovni virtuální oblasti paměti (virtual memory area, VMA). Všechny stránky v rámci VMA buď jsou volatilní, anebo ne; VMA mohou podle potřeby být při voláních vrange() slučovány nebo rozdělovány. Díky tomu by vrange() mělo být rozumně rychlé, jelikož není nutné procházet každou stránku v rozsahu.

    MADV_FREE

    link

    Jiný způsob řešení podobného problému můžeme spatřit v patchi MADV_FREE. Tento patch přidává nový povel do stávajícího volání madvise():

    int madvise(void *addr, size_t length, int advice);
    

    Podobně jako vrange() také madvise() pracuje s rozsahem paměti určeným volajícím; to, co se dělá, je rozlišeno argumentem advice. Volající může použít MADV_SEQUENTIAL, aby řekl jádru, že ke stránkám v tomto rozsahu bude přistupováno sekvenčně, nebo MADV_RANDOM, aby řekl jádru pravý opak. Volání MADV_DONTNEED způsobí, že jádro okamžitě převezme určené stránky a zahodí jejich obsah.

    Nová operace MADV_FREE se podobá MADV_DONTNEED, ale je tu jeden důležitý rozdíl. Namísto okamžitého odebrání stránek je toto volání označí k „pozdějšímu uvolnění“ někdy v budoucnu. Pokud by jádru začala docházet paměť, pak právě takto označené stránky by byly jádrem odebírány jako první; pokud se aplikace pokusí takovou stránku použít po jejím odebrání, tak jádro poskytne novou stránku plnou nul. Pokud je ale paměti dostatek, tak zůstanou stránky označené pomocí MADV_FREE na místě; další přístup k těmto stránkám odstraní příznak přidaný přes MADV_FREE a data budou ve stavu jako před voláním madvise().

    Aplikace nemá jak zjistit, zda nebyl obsah stránek odstraněn, aniž by prozkoumala obsažená data. Proto by program mohl implementovat něco jako volatilní rozsahy tak, že si na začátek každé stránky před použitím MADV_FREE umístí strukturu, jež dovede poznat, a před přístupem k dalším datům by si ověřil, že je struktura stále na svém místě. To se ale nezdá být zamýšleným způsobem používání.

    MADV_FREE se zdá být zaměřené na implementace alokátorů paměti v uživatelském prostoru. Kdykoliv aplikace uvolní sadu stránek, tak alokátor použije MADV_FREE, aby jádru oznámil, že na obsahu stránek už nezáleží. Pokud by aplikace ve stejném rozsahu rychle alokovala více paměti, tak se použijí stejné stránky, tudíž se vyhne režii uvolňování stránek a nulování nových. Ve zkratce je MADV_FREE způsobem, jak říci "Na datech v tomto rozsahu mi nezálěží, ale brzo možná tento rozsah opětovně použiji."

    Stojí za zmínku, že MADV_FREE je již podporován na jádrech BSD, takže na rozdíl od vrange() by nešlo o funkci specifickou pro Linux. Pochopitelně by to znamenalo zlepšení přenositelnosti programů, které tuto funkci na BSD systémech používají.

    V době psaní tohoto textu se žádnému z patchů nedostalo příliš reakcí. Ke skutečnému revidování pravděpodobně dojde až na letošním Linuxovém sumitu o systémech souborů a správě paměti, který začíná 24. března.

           

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

    10.4.2014 14:01 Honz
    Rozbalit Rozbalit vše Re: Jaderné noviny – 20. 3. 2014: Volatilní rozsahy paměti
    Termín Ashmem mi připmíná Cimrmanovu báseň s tajemným názvem Ažmimá...
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.