Know-how, előadás, modellezés a gpss világban
A PREEMPT és a RETURN blokkok használata a 6.5.5 pontban található.
6.2.7.2. Megszakítás a "capture" módban
A "capture" módban, ha az OCU már használatban van, az aktív tranzakció a függőben lévő megszakítások listájába kerül vagy az "elfogja" az OKS-t. A szolgáltatás azonnali megszakítása, és az ügylet nem kerül a listára, amikor a függőben lévő megszakítások listája üres, és a szervizelt tranzakció maga nem "támadó".
A függőben lévő megszakítások listáján szereplő tranzakcióknak joguk van arra, hogy a megszüntetett tranzakciókat vagy tranzakciókat megelőzően megszerezzék az OCU-t az OCS késleltetési listájáról.
6.2.7.3. Elsőbbségi üzemmódban működő egycsatornás eszköz állapotának ellenőrzése
A PCC állapotának ellenőrzése a prioritási módban a GATE segítségével végezhető el. valamint a Boolean változó és a TEST blokk használatával.
Tekintsük át a GIC állapot ellenőrzését a GATE blokk segítségével.
A tesztállapotot az alábbi feltételes állítások határozzák meg:
- I - az A. operandus által meghatározott PCU megszakad;
- Az A-operandus által meghatározott NI-OKU nem szakad meg.
Az első példában a GATE blokk kihagyja az ügyletet, ha a Stan STC megszakad. A második példában Transact adja át a következő blokk, ha nem szakítják CCCH, amely számot úgy definiáljuk, mint az a számítás eredményét és az azt követő kerekítés akár a teljes kifejezést zárójelben (V $ reszelő-3). A harmadik példában, az OKC nyomtatás megszakadása esetén a tranzakciót a Udal nevű blokkhoz küldi.
Az első és a második példában a GATE blokk a meghibásodás módjában működik a bemenetben a feltétel teljesítésének elmulasztása esetén. Itt a 6.2.4. Pontban tett megjegyzés továbbra is érvényes: a B operandus hiánya a számítógépes szimulációs idő növeléséhez vezethet. Bizonyos esetekben azonban ez a mód valószínűleg használható.
6.2.8. Egycsatornás eszköz hozzáférhetetlensége
A DCS és más helyzetek GPSS World hibáinak modellezésére olyan blokkokat biztosítanak, amelyek észlelik a DCS elérhetetlenségét és rendelkezésre állását. E blokkok használata esetén az OCS statisztikák nem torzulnak. Itt a következőket tartjuk szem előtt. Például a hibák szimulálására a megszakítási üzemmódot (PREEMPT) is használhatja. Azonban bonyolít okozó megszakítása (szimuláló hibák KPSZ) rögzítik a statisztikában TRANSACT, gondoskodjanak a megfelelő működéséhez a KPSZ. És ez nem helyes, ezért az OCU statisztikái torzulnak.
6.2.8.1. Érvénytelen állapot- és rendelkezésre állás helyreállítás
A CMC megközelíthetetlenségét a FUNAVAIL blokk modellezi (az F jel azt jelenti, hogy OKU, UNAVAIL - nem érhető el). A blokk használata során az OCS-statisztikák nem torzulnak.
A blokk az operandus által jelzett névvel vagy számmal teszi elérhetővé az OKC-t (lásd a blokkdiagramot).
A FUNAVAIL blokk által feldolgozott összes tranzakció. három osztályra oszthatók, amelyek meghatározzák az operandusok célját:
- az OKU-t (a SEIZE vagy a PREEMPT) elfoglaló tranzakciót, amikor átkerül egy nem hozzáférhető állapotba (B. C. D. operandusok);
- korábban megszakított tranzakciók a megszakítási listában (E. F operandusok);
- A függőben lévő megszakítások listáján szereplő tranzakciók és az OCS későbbi listájában (G. H operandusok).
A B operandus meghatározza a tranzakció feldolgozási módját, amely az OCU-t foglalja el, ha nem áll rendelkezésre:
- CO - folytatás mód. az OCU által elfoglalt tranzakció feldolgozásának folytatása a rendelkezésre állás alatt;
- RE - törlés mód. törölje és továbbítsa az elfoglalt ACS tranzakciót azon blokkhoz, amelynek címkéjét C operandával kell megjelölni;
- alapértelmezés szerint - megszakítja a feldolgozást és elhelyezi a megszakítások listáját az OKU; Miután a rendelkezésre állás helyreállt, ez a tranzakció az OKS-t és a "pre-service" szolgáltatást igénybe veheti.
A C operandus a blokk címke, amelyre a törlési tranzakció módban kerül sor, amely az OCU-t átvette, amikor nem elérhetõ állapotba került.
Operand D - az OCU-t elfoglaló tranzakció paraméterének száma vagy neve, amikor nem hozzáférhető állapotba került; ha törli (RE mód), vagyis ki van zárva a BSS-ből, akkor ez a paraméter rögzíti a távoli tranzakcióhoz hátralévő időt a szolgáltatás végéig.
Operand E TRANSACT meghatározott feldolgozási módok, amelyek az átruházás időpontjában a KPSZ az elérhetetlen állapotban megszakítani a listán, vagyis azok TRANSACT javítható ezen Oku korábban megszakadt ..:
- CO - folytatás mód. az OKU továbbra is működik a rendelkezésre állás alatt - a tranzakciók szolgáltatása a megszakítások listájáról;
- RE - törlés mód. törölni és továbbítani a tranzakciókat a megszakítási listáról az új blokkra, amelynek címkéjét az F operandában kell megadni;
- alapértelmezés szerint - hagyja el az előzőleg megszakított tranzakciókat az OCU megszakítások listáján, és ne akadályozza meg őket abban, hogy elfoglalják a hozzáférést.
Operand F jelöli a blokk címkét, amely fogják irányítani tranzakciókat bonyolít CMO megszakítja a listán, ezért azokat nem lehet az SBS, így nem kell a belépés lehetőségét a maguk idejében beállítások végéig hátralévő szolgáltatást.
Az F operandus akkor is használható, ha nincs operandus (alapértelmezés szerint). Ebben az esetben az átadott tranzakciókra az új blokkra megmarad a szolgáltatás megszakadása.
Operand G TRANSACT meghatározott feldolgozási módok, amelyek az átruházás időpontjában a KPSZ az elérhetetlen állapotban megszakítani a listát függőben van, vagyis arra vár, hogy a megszakítás és késedelem a listában ..:
- CO - folytatás mód. továbbra is működjenek az OKS alatt, amikor nem érhető el - a folyamatban lévő megszakítások és a késleltetési lista listáján szereplő tranzakciók szolgáltatása;
- RE - törlés mód. törölje és továbbítsa a tranzakciókat a függőben lévő megszakítások listájáról és a késleltetési listát az új blokkra, amelynek címkéjét a H operandus jelöli;
- alapértelmezés szerint hagyja el a tranzakciót a függőben lévő megszakítások listáján és a késleltetett OCU listáján, és ne akadályozza meg őket a rendelkezésre állás alatt.
Az operandus H meghatározza az új blokk címkéjét, amelyhez a törlési módban (RE) a tranzakciókat a függőben lévő megszakítások listájáról és a késleltetési listáról kell elküldeni. Ha a G operandust nem használjuk, az H operandus nem használható.
Az OCS hozzáférhetetlenségét mindaddig megőrzi, amíg a tranzakciót, amely a nem elérhetõ állapotba való átmenetet okozta, bejut a blokkba
A FAVAIL blokk megváltoztatja az OCU állapotát a rendelkezésre álló értékre, vagyis visszaállítja a tranzakciók CMC-be történő bevitelének normális módját. Az A-operandus által meghatározott CMC rendelkezésre álló állapotát várakozó összes tranzakció aktiválódik és megpróbálhatja elfoglalni.
A FUNAVAIL és a FAVAIL egységek alkalmazását a 6.7.5.
1. megjegyzés: A B ... H operandusok csak a korábban említett három osztály tranzakcióira vonatkoznak. Azok az egyéb tranzakciók, amelyek megpróbálják megszakítani az OKS-t már nem elérhető állapotban, nem tartalmazzák ezeket az osztályokat, és a B ... H operandusoknak semmi közük sincsük.
Megjegyzések 2. Az OKU átadása megközelíthetetlen állapotba, és lehetővé teszi a tranzakciók feldolgozását a felsorolt három osztályból, lehetővé téve a hibák kipróbálását, de különböző karbantartási szekvenciákat is.
6.2.8.2. Az egycsatornás eszköz rendelkezésre állásának és rendelkezésre állásának ellenőrzése
Az OKC állapotának ellenőrzése a nem elérhető üzemmódban a GATE blokk segítségével történik. A blokk formátumát lásd a 6.2.4 blokkban.
A tesztállapotot az alábbi feltételes állítások határozzák meg:
Az A operandus által meghatározott FNV - OKS nem áll rendelkezésre;
Az A-operandus által megadott FV - OKC elérhető.
Az első példában a GATE blokk kihagyja a tranzakciót, amikor Stan STC nem érhető el.
A második példában Transact adja át a következő blokkot, amikor CCCH elérhető, amelyek száma kerül meghatározásra a számítás eredménye, majd kerekítés integer kifejezése zárójelben (FN $ reszelő-X $ Col).
A harmadik példában, ha az OK elérhető Nyomtatás. azaz ha a GATE blokkban megadott feltétel nem teljesül, akkor a tranzakciót elküldi a Udal nevű blokknak.
Az első és a második példában a GATE blokk meghibásodási módban működik, ha a feltételek nem teljesülnek. Itt a 6.2.4. Pontban tett megjegyzés is igaz: a B operandus hiánya a szimulációs idő növekedéséhez vezethet.
6.2.9. A számítógépes idő csökkentése és a szolgáltatási tudományok megváltoztatása a felhasználói listák használatával
A számítógépes idő megóvása érdekében célszerű tiltott tranzakciókat elhelyezni a felhasználói listákon, és ott hagyni azokat addig, amíg a tranzakciók további előmozdítását lehetővé tévő feltételek nem teljesülnek. Ezenkívül lehetőséget nyújt arra is, hogy az aktuális események listáján végrehajtott, a FIFO-fegyelemtől különböző sorok sorrendjét megszervezzék.
A felhasználói lista egy puffer, amelybe ideiglenesen elhelyezhetők az ITS-ből származó tranzakciók. A jelenlegi és a jövőbeli események listáitól eltérően a tranzakciók a felhasználói listába kerülnek, és nem automatikusan, hanem a felhasználó saját döntése alapján, a modell logikáján alapulnak, speciális blokkok használatával.
Tranzakciók beviteléhez a felhasználói listához használja a LINK (enter to the list) blokkot, amely a következő módokban használható:
6.2.9.1. A bevitel a feltétel nélküli üzemmódba kerül a felhasználói listába
Feltétlen módban. a LINK blokknak a rekord formátuma van: [név] LINK A, B
Az operandus A meghatározza a felhasználó listájának nevét vagy számát, amelyben a LINK blokkba bevitt tranzakció egyértelműen el van helyezve.
A B operandert meghatározza, hogy a felhasználó bejegyzését hol kell a bevitt tranzakcióra helyezni. Érvényes értékek:
- A FIFO - ügylet a lista végén található;
- A LIFO - ügylet a lista tetején helyezkedik el;
- PR - a tranzakciók a prioritás csökkenő sorrendjében helyezkednek el;
- A P-tranzakciókat azok a tranzakciók mögé helyezik, amelyeknek a megfelelő paraméter értéke kisebb (a paraméterérték növekvő sorrendjében);
- M1 - A tranzakciók a modellben való tartózkodásuk növekvő relatív idejének sorrendjében helyezkednek el.
A B operandusként más NAV használható, kivéve a korábban megadott NAC tranzakciókat: egy aritmetikai változót, egy függvényt és egy zárójeles kifejezést. Ebben az esetben a számítást az operandus B végzi az aktív tranzakcióhoz és a már a felhasználói listán szereplő összes többi tranzakcióhoz, amely a sor kezdetétől kezdődik. Ezt követően a felhasználói listában szereplő tranzakciók sorrendje a számított érték csökkenő sorrendjében történik. Például egy blokk
a felhasználó számlistáján végzi a tranzakciókat a 3. számmal a blokkba való érkezésük sorrendjében. tömb
az Otst névvel kezeli a tranzakciókat a felhasználói listában. megrendelésük a Pol nevű paraméter növelésével.
Azon feltételek, amelyek között az ügyletet a felhasználói listára helyezzük, feltétel nélküli módban ellenőrizzük a modell fejlesztő által biztosított módon. Például, az alábbiakban részletezett forgalmú ügyfelek esetében a tranzakciót elküldheti a felhasználói listára.
Ha a CMU Rem1 foglalt, a GATE blokk nem engedélyezi az ügyletet a SEIZE blokkra. de elküldi a Wait nevű LINK blokknak. és az ügylet az Otst névvel a felhasználó listájának végén kerül beírásra.
A modell ugyanazon töredékében a felhasználói listát más módon lehet elhelyezni.
Itt a CMU Rem1-et ellenőrzik a foglalkoztatásra. Ha a CMC foglalt, a tranzakció a következő LINK blokkba kerül, és az Otst névvel rendelkező felhasználói listába kerül. Felfüggesztett OCS esetén az ügylet a MET1 jelzésű SEIZE blokkra megy, és egy szabad OCU-t foglal el.
Az itt tárgyalt példákban feltételezzük, hogy a felhasználói listák korlátlanok, azaz a tranzakciók száma tetszőleges számú lehet. Valódi rendszerek szimulálása során a felhasználói listák szimulálhatók például egy olyan bemeneti meghajtóval, amelynek kapacitása általában korlátozott. Ez a korlátozás az alábbiak szerint hajtható végre.
Ha a CMU Rem1 foglalt, a GATE blokk nem engedélyezi az ügyletet a SEIZE blokkra. de elküldi a Wait feliratú TEST blokknak. a LINK blokk előtt található. Ha az Otst névvel rendelkező felhasználói lista aktuális tartalma kisebb, mint a megadott kapacitás, az Emk. a transz-pass megy a felhasználói listához, ellenkező esetben a Term1 jelzésű blokkhoz lép.
A modell egy másik lehetséges változatát adjuk meg.
Ha a CMU Rem1 foglalt, a GATE blokk átugrik az ügyletre a TEST blokkra. Ha az Otst névvel rendelkező felhasználói lista aktuális tartalma kisebb, mint a megadott kapacitás, az Emk. A Transact megy a felhasználói listához, ellenkező esetben a Term1 jelzésű blokkhoz lép. Ha az OCS nem üres, akkor a tranzakció a Met1 jelzésű SEIZE blokkra megy és elfoglalja az ingyenes OKU Rem1-et.
6.2.9.2. Tranzakciók kibocsátása a felhasználói listáról a feltételes üzemmódban
Ha egy vagy több tranzakciót kíván kiadni a felhasználói listáról, és visszaállítja az aktuális események listájába, használja az UNLINK (lista a listából) blokkot az alábbi formátumban:
Az Operand A megadja a felhasználói listát vagy a számlistát.
A B operandus a blokk címke, amelybe az átkattintott felhasználó által definiált átmenetek átkerülnek.
Az operandus C meghatározza a kimeneti tranzakciók számát vagy az ALL kulcsszót, hogy megjelenítse a lista összes tranzakcióját. Alapértelmezés szerint, azaz amikor a C operátort nem használják, az ALL szót fogják venni.
A D és E operandusok az X feltételes operátorral együtt meghatározzák a tranzakciók kimeneti módját és feltételeit a felhasználói listáról. Az X operátor értékei megegyeznek a TEST blokk értékeivel. Abban az esetben, ha az X feltételes operátort kell használni, de nem kell megadni, akkor alapértelmezés szerint az E (egyenlőség) értékét veszi figyelembe. Ha a D és az E operandort nem használják, az X feltételes operátor nincs megadva, ebben az esetben a tranzakciók a lista elejétől származnak, és a kiszámítható tranzakciók számát a kötelező C operandus határozza meg.
Az operandus D lehet:
- Logikai változó;
- tranzakciós paraméter száma;
- a BACK kulcsszó.
Ha a D operandus Boole-változó, akkor az E operandust és az X operátort nem használjuk. Egy logikai változót értékelnek a felhasználó listán szereplő tranzakcióhoz képest. Ha az eredmény nem nulla, vagyis a kimeneti feltétel teljesül, akkor a tranzakció kimeneti. A kiszámítható tranzakciók számát a C operandus határozza meg. A kimenet azonban kisebb lehet, mint amit a C. operandus jelez, a boole-változó nem nullázott eredményeinek számában. Ezenkívül a felhasználói listában szereplő tranzakciók kisebbek lehetnek, mint a C. operandus.
Ha a D művelet megadja a BACK kulcsszót. Továbbá az E operandust és az X feltételes szolgáltatót nem használják, és a tranzakciók a lista végéről a kötelező C operandum által meghatározott összegben kerülnek kibocsátásra.
Ha a D operandus nem logikai változó, és nem egy BACK kulcsszó. meg kell határozni az E operandust és az X feltételes operátort, a D műveletet a felhasználói listán szereplő tranzakcióhoz viszonyítva kell kiszámítani, és paraméterszámként kell használni, amelynek értékét az E operandus kiszámításának eredményével hasonlítjuk össze.
Ha a D operandert egy paraméter határozza meg, és az E operandert nem használják, akkor a felhasználói listáról a tranzakciós paraméter értékét összehasonlítjuk a kimeneti tranzakció ugyanazon paraméterével. Ha egyenlőek, a tranzakció megjelenik a felhasználói listából. És ebben az esetben a kimeneti tranzakciók számát a C. operandus határozza meg.
Az F operandus adja meg annak a blokknak a nevét, ahol az UNLINK blokk elhagyó tranzakciója elhalad. ha nem szerepel a tranzakciók a felhasználói listáról. Ha az F operandert nem használjuk, akkor a kimenő tranzakció a következő blokkra vált át, függetlenül attól, hogy hány kimenő tranzakció van.