V čom sa programujú real-time aplikácie?

hhh

Re:V čom sa programujú real-time aplikácie?
« Odpověď #30 kdy: 08. 08. 2012, 16:43:34 »
Na MFF jsem zrovna ted absolvoval predmet na real-time aplikace. Na prednasce se probirala teorie okolo RT systemu obecne, rozvrhovani, jaky pristup k vyvoji atp. Na cvikach jsme v C (uz si nevzpomenu nad jakym OS) programovali hlavu derovace, co jezdi nad deskou a deruje - v simulovanem prostredi s fyzikou v qemu, ke konci semestru jsme pak programovali robutky z lega, kteri jezdi po stole a maluji fixou, opet v C.

Jeden z nejlepsich a nejzabavnejsi predmetu, co jsem kdy mel.

http://d3s.mff.cuni.cz/~bures/en/embedded-and-real-time-systems


Re:V čom sa programujú real-time aplikácie?
« Odpověď #31 kdy: 08. 08. 2012, 16:56:42 »
Někde jsem četl že Erlang má správu paměti řešenou jinak než například Haskell
Kdoví, jak to je, existují i opačné hlasy... http://www.unlimitednovelty.com/2011/07/trouble-with-erlang-or-erlang-is-ghetto.html

Zajímalo by mě, kdo programuje v Ada nebo Erlangu  (pěkné jazyky), kde se v našich končinách aktivně používají.
Erlang se používá např. v sympatické firmě Gooddata: http://developer.gooddata.com/blog/2011/02/22/charting-export-using-nodejs-and-erlang/

A pak ho ještě aktivně používám já pro svoje potřeby, ale to už tak zajímavý není ;)

Jeden z nejlepsich a nejzabavnejsi predmetu, co jsem kdy mel.
Tak to se vůbec nedivím, zní to fakt rajcovně. To jsem rád, že jsem se pletl :)

MFF

Re:V čom sa programujú real-time aplikácie?
« Odpověď #32 kdy: 08. 08. 2012, 17:21:06 »
Ja len doplnim, ze na matfyze je cely Nmgr obor zamerany na real time. Kamarat to studoval - masochizmus :)

JS

Re:V čom sa programujú real-time aplikácie?
« Odpověď #33 kdy: 08. 08. 2012, 17:39:20 »
O RT aplikacich nic nevim, ale marsovske vozitko Curiosity pouziva VxWorks jako operacni system.

Re:V čom sa programujú real-time aplikácie?
« Odpověď #34 kdy: 09. 08. 2012, 18:18:06 »
VxWorks a tomu podobné RT systémy (LynxOS, PikeOS)  jsou vhodné pro hard-RT/kritické RT systémy, kdy je vyžadována určitá spolehlivost OS. Jsou často certifikované pro použití v kritických systémech (letecké systémy, systémy Země-Mars, apod.) a s tím souvisí i jejich vysoká cena.

Trochu níže je myslím QNX od Freescalu (QNX podporuje plno jejich HW).

Ale pokud se na něčem naučit a zjistit jak to chodí, možná by byl nejlepší nějaký opensource RTOS.
Jako např. uClinux (nemá memory management) nebo FreeRTOS popř. jiné. Záleží na cílovém HW.

Základ je C (C++).


andy

Re:V čom sa programujú real-time aplikácie?
« Odpověď #35 kdy: 10. 08. 2012, 20:35:31 »
Co ja viem, tak ADA sa vyuziva skor kvoli silnej typovej kontrole. Na pouzitelnosti pre realtime je dolezite, ze sa "jazyk" sprava deterministicky a nie, ze sa tam nahodne pusta GC alebo po 100 opakovaniach cyklu sa kod zJITuje a podobne srandy. Dalej treba pouzivat datove struktury s nejakou dokazanou casovou zlozitostou a nie, ze sa zrazu prealokuvava pole, rehashuje tabulka atd. (a ak hej, tak vediet kedy to nastane a byt panom situacie..) Ja by som volil ADU, C, C++, Pascal, asm..
Sice realtime moc neriesim, maximalne tak nejake srandy s AVR, ale myslim ze niektore veci daju rozum :).

