[an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено SM 17 октября 2006 г. 16:45
В ответ на: Ответ (+) отправлено <font color=gray>homekvn</font> 17 октября 2006 г. 16:26

текущее состояние всех задач - это по одной ячейке памяти на задачу. Они доступны всем задачам - и это нормально, когда одна задача смотрит, что другая находится в таком-то состоянии, а третья - в третьем, и базируясь на этой информации ничего не делая незамедлительно выходит, ожидая освобождения ресурса процессора для своей низкоприоритетной деятельности.

Семафоры я естественно делаю, но суть в том, что с ними работать проще, так как исключен конфликт одновременного доступа к семафору из двух задач, так как задача не может быть прервана кем-то "свыше" ради переключения на другую, пока она сама не доработает свою часть труда. Итого все семафоры с их обычной для ОС защитой от переключения задач всередине работы с семафором вырождаются в обычные ячейки памяти без какой либо защиты.

А "незамедлительно прервать" - легко. Как только какая-то задача решает, что наступило такое событие, она помещает в очередь входных данных для той самой сверхприоритетной задачи какую-то информацию, и выходит в основной цикл. А в основном цикле стоит - что пока что-то в очереди есть, должны исполняться только "сверхприоритетные" задачи, а остальные - отдыхать.

P.S. Я нигде не говорил, что семафоров нет. Я говорил, что они проще реализуются, просто шмоток "shared memory".

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

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание