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.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Standardní knihovní funkce pro práci s textovými řetězci
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Programovací jazyk C++
Přednáška 11 Jiří Šebesta
Programování 2 Cvičení 5.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
10. Dynamické datové struktury
Zásobník (LiFo) Fronta (FiFo)
 Vyhledání míst v programech vhodných pro optimalizaci  Sleduje se četnost volání a trvání jednotlivých částí programu JetBrains dotTrace Profiler.
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Úvod Klasifikace disciplín operačního výzkumu
Softwarový systém DYNAST
Doporučená literatura: *HUŠEK, R., LAUBER, J.: Simulační modely.. SNTL/Alfa Praha,1987. * NEUSCH L, S. A KOLEKTIV: Modelovanie a simulacia.. SNTL Praha,
C# pro začátečníky Mgr. Jaromír Osčádal
If-else, do-while, switch, operátory
Programování v C++ Cvičení.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
● SWIG - Simplified Wrapper and Interface Generator ● + google a diskusní fóra ● nástroj zjednodušující (a sjednocující)
Algoritmizace a programování
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
Datové struktury. 2 Co je datová struktura v C datový typ složený z jiných datových typů nejjednodušší datová struktura je pole. všechny jeho prvky jsou.
Řešení dynamických problémů s podmínkami Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta.
SYSTÉMOVÁ TŘÍDA SIMULATION Třída SIMULATION je třetí systémovou třídou, která obsahuje prostředky pro vytváření diskrétních simulačních modelů. Je podtřídou.
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
SIMULACE MANAŽERSKÝCH ROZHODOVACÍCH PROCESŮ Úvodní část.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Softwareová architektura
Migrace kódu a procesů Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Simulační modely a programové vybavení. Vývoj simulačních programů  Původně pouze strojový kód –Příliš dlouhé, náročné na programátora, obtížné hledání.
2 CYKLUS S PEVNÝM POČTEM OPAKOVÁNÍ Podle řídící proměnné proveď n-krát příkaz P1.
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Hlášky Hlášky v JavaScriptu jsou trojího typu: Hlášky v JavaScriptu jsou trojího typu: Alert Alert Prompt Prompt Confirm Confirm Alert – zobrazí upozorňovací.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic 1.
NEÚPLNÁ PODMÍNKA V JAVĚ. VÝVOJOVÝ DIAGRAM +- Podmínka Příkaz_1.
Tvorba simulačních modelů. Než vznikne model 1.Existence problému 2.Podrobnosti o problému a o systému 3.Jiné možnosti řešení ? 4.Existence podobného.
A1PRG - Programování – Seminář Ing. Michal Řízení běhu programu 5 Verze
PROGRAMOVÁNÍ V PHP PERSONAL HOME PAGES CYKLY V PHP.
Vnitřní (operační paměť)
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
1/28 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Vlákna 06.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Základy operačních systémů Meziprocesová komunikace a synchronizace Jakub Yaghob.
Optimalizace versus simulace 8.přednáška. Obecně o optimalizaci  Maximalizovat nebo minimalizovat omezujících podmínkách.  Maximalizovat nebo minimalizovat.
Systémy. Definice systému Systém je množina navzájem souvisejících prvků a vztahů mezi nimi.
Informační systém podniku Tomáš Vaníček Stavební fakulta ČVUT Thákurova 7, Praha Dejvice, B407
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Programovací jazyk C++
Y36PJC Programování v jazyce C/C++
Monte Carlo Typy MC simulací
Ovládání interaktivity
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Databázové systémy a SQL
Správa paměti.
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
5a. Makra Visual Basic pro Microsoft Escel
Fronta (1) Dynamická datová struktura typu FIFO (First In First Out)
C# přehled vlastností.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Přepínání procesů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Paměť.
Union neboli sjednocení Bitová pole
Transkript prezentace:

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

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

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

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

Stavy procesu

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().

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

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).

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));

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

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

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

Hierarchie datových typů

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;

Další vlastnosti Detekce chyb za běhu Statistika

Struktura a moduly

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

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

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

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); }

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