snekozo

Re:V čom sa programujú real-time aplikácie?
« Odpověď #36 kdy: 11. 08. 2012, 16:56:31 »
Podívejte se na RTEMS
http://www.rtems.org/
a na eCos
http://ecos.sourceware.org/

K RTOS eCos je volně ke stažení kniha
http://ptgmedia.pearsoncmg.com/imprint_downloads/informit/perens/0130354732.pdf

V sadě knih z Prentice Hall, editovaných Perensem, je ostatně řada dalších zajímavých volně stažitelných titulů
http://www.informit.com/promotions/promotion.aspx?promo=135563


Viky

Re:V čom sa programujú real-time aplikácie?
« Odpověď #37 kdy: 11. 08. 2012, 17:08:05 »
To je dost divně položená otázka. Ale to neplatí jen o programech v reálném čase, ale prakticky o čemkoli - "je lepší OOP nebo něco jiného? Je Assembler rychlejší než C?" atd.

Přece základem je problém, jenž je třeba vyřešit, a dále podmínky, v jakých se má ten problém řešit, tj. HW je třeba dopředu známý a daný (na kosmické sondě miliony km od Země ho těžko někdo vymění), celý program je ve Fortranu a je třeba dopsat dílčí modul - asi nebude příliš prozíravé to kvůli tomu celé přepisovat do něčeho jiného...
Od těch dvou věcí se vše odvíjí, jim je podřízena volba nástrojů, prostředků. Když jsme si jako kluci stavěli z Merkuru plotter/scanner, byla to taky vlastně aplikace v reálném čase a šlo to bez problémů napsat i v dosti pomalém, 8bitovém interpretovaném BASICu.

Přestaňte už se konečně hádat o tom, které paradigma je to posvátné, který vývojový vzor ten nejlepší, jaký programovací jazyk ten všespásný. Nic takového neexistuje! Je třeba mít přehled o všem a na základě zkušeností umět rozhodnout, v kterých situacích, případ od případu, je lepší to a v kterých ono. Už jsem dělal realtime ve Forthu a nedovedu si v daném případě představit, že by stejnou funkci mohlo stejně dobře zastat něco jiného, stejně jako jsem dělal realtime v Assembleru a nedovedu si představit, že by v tomto odlišném případě bylo možné to zvládnout v čemkoli jiném. A dovedu si představit i realtimovou aplikaci, na níž by se dala použít Java. Proč ne?

Ano, je pravda, že na základy a stropy se hodí beton, na zdi cihly a na krovy dřevo, ale to není žádné dogma. Dá se použít i jiná kombinace a existují dokonce případy, kdy to takto doporučeně prostě vůbec nepůjde. Základem je znát vlastnosti a limity těch materiálů a metod a umět zvážit jejich aplikaci. A v programování to platí přeci zrovna tak.

Chce-li se někdo věnovat vývoji na reálný čas, musí v první řadě řešit časové limity, případně přesné časování v rámci toho daného železa. A pak se rozhoduje, v čem to bude dělat - i na základě této předchozí analýzy: celý program je v C++, ale tohle holt s daným překladačem nejde stihnout, tak se zkrátka příslušné úseky napíšou v Assembleru; hodilo by se mi programovat v Lispu, po analýze realtimovosti zjišťuji, že mi v tom nic nebrání => není tedy důvod tento jazyk z důvodů realtimu zavrhovat a za každou cenu tam cpát jiný, protože ten je přece vhodný na realtime (podle předmluv různých tutoriálů a učebnic).

Existují strojáky (resp. železo), kde si člověk nemůže být jistý ani časováním jednotlivých instrukcí. A nad těmito strojáky existují překladače vyšších jazyků, které vám jsou schopny časování garantovat (jinými prostředky, ve spojitosti s dalšími obvody atp.). Universální kuchařka prostě není a to, co v deseti případech fungovalo výborně, může být v jedenáctém naprosto nepoužitelné.

