DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Використання семафорів і мютексів для реалізації доступу до спільних ресурсів системи.

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

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

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Інші

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

Міністерство освіти та науки України Національний університет “Львівська політехніка” Кафедра ЕОМ Лабораторна робота №4 з диципліни: «Програмовані системи реального часу» на тему: «Використання семафорів і мютексів для реалізації доступу до спільних ресурсів системи.» Мета роботи: навчитись використовувати семафори і мютекси для реалізації доступу до спільних ресурсів системи. Теоретичні відомості Розробити програму, в якій декілька задач імітують доступ до деякого спільного ресурсу використовуючи семафори та м’ютекси. Кожна із задач захоплює ресурс на випадковий інтервал часу із наперед заданого діапазону , який є однаковим для всіх задач. Якщо ресурс є недоступний протягом часу , то надсилається повідомлення про помилку. Окрім задач, які саму імітують використання ресурсу, існує додаткова задача, яка виводить повідомлення про те, яка із задач отримала спільний ресурс і повідомлення про помилку, якщо вибраний ресурс не був доступний в межах заданого інтервалу часу. Окрім виводу повідомлень про використання певних ресурсів, додаткова задача здійснює збір статистичних даних про мінімальний, середній і максимальний час доступу до ресурсу для кожної із задач. Виконати дві реалізації програми – використовуючи семафори та використовуючи м’ютекси для реалізації доступу до спільного ресурсу. Порівняти отримані результати для часу доступу із використанням механізму семафорів і механізму м’ютексів. Пояснити відмінності в отриманих часових параметрах. Програмна реалізація static void TaskStartCreateTasks (void) { INT8U i; for (i = 0; i < N_TASKS; i++) { /* Create N_TASKS identical tasks */ TaskData[i] = '0' + i; /* Each task will display its own letter */ OSTaskCreate(Task, (void *)&TaskData[i], &TaskStk[i][TASK_STK_SIZE - 1], i+10 ); } OSTaskCreate(StatisticTask,NULL,&StatisticTaskStk[TASK_STK_SIZE - 1],StatisticPrio); } /******************************** TASKS ********************************/ void Task (void *parg) { INT8U r; INT8U err1,err2; struct QStruct *elem; randomize(); for (;;) { OSSemPend(RandomSem, T3, &err1); elem=(struct QStruct *)OSQPend(QFree,0,&err2); elem->ErrCode=err1; elem->NumTask= (INT8U )(*(char *)parg - '0'); elem->Time = 0; if (err1 == OS_NO_ERR) { r =(INT8U)random(T2-T1); elem->Time = r; OSTimeDly(r); r=0; OSSemPost(RandomSem); } OSQPost(QNFree,(void *)elem); } } void StatisticTask (void *parg) { INT8U i; INT8U err; char str[5]; struct QStruct *elem; struct Times{ INT8U TMin; INT8U TMax; INT8U T; } MasTime[N_TASKS] = {175,0,0, 45,0,0, 255,0,0} ; for (;;) { elem=(struct QStruct *)OSQPend(QNFree,0,&err); OSQPost(QFree,(void *)elem); MasTime[elem->NumTask].T = elem->Time; if (MasTime[elem->NumTask].T>MasTime[elem->NumTask].TMax) MasTime[elem->NumTask].TMax = MasTime[elem->NumTask].T; if ((MasTime[elem->NumTask].T<MasTime[elem->NumTask].TMin)&&(MasTime[elem->NumTask].T!=0)) MasTime[elem->NumTask].TMin = MasTime[elem->NumTask].T; PC_DispChar(3,elem->NumTask+10, elem->NumTask+'1', DISP_FGND_YELLOW + DISP_BGND_BLUE); PC_DispStr(10,elem->NumTask+10," ", DISP_FGND_YELLOW + DISP_BGND_GREEN); PC_DispStr(10,elem->NumTask+10,itoa(MasTime[elem->NumTask].T,str,5), DISP_FGND_YELLOW + DISP_BGND_BLUE); OSTimeDly(10); } } Результати виконання  Висновок: Під час виконання даної лабораторної роботи я навчився використовувати семафори і мютекси для реалізації доступу до спільних ресурсів системи процесора.
Антиботан аватар за замовчуванням

22.03.2013 13:39

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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