Поток 2 – сервер, ему отправляют пульсы потоки 3 и 4. На рис. 20 отправка пульса заняла 1.8 мс, а на рис. 21 всего 250 мкс. Различие времен связано с диспетчеризацией потоков и не является объективным показателем для оценки быстродействия механизма обмена пульсами.
для файловой модели,
Write.c
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char* argv[])
{
int file;
char buffer[] = {"Message\n"};
while(1){
file = creat (argv[1], 666);
write (file,buffer ,sizeof(buffer));
close (file);
sleep(1);
}
return (EXIT_SUCCESS);
}
Read.c
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int file;
int size_read;
char buffer[100];
while(1){
file = open(argv[1], O_RDONLY );
sleep(1);
size_read = read( file, buffer, sizeof( buffer ) );
if( size_read == -1 )
{
printf( "Error reading %s", argv[1] );
return EXIT_FAILURE;
}
close( file );
printf ("%s", buffer);
}
return EXIT_SUCCESS;
}
Рис. 22.
На рис. 22 видно, что в данной реализации обмена сообщений процессы отправки и чтения не зависят друг от друга, однако это может вызвать конфликты. Оптимальным решением этой проблемы является использование семафоров и разделяемой памяти.
Вышеописанный инструмент позволяет провести не только динамический, но и статический анализ кода. Для этого в конфигурации запуска Run -> Run Configuration ->Tools выбрать метод профилирования Sampling and Call Count Instrumentation. Кроме того, необходимо автоматически переключиться на окно этого инструмента при запуске.
Рис. 23
На рис. 24 приведены результаты статического анализа программы, в которой пульсами обмениваются потоки.
Рис. 24
На рис. 24 видно, что при данной реализации на выполнение потоков отводятся равные временные ресурсы.
Выводы:
В процессе выполнения данной работы произведено знакомство с проектированием систем реального времени с помощью интегрированной среды разработки QNX Momentics IDE – от написания кода до системного анализа. В результате получен навык работы со средствами отладки программ, анализа системы, профилирования приложений и системы. В результате выполнения профилирования разных вариантов отправки сообщений и пульсов выяснилось, что отправка сообщения средствами микроядра QNX занимает меньшее время, чем отправка сообщения функциями POSIX.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.