ABC

Re:V čom sa programujú real-time aplikácie?
« Odpověď #38 kdy: 07. 02. 2013, 14:34:26 »
Hledal jsem hledal nějaké materiály v češtině. Nemáte někdo k dispozici toto?:
Srovnal,V: Operační systémy reálného času. Elektronické učební texty na stránkách FEI VŠB TUO, 2012

Celkem zajímave info, jako je třeba návrh scheduleru je zde:
http://www.dei.unipd.it/corsi/so2/cemodal.htm


Honza Brestan

Re:V čom sa programujú real-time aplikácie?
« Odpověď #39 kdy: 07. 02. 2013, 16:41:08 »
Spousta realtime aplikaci je i nad .NETem -  oblasti napr. finance, letiste, hospitality...

Rax

Re:V čom sa programujú real-time aplikácie?
« Odpověď #40 kdy: 07. 02. 2013, 17:58:15 »
Spousta realtime aplikaci je i nad .NETem -  oblasti napr. finance, letiste, hospitality...

.NET i Java jsou antonymum k realtime aplikaci, už jenom kvůli nedeterministickému GC. Nevím jak moc by tě bavilo letět v letadle, kde se čas od času na pár sekund zakousne řízení, protože GC se zrovna rozhodl přežvykovat. Patrně sis to s něčím spletl.

Re:V čom sa programujú real-time aplikácie?
« Odpověď #41 kdy: 07. 02. 2013, 18:20:10 »
Spousta realtime aplikaci je i nad .NETem -  oblasti napr. finance, letiste, hospitality...

Frontend mozno, tam je jedno ci pri vydavani letenky aplikacia na par sekund zatuhne, alebo si zrazu zmysli, ze ide pozriet co noveho na HDD.
Ale co sa tyka backend-u, tak .NET urcite nie, to by bola samovrazda.

Zaujimava diskusia, nevedel som, ze existuje tolko jazykov. Moja predstava bola asembler, pripadne Cecko. Ja ked si robim nejake srandy s Atmega, tak zacnem v Ccku a skoncim v asembleri, ako to stale upravujem a optimalizujem aby to bolo rychle a male :D

ABC

Re:V čom sa programujú real-time aplikácie?
« Odpověď #42 kdy: 07. 02. 2013, 18:24:06 »
Tohle je řešeno a taky vyřešeno o stránku zpět. Diskuze o .NET a Javě je v tomto tématu dále bezpředmětná.

Nebo jsem měl založit nové téma? Jde o to, že jsem po dlouhém goolgování zjistil, že existujou skripta v elektronické podobě v češtině. Srovnal,V: Operační systémy reálného času. FEI VŠB TUO, 2012. Má k nim někdo přístup? děkuji

Jarek

Re:V čom sa programujú real-time aplikácie?
« Odpověď #43 kdy: 08. 02. 2013, 09:24:22 »
Realtime aplikace jsem dřív dělal, prakticky se na to nejvíce používá C/C++ (spíš C a když už C++, tak bývá dost očesané, např. zákaz používání výjimek apod.). Co se týká správy paměti, řešíte v podstatě nesmysl, protože v opravdu kritických realtime aplikacích je přímo zakázané používat dynamickou alokaci běhěm běhu aplikace. Všechno musí být alokované staticky (nebo pokud už tam musí být nějaká dynamická alokace, tak jedině během inicializace). Je to kvůli fragmentaci paměti, i když máte aplikaci zcela bez memory leaků (což se samo o sobě dost špatně prokazuje), tak nevíte, jestli nebude po nějaké době běhu pamět fragmentovaná natolik, že nebude volný dostatečně velký blok pro alokaci, kterou zrovna potřebujete. Koukněte se na tohle, dává to docela dobrou představu, co musí kód realtime aplikace splňovat:
http://www.stroustrup.com/JSF-AV-rules.pdf

bambas

Re:V čom sa programujú real-time aplikácie?
« Odpověď #44 kdy: 08. 02. 2013, 11:31:36 »
V Erlangu.