next up previous contents
Next: Kvaziparalelní provádění procesů v Up: Diskrétní simulace Previous: Události

Procesy

Pro popis třídy objektů s vlastním dynamickým chováním je v SIMLIB definována abstraktní třída Process. Každá třída, která zdědí třídu Process, musí specifikovat chování objektů této třídy v čase. Chování se popisuje v metodě Behavior posloupností příkazů. Základní struktura popisu třídy je uvedena v příkladu:

class Zakaznik : public Process {
  <atributy zákazníka>
  void Behavior()
  {
    <příkazy popisující chování objektu v čase>
  }
public:
  Zakaznik(<parametry>) { <inicializace atributů> }
  ~Zakaznik(<parametry>) { <rušení atributů> }
};

Popis chování objektů v metodě Behavior připomíná popis procedury, může však, na rozdíl od ní, obsahovat i příkazy, které způsobují čekání. To znamená, že popis chování je v modelovém čase na určitou dobu přerušitelnýgif. Po aktivaci objektu se začne provádět posloupnost operací v metodě Behavior stejně, jako při provádění obvyklé procedury. V okamžiku, kdy se narazí v tomto popisu činnosti objektu na příkaz, který představuje čekání, je provádění příkazů pozastaveno. Pokud proces čeká, mohou běžet ostatní procesy.

Příkaz Wait použitý v popisu chování objektu provádí potlačení činnosti objektu na určitou dobu (tato činnost odpovídá čekání objektu). Příkaz má tvar:

    Wait( <aritmetický výraz> );

Hodnota výrazu udává dobu, po kterou bude pozastavena aktivní činnost objektu. Jestliže tedy objekt O v modelovém čase t provede příkaz Wait(d) ve svém popisu chování, pak se stane po dobu d pasivním a příští aktivace (obnovení činnosti) nastane v modelovém čase t + d. Okamžik t + d budeme nazývat reaktivačním okamžikem procesu nebo také kritickým okamžikem procesu.

Příští kritický okamžik je skrytým atributem každého objektu. Čas příštího kritického okamžiku je stanoven buď explicitně příkazem Wait(d) (pak je roven Time + d, kde Time je aktuální hodnota modelového času), nebo implicitně příkazem WaitUntil(B) (pak je roven nejbližší hodnotě modelového času, ve kterém se predikát B stane pravdivým).

Každý objekt je charakterizován třídou, svým stavem a identitou (například jménem). V průběhu simulace může objekt vzniknout, zaniknout, může být právě aktivní a nebo může čekat (pasivní stav procesu) na určitou událost nebo na určitý stav modelu.

Po vzniku je objekt v neaktivním stavu. Odstartování procesu (jeho aktivace) se provede metodou Activate. Objekt se může sám aktivovat tím způsobem, že provede svou aktivaci jako akci v konstruktoru. Poznamenejme, že k aktivaci nového objektu může dojít až po přerušení právě probíhajícího procesu.

Po provedení posledního příkazu v popisu chování objektu tento objekt automaticky zaniká. Zánik objektu lze případně kontrolovat tím, že definujeme destruktor s požadovanými operacemi.




next up previous contents
Next: Kvaziparalelní provádění procesů v Up: Diskrétní simulace Previous: Události

Petr Peringer
Mon Dec 8 13:24:19 CET 1997