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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 2
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 20
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 768 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Semafory a sdílená paměť

Jardík avatar 1.5.2010 22:46 Jardík | skóre: 40 | blog: jarda_bloguje
Semafory a sdílená paměť
Přečteno: 1019×
Když alokuju několik semaforů přes semget() či sdílenou paměť přes shmget() a pak mi někdo zabije proces, budou tyto dealokovány, nebo budou dále "hnít" v systému?
Věřím v jednoho Boha.

Řešení dotazu:


Odpovědi

2.5.2010 10:30 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Hnit.
Jardík avatar 2.5.2010 11:10 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
To je ale docela blbý, jak pak takovouhle paměť uvolním? Např. když ten program spustím, tak je napsán tak, aby ukázal chybu, pokud jiš taková paměť je naalokována a nepřipadá mi správné, abych ji použil, když pak třeba patří jiné instanci?
Věřím v jednoho Boha.
Fuky avatar 2.5.2010 12:13 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť

Dost záleží na tom jaká je vlastně architektura tvé aplikace, popiš trochu podrobněji jak si představuješ spolupráci mezi procesy a jak je hodláš spouštět, zda-li např. všechny procesy využívající sdílenou pamět nebudou jen potomci jednoho rodiče.

Nástřel jednoho z možných řešení:

  • před vytvořením sdílené paměti vytvořím atomicky soubor s názvem stejným jako je klíč ke sdílené paměti a uložím do něj PID procesu, který má na starost odstranění této paměti
  • pokud tento soubor již existuje, tak zjistím zdali běží proces, jehož PID se v něm nachází, pokud ne, tak tuto pamět odstraním
  • ošetřím v aplikaci signály, které mohu, aby při korektním ukončení byla uvolněna sdílená paměť
Jardík avatar 2.5.2010 15:25 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
1) hmm
2) Jenže jiný proces pak může dostat původní PID a tak "bude běžet"
3) Takový SIGKILL ale nechytím ...
Věřím v jednoho Boha.
Fuky avatar 2.5.2010 20:38 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť

2) Jenže jiný proces pak může dostat původní PID a tak "bude běžet"

Ošetřit zda-li se jedná opravdu o ten původní proces není přeci problém.

3) Takový SIGKILL ale nechytím ...

Samozřejmě, neoprávněný přístup do paměti taky neošetříš, ale měl by jsi korektně ošetřit např. SIGTERM a vše ostatní co můžeš.

Nepopsal jsi architekturu tvé aplikace, takže ti nemůžeme konkrétně poradit.

Navíc si můžeš zjistit, které PID založilo sdílenou paměť, případně kolik procesů ji používá, pokud žádný, tak hned víš, že proces se ukončil nekorektním způsobem. Možných řešení je více.

2.5.2010 23:01 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Ošetřit zda-li se jedná opravdu o ten původní proces není přeci problém.

Na to jsem zvědavý. Kromě ptracnutí hlídaného procesu mě napadá žádný zaručený způsob. Vás ano?

neoprávněný přístup do paměti taky neošetříš

Ale ošetříš: sigaltstack(2), sigaction(2).

Fuky avatar 3.5.2010 02:42 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť

Vzhledem k tomu, že je původní proces plně pod jeho kontrolou, tak není problém, aby dal okolí vědět, že je to právě on např. periodická aktualizace poslední modifikace souboru, ve kterém je uložené PID.

S ošetřením neoprávněného přístupu do paměti to podle mě není tak jednoznačné, může nastat kdekoliv, třeba zrovna v ošetření signálu, případně si může porušit datovou strukturu a program se může začít chovat neočekávaně. Chtěl jsem tím jen říct, že stejně nikdy nemůže spoléhat na to, že proces "zemře" korektně, ale vždy musí počítat s tím, že ho jádro bez milosti sestřelí a nenechá ho po sobě ani uklidit. A je třeba, aby následně spuštěné instace tohoto procesu tímto nebyly poznamenány.

3.5.2010 08:39 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
K čemu je ukládání PID, když problém je, že máme jiný program se stejným PID? Proč asi distribuce při bootu čistí /var/run a proč novější init sripty démony nedémonizují a nechávají si jako potomky? Hledáme spolehlivé řešení, nikoliv něco, co v 99,99 % bude fungovat ve zbylých případech se vymluvíme na skvrny na Slunci.
3.5.2010 10:52 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
spolehlivé řešení ... nikoliv 99,99 %
Zajímalo by mne, kolik procent je podle Vás spolehlivost.
In Ada the typical infinite loop would normally be terminated by detonation.
2.5.2010 12:21 chrono
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Či už naozaj tú pamäť nikto nepoužíva by sa malo dať zistiť pomocou shmctl + IPC_STAT + shmid_ds.shm_nattch.
2.5.2010 12:25 luky
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Najlepsie by bolo, aby sa program sam postaral o upratanie svojich veci. Ak to nie je mozne da sa to aj z konzoly. Podrobnosti su v manualovych strankach.
  • ipcs sluzi na vypisanie informacii o prostriedkoch na medziprocesorovu komunikaciu (ipc) a
  • ipcrm sluzi na odstranenie ipc.
3.5.2010 09:35 podlesh | skóre: 37 | Praha
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Tyto příkazy patří mezi vyžadované znalosti každého unixového/linuxového admina, kvůli uklízení po chcíplých (či přímo zabitých) programech.

Je sice pravda že dnes se již SYSV IPC tolik nepoužívá (právě kvůli těmto problémům a kvůli přenositelnosti), ale například db2 je používá stále.
Josef Kufner avatar 2.5.2010 23:52 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
[...] a nepřipadá mi správné, abych ji použil, když pak třeba patří jiné instanci?
Viz IPC_PRIVATE coby klíč.
Hello world ! Segmentation fault (core dumped)
Josef Kufner avatar 2.5.2010 23:50 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Se sdílenou pamětí to ještě není tak zlé – lze ji okamžitě po připojení odstranit a ona zmizí až s posledním odpojením.

Takže když uděláš shmget(), shmat(), shmctl(IPC_RMID), pak ji budeš chvíli používat a nakonec všecky procesy zabiješ, tak ti v systému nezůstane a bude se dát v pohodě používat. Každý blok ḿá u sebe počítadlo připojení a pomocí shmctl jej lze přečíst, ale není dobré na něj moc spoléhat – ta hodnota se upravuje tak nějak divně (tuším že v jádře a nesynchronizovaně s procesy).

Pokud vím, tak u semaforů tohle nejde. Možná kdyby se jejich existence dala navázat na existenci bloku sdílené paměti, ale nevím o tom.
Hello world ! Segmentation fault (core dumped)
3.5.2010 10:54 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Tohle řešení má jen drobnou chybu, a to, že pokud segment odstraníte, tak Váš handle na něj sice bude existovat, ale žádný další proces už k němu handle nedostane. Tím ovšem pomine smysl slova "sdílený".
In Ada the typical infinite loop would normally be terminated by detonation.
Josef Kufner avatar 3.5.2010 12:04 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Připojená dílená paměť se dědí při forku(). Takže pokud jde například o sdílení dat vrámci jedné instance víceprocesového serveru, tak je to naprosto vyhovující a bezproblémové řešení.
Hello world ! Segmentation fault (core dumped)
Jardík avatar 3.5.2010 18:11 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
při forku se sice sděďí, ale s tím veškerá alokovaná paměť (i když je to copy-on-write), další problém je, že potřebuji spustit jiný spustitelný soubor např. pomocí execl, co zas je ale sdílená paměť odpojena.
Věřím v jednoho Boha.
3.5.2010 18:13 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Při forku jo ale při execu ne. Takže zase ostrouháme. (Pokud vás zajímá jen fork, dá se to vyřešit elegantněji vlákny, žejo.)
In Ada the typical infinite loop would normally be terminated by detonation.
Josef Kufner avatar 3.5.2010 19:48 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
S vlákny nezměníš UID každému procesu zvlášť ani neuděláš chroot a exec u spousty (většiny?) aplikací potřeba není.
Hello world ! Segmentation fault (core dumped)
3.5.2010 19:53 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
UID ne, bezpečnostní kontext jo.
In Ada the typical infinite loop would normally be terminated by detonation.
4.5.2010 17:30 Sten
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Pro sdílenou pamět přes fork je lepší mmap(MAP_ANONYMOUS | MAP_SHARED)
4.5.2010 11:08 Sten Fil | skóre: 4
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
"Hnit". Nicmene IPC muze obsahovat dulezita data. Jelikoz proces, ktery byl odpovedny za jejich korektni zruseni skoncil nekorektne. Bud je spatne napsany a nebo se nekdo pokusil sabotovat vase dilo. Napr. ten proces sestrelil pomoci SIGKILL. Kazdopadne pri opetovnem startu by se melo zjistit ze sdilene prostredky existuji a zaridit se podle toho. Bud pokracovat v cinnosti od predchoziho stavu, ktery je v IPC a nebo jet od nuly.
4.5.2010 13:29 Atom321 | skóre: 20
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
No, dle mého názoru jsou volání semget() a shmget() prakticky nepoužitelná a slouží jen jako akademické cvičení a past na začátečníky. V Linuxu/Unixu je spousta šikovnějších rozhraní pro komunikaci mezi procesy. Na co to vlastně potřebujete?
Jardík avatar 4.5.2010 16:59 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Semafory a sdílená paměť
Potreboval jsem to do semestralky, muselo se to tam pouzivat. Normalne bych pouzil treba dbus, ale ...
Věřím v jednoho Boha.

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.