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 15:22 | Nová verze

    Správce sbírky fotografií digiKam byl vydán ve verzi 8.8.0. Jedná se o převážně opravné vydání provázené aktualizacemi knihoven. Novinky zahrnují implicitní použití systémového barevného profilu monitoru, import/export hierarchie štítků, editační nástroj rozostření aj.

    |🇵🇸 | Komentářů: 0
    17.10. 13:22 | IT novinky

    Steve Jobs a superpočítač Cray-1 budou vyobrazeny na pamětních jednodolarových mincích vyražených v příštím roce v rámci série Americká inovace. Série má 57 mincí, tj. 57 inovací. Poslední 4 mince budou vyraženy v roce 2032.

    Ladislav Hagara | Komentářů: 11
    17.10. 12:22 | Pozvánky

    Byl zveřejněn průběžně aktualizovaný program konference OpenAlt 2025 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Konference proběhne o víkendu 1. a 2. listopadu v prostorách FIT VUT v Brně. Vstup je zdarma.

    Ladislav Hagara | Komentářů: 0
    17.10. 12:00 | IT novinky

    Senát včera opětovně nepřijal návrh ústavního zákona, který měl do Listiny základních práv a svobod zakotvit právo občanů platit v hotovosti nebo být off-line. Návrh předložila skupina senátorů již v roce 2023. Senát dnes návrh neschválil, ale ani nezamítl. Pokud by ho přijal, dostala by ho k projednání Sněmovna a vyjádřila by se k němu vláda.

    Ladislav Hagara | Komentářů: 18
    16.10. 23:55 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 13.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 0
    16.10. 14:22 | Bezpečnostní upozornění

    Společnost Eclypsium se na svém blogu rozepsala o bezpečnostním problému počítačů Framework. Jedná se o zranitelnost v UEFI umožňující útočníkům obejít Secure Boot.

    Ladislav Hagara | Komentářů: 1
    16.10. 02:33 | Nová verze

    Editor kódů Zed (Wikipedie) po macOS a Linuxu s verzí 0.208.4běží také ve Windows.

    Ladislav Hagara | Komentářů: 8
    15.10. 17:44 | IT novinky

    Apple dnes představil 14palcový MacBook Pro, iPad Pro a Apple Vision Pro s novým čipem M5.

    Ladislav Hagara | Komentářů: 38
    15.10. 13:55 | Nová verze

    Debian pro mobilní zařízení Mobian (Wikipedie) byl vydán ve verzi 13 Trixie. Nová stabilní verze je k dispozici pro PINE64 PinePhone, PinePhone Pro a PineTab, Purism Librem 5, Google Pixel 3a a 3a XL, OnePlus 6 a 6T a Xiaomi Pocophone F1.

    Ladislav Hagara | Komentářů: 2
    15.10. 13:11 | IT novinky

    Operátor O2 představil tarif Datamanie 1200 GB . Nový tarif přináší 1200 GB dat s neomezenou 5G rychlostí, a také možnost neomezeného volání do všech sítí za 15 Kč na den. Při roční variantě předplatného zákazníci získají po provedení jednorázové platby celou porci dat najednou a mohou je bezstarostně čerpat kdykoli během roku. Do 13. listopadu jej O2 nabízí za zvýhodněných 2 988 Kč. Při průměrné spotřebě tak 100 GB dat vychází na 249 Kč měsíčně.

    Ladislav Hagara | Komentářů: 16
    Jaké řešení používáte k vývoji / práci?
     (37%)
     (46%)
     (21%)
     (21%)
     (23%)
     (18%)
     (21%)
     (18%)
     (19%)
    Celkem 243 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Dotaz: staticka vs dynamicka alokace pameti

    26.6.2010 21:57 ext3fs
    staticka vs dynamicka alokace pameti
    Přečteno: 2770×
    Ahoj,

    chtel bych se zeptat zkusenejsich na rozdil mezi statickou a dynamickou alokaci pameti (v jazyce C, ale otazka je spis globalni) z hlediska bezpecnosti beziciho procesu.

    Pominme nyni problemy s hlidanim (a osetrenim) prace s dynamickou pameti. Nyni mi jde konkretne o pripad, kdy dochazi systemu kriticky pamet a v tom chce program alokovat dalsi. Program pamet nedostane tak muze:

    a/ spadnou, b/ je to nejak osetreno, ale bez pameti stejne nemuze pokracovat tak se ukonci, c/ stejne jako za b/ stim ze ukoncovani nemusi kvuli nedostatku pameti dopadnou dobre.

    Davate prednost dynamicke alokaci nebo staticke? Urcite to je pripad od pripadu. Minimalne je statiska pamet daleko rychlejsi (pokud se pouziva casto...odpada malloc/free).

    Je mozne brat statisky pridelenou pamet v urcitych stavech systemu (malo pameti) jako bezpesnejsi reseni? Chapu, ze pokud neni pamet, tak system muze reagovat jakkoli...

    Odpovědi

    26.6.2010 22:58 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Zásadní problém statických proměnných je v tom, že velikost zásobníku je omezená a v některých případech může být to omezení dost zásadní. Typicky programátor představu, že na zásobníku je místa dost, přehodnotí v okamžiku, kdy zkusí napsat první multithreadovou aplikaci.
    27.6.2010 09:42 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Váš dotaz zavání tím, že se pokoušíte řešit špatný problém (nebo správný problém špatným nástrojem).

    Statická alokace se k ošetření nedostatku paměti používá jen velmi vyjímečně, pak je ale kladen důraz na to, aby tato část programu byla co nejmenší a měla co nejmenší potřebu práce s pamětí.

    Obvyklejší řešení je prostě nechat program ukončit (s nějakou hláškou), nebo nechat program čekat, až paměť bude. Pokud je v OS programů více, tak se obvykle nastavují kvóty.

    Jinak má statická alokace blahodárný účinek na výkon, často se používá model prealokace velkého kusu paměti a jeho interní rozparcelování v programu namísto alokace spousta malých kousků. Teoreticky byste tento model mohl využít pro zajištění dost paměti např. pro ten ukončovací kód.
    In Ada the typical infinite loop would normally be terminated by detonation.
    27.6.2010 13:19 ext3fs
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Pisu ted malou aplikaci pro sledovani procesu. Jedna z funkci je sledovani co se stalo/deje prave v pripade kdy system z nejakeho duvou zacne "havarovat" (malo pameti, vysoky load, zasekly proces co bere veskere CPU,atd..). V nekterych pripadech (coz se mi nekolikrat stalo) system zacne strilet procesy a nez na to clovek prijde je system v nefunkcnim stavu a v logu ani zminka. Uz se mi stalo, ze jsem prisel k serveru RHEL (x86_64, 4G RAM, 16G swap) kde byly odstreleny vsechny procesy krom initu, udev, a par systemovych demonu. /var/log/* naprosto bez stop nejake priciny. Napadlo mne zkusit si napsat nejake "hlidatko" procesu / systemu, ale prave resim jak zajistit aby tetno proces bezel co nejdele v pripade nouze. Jedna moznost je pohrat si s /proc/PID/oom_adj a pak se postarat o maximalni pametovou hospodarnost. Proto jsem se ptal na tu statickou alokaci.
    27.6.2010 13:53 __dark__
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Tak si alokuj 16MB RAM pri startu tvoji aplikace a používej jenom tuto paměť (vlastní memory management). Podle mě to není problém napsat, otázka je, co od té tvoji aplikace očekáváš, a které další knihovny budeš používat.
    27.6.2010 22:00 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti

    Pokud jádro zabilo syslog, tak ve /var/log samozřejmě nic nebude. Musíte se podívat do protokolu jádra (dmesg). Ale i ten je kruhový, takže ho možná budete chtít nafouknout (parametr jádra při bootu nebo překladu).

    Pokud se opravdu bojíte OOM, tak prostě vypněte memory overcommitment (/proc/sys/vm/overcommit_memory), ale pak asi bude vašim aplikacím těsno.

    Pro vás ale asi opravdu bude nejlepší nastavit hlídači -17 do oom_adj, aby přežil. Pro účely ladění byste si mohl nastavit /proc/sys/vm/oom_dump_tasks, abyste získal přehled o všech procesech v době zabití.

    28.6.2010 07:45 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Pisu ted malou aplikaci pro sledovani procesu.

    Kanón na vrabce. Dejte si do cronu ps po minutě a pak na to kápnete hned. (Vím z vlastní zkušenosti.)

    Dalším logickým krokem bude opravit tu špatnou aplikaci, která bortí systém. To většinou zabere :-)

    Pokud chcete něco monitorovat, pořiďte si nagios (nebo jiný systém). Nepište si vlastní věci.
    V nekterych pripadech (coz se mi nekolikrat stalo) system zacne strilet procesy a nez na to clovek prijde je system v nefunkcnim stavu a v logu ani zminka.
    Jako prevence by Vás mohly zajímat cgroups (control groups). Umožňují nastavit paměťovou kvótu tak aby se jeden proces nemohl rozpínat na úkor druhých.
    In Ada the typical infinite loop would normally be terminated by detonation.
    28.6.2010 10:05 ext3fs
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Sledovani je jen jedna vec, dalsi je znovu spusteni/restart procesu pokud z nejake priciny spadne/nebezi, nebo vykonani jine akce.

    Kanon na vrabce mi pripadne spis ten Nagios. Nemam s nim sice takove zkusenosti, za to se Zabbixem nekolikalete a prave takovy Zabbix to co potrebuji neumi a nebo umi, ale velmi slozite a jen castecne. Proc v urcitych situacich misto demona o velikosti par desitek KB pouivat moloch co potrebuje php, sql server, atp...?
    28.6.2010 17:57 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Sledovani je jen jedna vec, dalsi je znovu spusteni/restart procesu pokud z nejake priciny spadne/nebezi, nebo vykonani jine akce.

    Kanon na vrabce mi pripadne spis ten Nagios. Nemam s nim sice takove zkusenosti, za to se Zabbixem nekolikalete a prave takovy Zabbix to co potrebuji neumi a nebo umi, ale velmi slozite a jen castecne.
    Samozřejmě záleží na tom co si přejete dělat. Pokud chcete jen odhalit škůdce tak IMHO nejpřímočařejší cesta je to 'ps' jak jsem navrhoval.

    Pokud chcete dlouhodobě sledovat dostupnost služeb, mít nad tím nějaké hlášení problémů, případně samočinné pokusy o restart... tak na to je (opět IMHO) vhodný nástroj ten Nagios. Klidně do něj můžete jako plugin zaintegrovat ten svůj úžasnej nezničitelnej program ale myslím si že to bude fungovat zrovna tak dobře s něčím obyčejným. Každopádně máte už ale hotovou veškerou hlídací a rozhodovací logiku a nemusíte vynalézat kolo.
    Proc v urcitych situacich misto demona o velikosti par desitek KB pouivat moloch co potrebuje php, sql server, atp...?
    Vždycky když jsem měl takovéto tendence si něco malého psát tak jsem se prve porozhlédl jestli to už někdo nevyřešil předemnou. Konfiguraci Nagiosu pokud ho neznáte budete věnovat X dní a zrovna tak ten čas byste strávil psaním toho démona. Problém je, že pak když budete chtít "ještě tohle a ještě támto" tak v Nagiosu to už uděláte raz dva, zatímco ten démon budete zase X dní přepisovat, testovat, atp. Takže v delší trati se Vám přestane vyplácet udržovat ten bastl.

    PHP ani SQL server pokud vím to nepotřebuje, pouze Apache pokud chcete web front end.

    In Ada the typical infinite loop would normally be terminated by detonation.
    27.6.2010 09:45 petris_ | skóre: 12
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Je to uplne jedno, protoze pri bezne konfiguraci se pouziva lina alokace pameti, takze neni rozdil, jestli si vezmete prazdnou stranku zvetsenim heapu pres brk a nebo tim, ze pouzijete promennou z B, C nebo D sekce, jejiz stranka jeste nebyla pouzita a nebo zvetsenim zasobniku o stranku.
    27.6.2010 15:57 klusik | Plzeň
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Zdravím,

    rozdíly mezi S a D si přečtěte v dalších komentářích, co chci napsat já je, že v C musíte vždy (pokud nejste čuník programátorský ;)) hlídat meze a všechno kolem jen SÁM :-)

    Stejně tak přetečené, stejně tak přidelení (nepřidělení) volné paměti a všechno. Ono to vypadá jako buzerace, ale je to o tom, že co si uděláte, to máte. Ne vždy potřebujete velké a superkomplexní věci a proto používáte C a ne třeba Javu nebo C#. Nevýhoda toho je, že si musíte všecko ohlídat. ;)

    Hodně zdaru.
    Prostě já ;) www.klusik.cz
    27.6.2010 19:16 ext3fs
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    To je pochopitelne, ze je potreba dyn.pamet hlidat. Mne slo spis o to, jestli je mozne tu statickou brat tak, ze je alokovana v dobe spusteni procesu a proces s ni muze pracovat v kazde situaci a nikdo mu ji nevezme. Protoze v pripade, ze vrati malloc() NULL, tak se konci...
    28.6.2010 01:30 petris_ | skóre: 12
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Mne slo spis o to, jestli je mozne tu statickou brat tak, ze je alokovana v dobe spusteni procesu a proces s ni muze pracovat v kazde situaci a nikdo mu ji nevezme.
    Ne, vizte http://www.abclinuxu.cz/poradna/programovani/show/307603#3
    28.6.2010 09:51 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Sprave pameti je vcelku jedno jestli pouzijete statickou, nebo dynamickou pamet - chova se k nim stejne.
    Pokud chcte mit jistotu, ze alokovana pamet (at uz staticky, nebo dynamicky) bude k dispozic, tak by slo na zacatku behu programu (kdy je jeste pameti urcite dost) alokovat si vetsi kus pameti (pro vlastni potrebu) a do cele alokovane pameti zapsat pokud mozno nahodna data (tim se zaruci, ze tu pamet dostanete) - tuhle pamet vam uz nikdo nevezme (pokud proces nezabije OOM killer) a budete ji mit do konce behu programu k dispozici.
    28.6.2010 09:59 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Neco o sprave neinicializvane pameti se da najit treba v jadernych novinkach
    1.7.2010 11:39 x22
    Rozbalit Rozbalit vše Re: staticka vs dynamicka alokace pameti
    Na zabezpecenie, ze pamat nikto nevezme (neodswapuje) su volania mlock() a mlockall(). OOM killera to nezastavi, mozno naopak zvysi sance, ze sa proces stane obetou.

    Založit nové vláknoNahoru

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

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