DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
SystemC(mutex)
Група:
СКС
Коротко про документ

Про що ця робота

У звіті досліджено базовий канал sc_mutex у середовищі SystemC для синхронізації паралельних процесів. Наведено лістинг програми та результати моделювання взаємовиключення доступу до ресурсів.

У роботі розглядаються

  • SystemC
  • Моделювання апаратних систем
  • Семафори та взаємовиключення
  • Базові канали sc_mutex
  • Паралельні процеси
  • Синхронізація потоків
  • Програмна симуляція

Зміст і розділи

  1. Мета
  2. Завдання
  3. Теоретичні відомості
  4. Виконання лабораторної роботи
  5. Лістинг проекту
  6. Результати дослідження роботи проекту
  7. Висновок
Для кого:Студенти технічних спеціальностей, які вивчають моделювання систем та мову SystemC.
Викладачі:Не вказано

Ключові поняття

SystemCmutexsc_mutexканалпроцесlockunlocktrylockсимуляціясинхронізація

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи №5 на тему: „ SystemC: моделювання інтерфейсу на основі семафору (mutex).” Львів 2007 Мета: Ознайомитись з поняттям каналів у 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».
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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