Tierra szimulációs rendszer

Darwini operációs rendszer

Darwini operációs rendszer

Slicer

A Slicer egy körré formált sor (queue) adat szerkezettel rendelkezik, a virtuális gépben futó folyamatok számára. A Slicer allokálja a CPU időszeleteket a sorban lévő folyamatoknak. A kapott időszelet mérete befolyásolja a folyamat által végrehajtható gépi utasítások számát. Az időszelet mérete lehet fixen meghatározott, véletlen változó alapján kiosztott vagy függhet a folyamat méretétől. A folyamatok születésükkor kerülnek a silcer sorába, pontosan a szülő folyamatuk utáni pozicióra.

Reaper

A Reaper egy közönséges sor (queue) adat szerkezettel rendelkezik a virtuális gép folyamatai számára. Az újonnan született folyamatok a sor alján lépnek be. Amikor a memória betelik, akkor a Reaper terminálja a Reaper sor tetején lévő folyamatot, majd eltávolítja a terminált folyamatot mind a Slicer, mind a Reaper sorából. Az eltávolított folyamat által allokált memória felszabadításra kerül, viszont a terminált folyamat kódja nem lesz eltávolítva, benne marad a soup-ban. Elős megközelítésben látható, hogy az idősebb folyamat terminálódik (hal meg) előbb. A Reaper ezen kívűl még terminálhat egy - a Reaper sor felső adott X%-ból - véletlenszerűen kiválasztott folyamatot. Amikor egy folyamat egy hibát generál (sikertelen mal vagy divide utasítás), akkor a folyamat feljebb lép egyet a Reaper sorban. Sikeres mal vagy divide esetén azonban lejjeb lép egyet a folyamat a Reaper sorban.

Memória allokálás

A memória allokálás összeköttetésben áll a Reaper-el. Amikor egy memória allokáció kérést nem lehet teljesíteni, mert nincs adott mennyiségű szabad memória, akkor a Reaper működésbe lép és terminál annyi folyamatot, hogy az általuk felszabadított memória elegendő legyen a legutóbbi memória allokáció kérés kiszolgálására. A memória kérések limitálva vannak, az első blokk méretének egy adott számszorosával (N*first_block_size).

Zavarok

A (mesterséges) zavarok a nem várt természeti események szimulációja. A virtuális gép szabályozott vagy szabálytalan időpillanatokban terminálhatja egyes folyamatok populációját. Indítási paraméterben megadható, hogy adott populációk hány százaléka kerüljön terminálásra és ez milyen időbeli minta szerint történjen meg.