Ответ: Критическая секция рассматривается в "Логическое проектирование ОС" Шоу, 1974
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено TMX 23 октября 2004 г. 12:45
В ответ на: ммм. запрещать прерывания это не по нашему, а вот насчет критичекой секции хотелось бы глянуть реализацию (-) отправлено DASM 23 октября 2004 г. 11:38

Также можно посмотреть Кейслер "Проектирование ОС для малых ЭВМ",1983.
Смысл в том, что надо организовать неделимую операцию "проверка занятости - захват если свободно".
Поскольку в примере - процессы неравнезначны, иожно сделать следующее:
1. отключать прерывания
2. организовать двухуровневую проверку (как и есть)
3. организовать неравнозначную проверку:
А данном случае (пусть 0 - свободно, !0 - занято)
в фоновой задаче - сначала захватить, потом проверить
if (++sem > 1)) sem--, return;
в прерывании - сначала проверить, потом захватить
if (sem) return; else sem++;
Способ придумал я, поэтому лучше проверить.
4. вынести обработку на уровень задачи
На мой взгляд, лучше один раз сделать нормальную функцию захвата однобитового семафора, чем каждый раз изобретать лисапет.
А чем плохо корректное запрещение прерываний? В системах РВ - главное предсказуемость, а не скорость.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru