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 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

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

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

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

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

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

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

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

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

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

    Evropský parlament dnes přijal směrnici týkající se tzv. práva spotřebitele na opravu. Poslanci ji podpořili 584 hlasy (3 bylo proti a 14 se zdrželo hlasování). Směrnice ujasňuje povinnosti výrobců opravovat zboží a motivovat spotřebitele k tomu, aby si výrobky nechávali opravit a prodloužili tak jejich životnost.

    Ladislav Hagara | Komentářů: 2
    včera 16:11 | Nová verze

    Bylo oznámeno (cs) vydání Fedora Linuxu 40. Přehled novinek ve Fedora Workstation 40 a Fedora KDE 40 na stránkách Fedora Magazinu. Současně byl oznámen notebook Slimbook Fedora 2.

    Ladislav Hagara | Komentářů: 16
    včera 13:44 | Upozornění

    ČTK (Česká tisková kancelář) upozorňuje (X), že na jejím zpravodajském webu České noviny byly dnes dopoledne neznámým útočníkem umístěny dva smyšlené texty, které nepocházejí z její produkce. Jde o text s titulkem „BIS zabránila pokusu o atentát na nově zvoleného slovenského prezidenta Petra Pelligriniho“ a o údajné mimořádné prohlášení ministra Lipavského k témuž. Tyto dezinformace byly útočníky zveřejněny i s příslušnými notifikacemi v mobilní aplikaci Českých novin. ČTK ve svém zpravodajském servisu žádnou informaci v tomto znění nevydala.

    Ladislav Hagara | Komentářů: 25
    včera 13:33 | Komunita

    Byla založena nadace Open Home Foundation zastřešující více než 240 projektů, standardů, ovladačů a knihoven (Home Assistant, ESPHome, Zigpy, Piper, Improv Wi-Fi, Wyoming, …) pro otevřenou chytrou domácnost s důrazem na soukromí, možnost výběru a udržitelnost.

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

    Společnost Meta otevírá svůj operační systém Meta Horizon OS pro headsety pro virtuální a rozšířenou realitu. Vedle Meta Quest se bude používat i v připravovaných headsetech od Asusu a Lenova.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 710 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: staticka vs dynamicka alokace pameti

    26.6.2010 21:57 ext3fs
    staticka vs dynamicka alokace pameti
    Přečteno: 1662×
    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: 72 | 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.