SystemC: моделювання інтерфейсу на основі семафору (mutex).

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
Проектування комп'ютерних систем та мереж
Група:
КСМ-5

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет ,,Львівська політехніка” Кафедра електронних обчислювальних машин  Звіт до лабораторної роботи№5 з дисципліни: ,,Проектування комп'ютерних систем та мереж” виконав ст.гр.КСМ-5 Львів – 2007 Тема: SystemC: моделювання інтерфейсу на основі семафору (mutex). Мета: Ознайомитись з поняттям каналів у SystemC на прикладі проекту «Mutex». Завдання: 1.Заванажити до середовища SystemC проект mutex та запустити його на виконання. 2.Ознайомитись з результатами та зробити висновки. Теоретичні відомості: SystemC має вбудовані механізми, відомі як канали, призначені для полегшення рутинної праці , інкапсулюючи засоби організації взаємозв’язку між паралельними процесами. SystemC має два типи каналів: базові та ієрархічні. Базовий канал sc_mutex У програмуванні mutex (mutual exclusion – взаємовиключення) - це об’єкт «семафор», який дозволяє багатьом програмам здійснювати потоковий спільний доступ до певного ресурсу, наприклад, до файлів, без колізій. У SystemC sc_mutex – це наперед визначений базовий канал, призначений для моделювання поведінки механізму синхронізації доступу паралельних процесів до спільних ресурсів. sc_mutex має власні наперед визначені методи: - int lock() – блокує семафор, якщо він є розблокований, в іншому випадку очікує факту розблокування; - int unlock()- розблоковує семафор; - int trylock() – перевіряє чи семафор є вільним; якщо так – блокує його, в іншому випадку повертає «-1». Прикладом використання семафору може бути керування спільною шиною. class bus { sc_mutex bus_access; void write(int addr, int data) { bus_access.lock(); // perform write bus_access.unlock(); } };//endclass Виконання лабораторної роботи: 1.Лістинг проекту: #include <systemc.h> SC_MODULE( mod_a ) { sc_mutex mutex; void write( const char* msg ) { cout << sc_simulation_time() << " " << msg << endl; } void proc_a() { while( true ) { wait( 1, SC_NS ); write( "proc_a - lock requested" ); mutex.lock(); write( "proc_a - lock obtained" ); wait( 2, SC_NS ); if( mutex.unlock() == 0 ) { write( "proc_a - unlock successful" ); } else { write( "proc_a - unlock failed" ); } wait( 3, SC_NS ); if( mutex.trylock() == 0 ) { write( "proc_a - trylock successful" ); } else { write( "proc_a - trylock failed" ); } if( mutex.unlock() == 0 ) { write( "proc_a - unlock successful" ); } else { write( "proc_a - unlock failed" ); } } } void proc_b() { while( true ) { wait( 2, SC_NS ); write( "proc_b - lock requested" ); mutex.lock(); write( "proc_b - lock obtained" ); wait( 4, SC_NS ); if( mutex.unlock() == 0 ) { write( "proc_b - unlock successful" ); } else { write( "proc_b - unlock failed" ); } wait( 3, SC_NS ); if( mutex.trylock() == 0 ) { write( "proc_b - trylock successful" ); } else { write( "proc_b - trylock failed" ); } if( mutex.unlock() == 0 ) { write( "proc_b - unlock successful" ); } else { write( "proc_b - unlock failed" ); } } } SC_CTOR( mod_a ) { SC_THREAD( proc_a ); SC_THREAD( proc_b ); } }; int sc_main( int, char*[] ) { mod_a a( "a" ); sc_start( 20, SC_NS ); return 0; } 2.Результати дослідження роботи проекту:  Висновок: На даній лабораторній роботі я ознайомився з поняттям каналів у SystemC на прикладі проекту «Mutex».
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!