Интерпроцессная передача данных в операционных системах

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

Блоки SoC Blockset™ Interprocess Data Read, Interprocess Data Channel и Interprocess Data Write моделируют коммуникацию между двумя процессами, управляемыми операционной системой. Чтобы создать односторонний канал данных между двумя процессами, добавьте блок Interprocess Data Write в первый образец модели процесса, которая отправляет данные. Затем добавьте блок Interprocess Data Read в другой образец модели процесса, которая получает данные. В каждой модели выставляйте порты событий модели верхнего уровня с помощью блоков Outport и Inport, соответственно. Наконец, соедините порты событий в модели верхнего уровня с помощью блока Interprocess Data Channel.

Двухсторонняя межпроцессная связь

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

Модель

Process1 отправляет сообщение данных, используя блок Interprocess Data Write, в блок Interprocess Data Channel с интервалом 0,01 секунды. Process2 получает и обрабатывает сообщения данных асинхронно, используя блок Interprocess Data Read. Обработанные данные возвращаются к первому процессу и принимаются асинхронной задачей.

Результаты

На вкладке Simulation нажмите запуск. Когда симуляция завершится, откройте Данные Моделирования Inspector, чтобы просмотреть получившиеся сигналы и выполнения задачи. Process1 отправляет пакет данных по завершении Task11. Task21 в Process2 триггерах при получении события, обрабатывает пакет данных и отправляет пакет обратно в Process1. Task12 в Process1 выполняется сразу после приема пакета данных, прерывая Task11.

См. также

| | |