Flexible Solutions on Oracle Middleware
  • Teljeskörű üzleti megoldások
  • Intelligens távközlési szolgáltatások
  • Területi megoldáscsomagok
Számítástechnika   |   2008-02-19
Valós időben

Vállalati környezetben gyakran állnak elő olyan üzleti események, ahol a kiszolgálás alacsony késleltetése kritikus. Ma már elvárjuk, hogy a kiszolgáló infrastruktúra minél kevesebb számítási kapacitást vonjon el az üzleti funkcióktól.

Elmúltak azok az idők, amikor nem üzemeltethettünk nagy teljesítményigényű alkalmazásokat Java platformon a virtuális gép sebessége miatt. Manapság köztes rétegként vagy akár telekommunikációs megoldásokban is használtak és megbízhatóan működnek Java-alapú alkalmazásszerverek. A valós idejű rendszerek még ennél is magasabbra helyezik a lécet.

E rendszerek speciális időkövetelményeknek felelnek meg – mondja Farkas István, az Alerant Zrt. szakértője. Ehhez általában korlátot határozunk meg a válaszidők maximumára vagy az átlagos válaszidőre.

Az ún. hard real time rendszerek esetén a határidők átlépése hibás működést eredményez, mint a szívritmusszabályozó vagy a nyomottvizes reaktor teljesítményszabályozó rendszere esetén. Az ún. soft real time rendszereknél a korlátok enyhébbek. A media streaming megoldásoknál például, ha egy képkockát nem sikerül időben dekódolni, annak eldobásával ugyan romlik a minőség, de a lejátszás még működik.

Java-környezetben a legkritikusabb a szemétgyűjtő mechanizmus, amely a memóriában lévő, már nem használt objektumok megszüntetéséért felel. Ennek rendszeres időközönként futnia kell, hiszen a hagyományos JVM-et használó programozónak nincsenek explicit nyelvi eszközei a memória felszabadítására. A modern virtuális gépek számos algoritmussal segítik a szemétgyűjtés teljesítményének hangolását. A generációs algoritmusok speciális területekre osztják fel a heapet, mivel az objektumok többségének rövid élettartama miatt gyakran elegendő csak az újak létrehozásához használt területen elvégezni a szemétgyűjtést. A generációk kezelése konkurens vagy párhuzamos. A konkurens algoritmusok a programszálak futásával egy időben végzik a szemétgyűjtést, a párhuzamosak bár megállítják a szálak futását, képesek a rendszer összes CPUjának kihasználására.

Valós idejű rendszerek esetén azonban nem a teljesítmény elsődleges, hanem a kiszámítható válaszidők: hogy előre meghatározzuk a szemétgyűjtés várható idejét.

A JSR–1 Java Real-Time Specifikáció mechanizmusokat biztosít valós idejű Java programokhoz: nagy pontosságú időzítést, aszinkron eseménykezelést és szálak közti vezérlésátadást téve lehetővé. Biztosítja a direkt memóriahozzáférést, valamint adott hatáskörű memóriaterületek kezelésével tehermentesíti a Java szemétgyűjtőt. Amint a program futása elhagyta a megadott területet, az ahhoz rendelt objektumok törlődnek.

A JSR–1 speciális szálkezelési modelljével a virtuális gép szemétgyűjtő mechanizmusa nem szakítja meg a szálak futását, és nem léphetnek fel szinkronizációs problémák.

A Java RTS használatához azonban szükség van a Java program módosítására. A BEA JRockit virtuális gép lehetőséget ad valós idejű programok futtatására a módosításuk nélkül. Fő eleme a determinisztikus garbage collector, amely a szemétgyűjtés miatt fellépő szünetek idejére felső korlátot garantál. Alapelve, hogy felosztva a szemétgyűjtés folyamatát (divide et impera), többször, kisebb időre szakítja meg a programok futását. Adaptív üzemmódja a kódot futás közben elemzi és választja ki a megfelelő módszert. A virtuális gép lehetővé teszi a késleltetések elemzését is, megmutatva, hogy azokat a kód, a szemétgyűjtés, az I/O-műveletek, vagy lockok okozzák.

A BEA WebLogic Real Time platform a JRockit virtuális géppel és segédeszközeivel, a WebLogic alkalmazásszerverrel, a BEA Spring fejlesztői keretrendszerrel támogatja az alacsony késleltetésű J2EE-alkalmazások fejlesztését, a WebLogic Event Serverrel pedig eseményvezérelt, szolgáltatásorientált architektúrák kialakítását.