[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: В данном конкретном случае можно и одним флагом обойтись.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено trainer 17 января 2002 г. 21:22
В ответ на: вопрос по доступу двух процессоров к общей памяти отправлено yes 17 января 2002 г. 13:32

Если есть два процессора - передающий (1) и принимающий (2), то техника работы следующая :
исходно флаг сброшен - для (2) это признак неготовности данных
(1) пишет в память структуру, после чего устанавливает флаг.
(2) считывает флаг, определяет , что данные готовы - флаг установлен, обрабатывает их и после этого сбрасывает флаг.
Пока (2) обрабатывает данные, флаг все еще установлен, (1) считывает флаг, видит это, что для него является сигналом занятости памяти, и ждет, пока флаг не будет сброшен. Когда он определяет, что флаг сброшен, он может снова повторять вышеописанную процедуру.
При этом в любой момент времени только один из процессоров пишет в флаг и в структуру.
Для (1) установленный флаг означает занятость памяти другим процессором и возможное некорректное содержание этого участка памяти. Для (2) установленный флаг означает предоставление ему данного участка памяти для монопольной записи.

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

Ответы



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

E-mail: info@telesys.ru