Linux Разделяемая память и Семафоры (язык С)

Отменен
Заказ
3175733
Раздел
Программирование
Предмет
Операционные системы
Антиплагиат
Не указан
Срок сдачи
22 Мая 2020 в 23:55
Цена
Договорная
Блокировка
10 дней
Размещен
2 Мая 2020 в 13:31
Просмотров
249
Описание работы

С помощью разделяемой памяти и семафоров стандарту POSIX реализовать проблему «Производитель-Потребитель» с прошлых заданий, представленнoй псевдокодом ниже. Вместо использования канала (pipeline), используйте N-элементный циклический буфер (т.е. после достижения конца буфера мы возвращаемся к его началу) помещенный в разделяемою память, где элементом буфера есть определенная фиксированная часть байтов. Доступ к общему буферу синхронизировать с помощью именованных семафоров (named semaphores) стандарту POSIX.

Буферные единицы товаров можно определить как двумерный массив и поместить его внутри структуры вместе с итераторами для "Производителя и Потребителя", например:

#define NELE 20 // Размер элемента буфера(еденицы товара) в байтах

#define NBUF 5 // Количество элементов буфера

// Сегмент разделяемой памяти typedef

struct {

char bufor[NBUF][NELE]; // Общий буфер данных

int to_put, to_take_out_of; // Позиции вставки и удаления из буфера

} SegmentPD;

Копируя область разделяемой памяти в адресное пространство виртуального процесса, должно быть сделано соответствующие проектирование типа, например:

SegmentPD *pointer = (SegmentPD *) mmap(NULL,sizeof(SegmentPD), PROT_READ,MAP_SHARED,des,0);

Затем, при использование так определенного указателя можна выполнять операции с этим сегментом, например:

pointer->to_take_out_of = (pointer->to_take_out_of + 1) % NBUF; 

Для семафоров создайте свою собственную библиотеку функций для обработки разделяемой памяти.

  • Создайте статическую библиотеку и разделяемую библиотеку (shared library) из собственных библиотек функций для обработки семафоров и разделяемой памяти; поместите их в подкаталог ./lib
  • Подать в псевдокоде обобщение решения этой проблемы для многих "Производителей" и многих "Потребителей".
Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.96
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир