Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

C-Sim verze 5.0. Charakteristika Softwarový nástroj pro simulaci v diskrétním čase Použitá metodou paralelních procesů Navržen podle vzoru jazyka SIMULA.

Podobné prezentace


Prezentace na téma: "C-Sim verze 5.0. Charakteristika Softwarový nástroj pro simulaci v diskrétním čase Použitá metodou paralelních procesů Navržen podle vzoru jazyka SIMULA."— Transkript prezentace:

1 C-Sim verze 5.0

2 Charakteristika Softwarový nástroj pro simulaci v diskrétním čase Použitá metodou paralelních procesů Navržen podle vzoru jazyka SIMULA

3 Typy systémů Dynamické versus statické Spojité vs. diskrétní Otevřené vs. uzavřené Deterministické vs. stochastické

4 Metody diskrétní simulace Metoda interpretace událostí Metoda pseudo-paralelních procesů

5

6 Simulační krok (csim_step()) Spustí se proces na prvním místě kalendáře (vytvoří se nový proces nebo se předá se řízení existujícímu procesu) a zvýší se hodnota simulačního času. Proces vykonávající hlavní smyčku se zastaví. Provede se část kódu po kterou je konstantní simulační čas Spustí se proces s hlavní smyčkou a zastaví se proces z kalendáře

7 Stavy procesu

8 Implementace založená na dlouhých skocích funkce setjmp() uloží obsah registrů procesoru do struktury v paměti funkce longjmp() obnoví obsah registrů z paměti, výpočet pokračuje na místě volání setjmp(), zda jde o prvotní uložení nebo o návrat se rozliší podle návratové hodnoty setjmp().

9 Makro pro přepnutí procesů #define csim_switch_processes(from, to) if (setjmp(from->rollback) == 0) { longjmp(to->rollback, 1); }

10 Implementace založená na vláknech pro každý proces je vytvořeno jedno vlákno, hlavní smyčka simulace běží ve vlákně které vytváří a ukončuje všechnu ostatní vlákno má proměnnou thread_run, podmínkovou proměnnou (cond_var typu pthread_cond_t) a mutex (pthread_mutex_t).

11 Makro pro přepnutí procesů pthread_mutex_lock(&(_p_from->mutex)); _p_from->thread_run = FALSE; pthread_mutex_lock(&(_p_to->mutex)); _p_to->thread_run = TRUE; pthread_mutex_unlock(&(_p_to->mutex)); pthread_cond_signal(&(_p_to->cond_var)); while (_p_from->thread_run != TRUE) pthread_cond_wait (&(_p_from->cond_var), &(_p_from->mutex)); pthread_mutex_unlock(&(_p_from->mutex));

12 Porovnání implementace Dlouhé skoky Lepší přenositelnost Vyšší rychlost Nelze používat automatické proměnné Nelze vnořovat volání funkcí

13 Porovnání implementace POSIX vlákna Platforma musí podporovat POSIX vlákna Nižší rychlost Vlastní zásobník

14 Datové typy Jako v SIMULE: CSIM_LINK, CSIM_HEAD, CSIM_PROCESS Všechny odvozené od CSIM_DYN_MEM

15 Hierarchie datových typů

16 Mechanizmus odvozování datových typů Náhrada za dědičnost v objektovém jazyce pomocí maker typedef struct my_process { csim_d_process; int my_data; } MY_PROCESS;

17 Další vlastnosti Detekce chyb za běhu Statistika

18 Struktura a moduly

19 Použití Vložit hlavičkové soubory Definovat typy pro procesy (pokud je třeba) Napsat programy procesů Napsat hlavní smyčku

20 Typ procesu typedef struct { csim_d_process; float mi; float lambda; } WORKER;

21 Program procesu csim_program(WORKER, WORKER_PROG) for (;;) { csim_hold (csim_negexp(rng, my.lambda)); csim_lock_sem(p_sem); csim_hold (csim_negexp(rng, my.mi)); csim_unlock_sem(p_sem); } csim_end_program

22 Inicializace csim_init_mem(); p_sem = csim_new_semaphore(1); rng = csim_new_rng(1234); for (i=0; i<N; i++) { p_wrks[i] = csim_new_process(WORKER, WORKER_PROG); p_wrks[i]->mi = 1; p_wrks[i]->lambda = 0.5; csim_activate_at((CSIM_PROCESS *) p_wrks[i], 0); }

23 Hlavní smyčka while(csim_time() < 1000000.0) { if (csim_step() == FAILURE) { CSIM_ERROR er; csim_error(&er); printf("%s\n", csim_error_msg(er.error_code)); break; } csim_clear_mem();


Stáhnout ppt "C-Sim verze 5.0. Charakteristika Softwarový nástroj pro simulaci v diskrétním čase Použitá metodou paralelních procesů Navržen podle vzoru jazyka SIMULA."

Podobné prezentace


Reklamy Google