|
Народ, что думаешь про эту писанину? В принципе, это статья :) |
|
|
|
Feb 19 2006, 09:07
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
В настоящее время при создании систем цифровой обработки сигналов широко используется понятие «Операционная Система Реального Времени» или RTOS (Real Time Operating System). Подразумевается, что эта система многозадачная, имеет средства для синхронизации независимо исполняемых программных модулей и обмена информации между ними. В принципе, под это понятие попадает любая Операционная Система (ОС), которая имеет ограничение времени отклика на любой запрос, как со стороны аппаратной части, так и со стороны исполняемых программных модулей. Но использование RTOS, к сожалению, не гарантирует режима реального времени для всего аппаратно-программного комплекса, всей системы в целом. Причина состоит в том, что необходимо учитывать собственно задачи и аппаратную часть. Введем новое понятие – Система Реального Времени, которое распространяется не только на RTOS, но и на исполняемые задачи и аппаратную среду.
Система Реального Времени (СРВ) - это программно-аппаратный комплекс, который обеспечивает возможность прохождения исполняемыми программными модулями неких контрольных (реперных) точек за заданное время.
Иными словами, все задачи, исполняемые в такой системе, должны успевать обрабатывать данные за заранее оговоренное количество тактов процессора. Из этого определения можно получить следующие следствия:
1. Задачи должны исполняться одновременно и, следовательно, в режиме разделенного времени. 2. Задачи не должны прерывать друг друга и, следовательно, они все имеют одинаковый приоритет.
Последнее следствие неочевидно, поэтому остановимся на нем особо. Когда одна задача прерывает другую? Когда ресурсов системы не хватает на обе задачи одновременно. Т.е. прерывание задачи приведет к тому, что прерванная задача не успеет обработать данные (пройти реперную точку) за оговоренное время. Таким образом, при прерывании одной задачи другой, не выполняется условие для Системы Реального Времени. Если же ресурсов хватает на всё, то необходимость прерывания одной задачи другой отпадает. Естественно, если задачи не конкурируют между собой за ресурсы, то присваивание им приоритетов не имеет смысла.
Рассмотрим один из способов реализации СРВ. Наложим следующее условие: требование к аппаратной части и исполняемым задачам должны быть минимальны. Имеется в виду, что задачи и процессор никак между собой не связаны и не влияют друг на друга. Т.е. весь интерфейс по их взаимодействию поддерживается только RTOS. Теперь мы можем определить алгоритм функционирования Операционной Системы Реального Времени. 1. Т.к. несколько задач выполняется параллельно, то предлагается применить методологию выполнения нескольких программных блоков в «разделенном времени». Иначе говоря, система порождает тики, которые следуют через строго определенное время. Время между двумя тиками называется фреймом. В течение фрейма работает только одна задача. По окончании фрейма, если это необходимо, может начать работать следующая задача, либо продолжить работу предыдущая. Чередованием задач управляет Планировщик исходя из расписания. Планировщик также должен запускать процедуру сохранения и восстановления контекстов задач. На этом его функции заканчиваются. Тики организуются при помощи прерывания от таймера, обработчиком которого и выступает Планировщик. 2. Кроме планировщика, должен существовать программный модуль, принимающий по особому каналу команды для системы и доводящий эти команды до конкретных задач. Предлагается обработчик команд запускать в начале каждого фрейма. 3. Важной частью RTOS являются драйвера. По причинам, изложенным ниже, драйвера должны запускаться также каждый тик.
Наложим дополнительные ограничения на Систему Реального времени. Пусть она перерабатывает некую входную информацию, организованную в виде потоков, в информацию выходную, организованную подобным же образом (как выходные потоки). А задачи, работающие в реальном времени и параллельно, выполняют эту переработку. Это приводит к следующему: потоковая информация – это непрерывная последовательность неких чисел, следовательно, ее лучше всего обрабатывать по-блочно. Т.е. входные числа организуются в некий буфер, который передается задаче для обработки. Но время обработки этого буфера задачей может оказаться больше времени между приходом двух входных отсчетов. Потому для подобных систем, ориентированных на поточную обработку в реальном времени имеет смысл применить зеркальные буфера. Как они работают можно увидеть на следующем примере. Пусть есть два входных буфера А1 и А2, а так же два выходных В1 и В2. Когда буфер А1 перерабатывается задачей в буфер В1, один драйвер RTOS заполняет из входного потока буфер А2, а другой из выходного буфера В2 формирует выходной поток. После того как Буфер А1 переработан в В1, буфер А2 заполнен, а буфер В2 опустошен, меняются местами А1 и А2, В1 и В2. Теперь задача перерабатывает буфер А2 в В2, А1 заполняется из входного потока, а из В1 данные отправляются в выходной поток. Затем буфера снова меняются местами. В том случае, если буфера достаточно длинные, а входной и выходной поток – короткие порции информации, то «набивка» входных буферов и выходных потоков должна происходить каждый фрейм, чтобы избежать потери данных.
Исходя из вышесказанного, определим формальную структуру задачи для такой системы реального времени. Предлагается разделить задачу на алгоритмическую часть и данные. Это может быть особенно интересно для систем, реализованных на сигнальных процессорах DSP, потому как там обычно применяется Гарвардская Архитектура, когда память программ и память данных разделены. Алгоритмическая часть делится на три блока: процедура восстановления контекста, тело задачи и процедура сохранения контекста. Данные делятся тоже на три типа: управляющие данные, стек (или контекст задачи) и входные/выходные буферы. Таким образом, задача оформляется в виде следующей С-фунции:
task( descriptor* ddd) { …. }
Дескриптор тоже должен иметь некую структуру. Например:
typedef struct { int Status; int FrameNumber; int CurrentFrameNumber; int StackPointer; void* ContextResoring; void* FunctionBody; void* ContextSaving; int* *InputBuffer1; … int* *InputBufferN; int* *OutputBuffer1; … int* *OutputBufferN; int Control1; … int ControlN; int Service1; … int ServiceN } descriptor;
Status – переменная, которая характеризует статус задачи. Допустимые значения: 0 – задача пассивна, т.е. Планировщик ее всегда пропускает. 1 – задача активна и готова к выполнению. Планировщик, запуская эту задачу, присваивает статусу значение 2. 2 – задача исполняется. Пассивный статус, выставляет себе сама задача. Например, задача является некой инициализацией. Тогда, выполнившись один раз, она более не запускается. FrameNumber – количество фреймов, которые отводятся под выполнения данной задачи. Отвод под задачу одновременно нескольких фреймов, позволяет сэкономить на перезагрузке контекста и распределить производительность процессора оптимально между задачами. CurrentFrameNumber – количество фреймов, которые задача уже выполняется. StackPointer – текущий указатель стека данной задачи. ContextResoring – указатель на процедуру восстановления контекста. FunctionBody – указатель на тело задачи. ContextSaving – указатель на процедуру сохранения контекста. *InputBufferN - указатель на указатель входного буфера. Это удобно для переключения зеркал буферов, т.к. для этого в эту переменную всего лишь подставить указатель на новый буфер. *OutputBufferN - указатель на указатель выходного буфера ControlN – команды управления для данной задачи, формируемые особым программным модулем. ServiceN – служебные переменные.
Наконец, рассмотрим синхронизацию и коллизии одновременного доступа к ресурсам нескольких задач одновременно. Предлагается разрешить эту проблему при помощи простейшего системного ресурса – флага. Любому ресурсу общего пользования может быть присвоен флаг. Флаг может иметь только два значения: 0 – ресурс свободен, 1 – ресурс занят. Непосредственный доступ к флагу никто не имеет. Изменить флаг можно только API-функциями, которые реализованы, как квантовые операции через критические секции. Иными словами, на момент доступа API-функции к флагу запрещены все прерывания. В конце сделаем несколько полезных пожеланий: 1. Необходимо, по-возможности, объединять в одну задачу несколько подзадач с целью сокращения количества используемых стеков и уменьшения накладных расходов на перезагрузку контекстов. 2. Не использовать в задачах глобальные переменные, используя для подобных целей только дескриптор задач. Это позволит взять под контроль все источники воздействия на задачу, что чрезвычайно важно на этапе отладки. 3. Скрывать от задач «зеркальность» входных/выходных буферов. Это не требует больших накладных расходов (реализуется при помощи указателей на указатель буфера), но существенно упрощает саму задачу. 4. Максимально использовать API-протокол для каких либо внешних взаимодействий. Теперь подведем итоги. В данной статье была определена типовая структура RTOS для задач Цифровой Обработки Сигнала. Описаны программные модули, на которых она строиться и их принцип функционирования. Определена формальная структура задачи и сделан практически важный для аппаратной части вывод, о возможности использования в системе только одного прерывания (от таймера) и отказа от приоритетов.
|
|
|
|
|
 |
Ответов
|
Feb 20 2006, 07:59
|
Местный
  
Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458

|
Цитата(st256 @ Feb 19 2006, 13:07)  В настоящее время при создании систем цифровой обработки сигналов широко используется понятие «Операционная Система Реального Времени» или RTOS (Real Time Operating System). Во-первых, RTOS - термин намного шире, чем "создании систем цифровой обработки сигналов" - много чести будет  - для отдельной прикладной области городить столь сложное изделие как RTOS... Во-вторых, само "реальное время" - во многом спекулятивный и спорный термин, вот хоть здесь см.: http://qnxclub.net/files/articles/RemarksO...TheMargins.html- и требовал бы намного более строгого использования, чтобы использоваться именно как термин, а не только для солидности изложения  . Цитата(st256 @ Feb 19 2006, 13:07)  2. Задачи не должны прерывать друг друга и, следовательно, они все имеют одинаковый приоритет.
Последнее следствие неочевидно, ... Последнее следствие не только не очевидно, но, как на мой взгляд - и глубоко ошибочно... Для анализа фиксированных deadline-ов параллельно выполняющихся задач - есть, по крайней мере, немного строгих математических моделей анализа и предсказания поведения: http://qnxclub.net/files/articles/rta/rta.dochttp://qnxclub.net/files/articles/rms/rms.doc- и все они строятся в предположении наличия в исполняющей системе большого числа уровней приоритетов... а без этого так и не придумали формальных математических технологий анализа, и всё становится на уровне умозрительных "доказательств": "... а мне кажется что здесь мы укладываемся в критический интервал..." - " ... а мне так не кажется..."  И то же самое (рост числа уровней приоритетов) наблюдается в реально используемых RTOS: VxWorks - 256 уровней, QNX 6.2.1 - 64 -> QNX 6.3 - 256 - на лицо миграция к большему числу... Но уж, по-крайней мере, если если уж утверждать нечто, противоречащее общей в мире практике на протяжении 10-20 лет принятой - то это что-то нужно уж о-о-о-очень сильно доказывать... Цитата(st256 @ Feb 19 2006, 13:07)  Когда одна задача прерывает другую? Когда ресурсов системы не хватает на обе задачи одновременно. Т.е. прерывание задачи приведет к тому, что прерванная задача не успеет обработать данные (пройти реперную точку) за оговоренное время. Совсем не так! - это только 1 из многих частных случаев... Задача может прерывать другую - когда для неё наступит асинхронное событие, которого она молча, может быть, 3 часа ожидала - это классика всех сетевых обменов... Или задача может прерывать другую, когда для неё сработают взведенные ею таймерные процедуры - а это целая область специальных техник в RT-программировании (таймеры и всё с ними связанное)... Цитата(st256 @ Feb 19 2006, 13:07)  Таким образом, при прерывании одной задачи другой, не выполняется условие для Системы Реального Времени. Если же ресурсов хватает на всё, то необходимость прерывания одной задачи другой отпадает. Естественно, если задачи не конкурируют между собой за ресурсы, то присваивание им приоритетов не имеет смысла. Всё это умозрительно, "на пальцах" и ... не убеждает.  Цитата(st256 @ Feb 19 2006, 13:07)  1. Т.к. несколько задач выполняется параллельно, то предлагается применить методологию выполнения нескольких программных блоков в «разделенном времени». Иначе говоря, система порождает тики, которые следуют через строго определенное время. Время между двумя тиками называется фреймом. В течение фрейма работает только одна задача. По окончании фрейма, если это необходимо, может начать работать следующая задача, либо продолжить работу предыдущая. Чередованием задач управляет Планировщик исходя из расписания. Планировщик также должен запускать процедуру сохранения и восстановления контекстов задач. На этом его функции заканчиваются. Тики организуются при помощи прерывания от таймера, обработчиком которого и выступает Планировщик. Это, как уже отмечали - описана одна из возможных дисциплин диспетчирования: round-robin - но этого мало для всего множества реальных задач, см. ещё дисциплины: fifo, адаптивная, спорадическая (это - особенно)... Цитата(st256 @ Feb 19 2006, 13:07)  3. Важной частью RTOS являются драйвера. По причинам, изложенным ниже, драйвера должны запускаться также каждый тик. Драйверы, вообще-то, являются достаточно  важной частью любой OS, не только RT... Но только в RTOS с хорошо продуманной и проработанной архитектурой (кто понимает о чём это я - догадывается  : микроядерной) - так драйверы могут выполняться как "ещё один рядовой пользовательский процесс" - так что о них и говорить отдельно нужды нет... Цитата(st256 @ Feb 19 2006, 13:07)  Наложим дополнительные ограничения на Систему Реального времени. Пусть она перерабатывает некую входную информацию, организованную в виде потоков, в информацию выходную, организованную подобным же образом (как выходные потоки). А задачи, работающие в реальном времени и параллельно, выполняют эту переработку. Это приводит к следующему: потоковая информация – это непрерывная последовательность неких чисел, следовательно, ее лучше всего обрабатывать по-блочно. Т.е. входные числа организуются в некий буфер, который передается задаче для обработки. Но время обработки этого буфера задачей может оказаться больше времени между приходом двух входных отсчетов. Потому для подобных систем, ориентированных на поточную обработку в реальном времени имеет смысл применить зеркальные буфера. Как они работают можно увидеть на следующем примере. - это описание, может и достаточно адекватное, но одного очень частного класса задач: digital signal processing... Но не нужно применительно к частному классу оперировать терминами RTOS etc. - можно нарваться на очень серьёзные возражения, только потому, что область RTOS намного-намного шире... Тогда и говорить о чём-то таком "исполняющая система (планировщик) потоковой сигнальной обработки"... Цитата(st256 @ Feb 19 2006, 13:07)  1. Необходимо, по-возможности, объединять в одну задачу несколько подзадач с целью сокращения количества используемых стеков и уменьшения накладных расходов на перезагрузку контекстов. 2. Не использовать в задачах глобальные переменные, используя для подобных целей только дескриптор задач. Это позволит взять под контроль все источники воздействия на задачу, что чрезвычайно важно на этапе отладки. 3. Скрывать от задач «зеркальность» входных/выходных буферов. Это не требует больших накладных расходов (реализуется при помощи указателей на указатель буфера), но существенно упрощает саму задачу. 4. Максимально использовать API-протокол для каких либо внешних взаимодействий. Именно API, и, желательно, стандартный, и для всего этого - уже давно есть такой стандарт API: POSIX 1003b - расширения реального времени... P.S. Если у вас будет возможность - посмотрите вот это: http://www.books.ru/shop/books/357604
|
|
|
|
|
Feb 20 2006, 13:37
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
Цитата(Olej @ Feb 20 2006, 16:59)  Цитата(st256 @ Feb 19 2006, 13:07)  2. Задачи не должны прерывать друг друга и, следовательно, они все имеют одинаковый приоритет.
Последнее следствие неочевидно, ...
Последнее следствие не только не очевидно, но, как на мой взгляд - и глубоко ошибочно... Приведите пример, когда нужно использовать в реал-тайме вытеснение. Все остальное - лишнее. Цитата Цитата(st256 @ Feb 19 2006, 13:07)  Когда одна задача прерывает другую? Когда ресурсов системы не хватает на обе задачи одновременно. Т.е. прерывание задачи приведет к тому, что прерванная задача не успеет обработать данные (пройти реперную точку) за оговоренное время.
Совсем не так! - это только 1 из многих частных случаев... Задача может прерывать другую - когда для неё наступит асинхронное событие, которого она молча, может быть, 3 часа ожидала - это классика всех сетевых обменов... Пример не корректен, во-первых TCP/IP не реал-тайм уже по определению. Во-вторых, я бы попросил объяснить мне, кто и кого должен прервать, если в плеере, Вы начали дергать эквалайзер, а это означает, что запустилась задача пересчета коэффициентов. И так, кто кого дожен прервать, чтобы звук не прервался? Цитата Цитата(st256 @ Feb 19 2006, 13:07)  Таким образом, при прерывании одной задачи другой, не выполняется условие для Системы Реального Времени. Если же ресурсов хватает на всё, то необходимость прерывания одной задачи другой отпадает. Естественно, если задачи не конкурируют между собой за ресурсы, то присваивание им приоритетов не имеет смысла.
Всё это умозрительно, "на пальцах" и ... не убеждает.  Убедите меня тогда Вы. Приведите пример, когда есть необходимость прерывания в отсутствиии конкуренции за рессурсы. Цитата Цитата(st256 @ Feb 19 2006, 13:07)  3. Важной частью RTOS являются драйвера. По причинам, изложенным ниже, драйвера должны запускаться также каждый тик.
Драйверы, вообще-то, являются достаточно  важной частью любой OS, не только RT... Но только в RTOS с хорошо продуманной и проработанной архитектурой (кто понимает о чём это я - догадывается  : микроядерной) - так драйверы могут выполняться как "ещё один рядовой пользовательский процесс" - так что о них и говорить отдельно нужды нет... А если не получается их оформить в процесс? Ну у Вас задача обработать буффер в 1024 слова. Эта задача выполняется 5 мс, а данные прут со скоростью одно слово зо 5мкс. Как не потерять данные во время выполнения задачи, если ее прерывать нельзя? Цитата(Arch_Grey @ Feb 20 2006, 18:14)  Действительно, автор статьи пытался рассмотреть очень узкую задачу - чистая ЦОС РВ, т.е. имеются только задачи обработки данных, которые, естественно, должны обработать данные одного отсчета до начала следующего. В таком случае все задачи должны успеть отработать в течение одного фрейма. Тут действительно не до приоритетов. Но в реальной работе кроме ЦОС требуются мониторинг, статистика, диагностика и т.д. и т.п. - т.е. куча других задач. И вот тогда высказывание : Цитата Естественно, если задачи не конкурируют между собой за ресурсы, то присваивание им приоритетов не имеет смысла. в общем случае является неверным, поскольку основным ресурсом для задач на самом деле является время их обраработки процессором. Ну и как они конкурируют? Зъим сколько смогу, а остальное покусаю? Нафиг, такие этнически ориетированные задачи... Цитата(BVU @ Feb 20 2006, 21:53)  А какая позразумевается структура (иерархия) на запросы аппарантой и программной частей? Если будет как оговаривается: "ограничение времени отклика на любой запрос, как со стороны аппаратной части, так и со стороны исполняемых программных модулей" - т.е. если они будут равноценными, то получиться - полный бедлам! И грош цена такой RTOS. Не понял, Бедлам-то откуда возмется? Можете субсидировать Афтара примером?
|
|
|
|
|
Feb 20 2006, 14:15
|
Местный
  
Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458

|
Цитата(st256 @ Feb 20 2006, 17:37)  Приведите пример, когда нужно использовать в реал-тайме вытеснение. Все остальное - лишнее. Вот так сразу?  Так давайте сначала определитесь, что вообще такое "реал-тайм" ... поскольку ваша модель потоковой сигнальной обработки к риал-тайму то, вообще то говоря, отношения и не имеет ... А вот когда с моделью самой "реал-тайм" определитесь - тогда можно и о вытеснении и о примерах говорить... Если у вас там 5, ну хоть 50 - неперерывных потоковых задач, и вы их RR-диспетчируете - то может вытеснений у вас и не возникать (вы бы ещё 1 поток RR диспетчировали, и сокрушались, что там вытеснять нечего  )... но как только ваши 5 задач надумают взаимодействовать (синхронизации там и т.д. - Дэйкстра там, Хоар ... - слышали?) вот тут вашей "гребёнке" RR и ... "приехали": даже простейшие операции на семафоре потребуют перепланирования, а что это как не вытеснение? Цитата(st256 @ Feb 20 2006, 17:37)  Пример не корректен, во-первых TCP/IP не реал-тайм уже по определению. Пример корректен - потому что вы просто не знаете TCP/IP "по определению"  ... цитату покажите, где такое "по определению" написано? Но я не говорил, кажется, о TCP/IP ... ни буквы ... а с MAC-уровнем как будем? он тоже "по определению"?... Но это всё суть не принципиально важно: я вам указал, что все системы сетевые, обмена данными, поступление данных на RS-232 ... все они построены на асинхронных событиях, на которые нужно немедленно реагировать, и никакие синхронные процедуры диспетчирования - не решат вам проблемы реакции на асинхронные события. Цитата(st256 @ Feb 20 2006, 17:37)  Во-вторых, я бы попросил объяснить мне, кто и кого должен прервать, если в плеере, Вы начали дергать эквалайзер, а это означает, что запустилась задача пересчета коэффициентов. И так, кто кого дожен прервать, чтобы звук не прервался? - когда вы начали дёргать свой эквалайзер, то, в принципе, здесь вы никого можете и не прерывать (как вы может быть предполагали  )... - но вот когда вы этой задачей пересчитаете свои коэффициенты и попробуете их "вписать" задаче потоковой обработки "чтобы звук не прервался" - вот так "на ходу", без синхронизации и перепланирования задач... - ... нет, если это у тинэйджера плеер на шее - то вы можете и "на ходу" поменять коэффициенты; - а вот если у меня это система управления движением, или управления полётом - то лучше так не делать... "не ровён час"... Цитата(st256 @ Feb 20 2006, 17:37)  Убедите меня тогда Вы. Приведите пример, когда есть необходимость прерывания в отсутствиии конкуренции за рессурсы. Вы что ресурсами называете? только процессорные циклы? а если видов ресурсов у вас намного больше, тогда как? Кому нужно ОС вообще, если потоки не конкурируют за ресурсы? Цитата(st256 @ Feb 20 2006, 17:37)  А если не получается их оформить в процесс? Ну у Вас задача обработать буффер в 1024 слова. Эта задача выполняется 5 мс, а данные прут со скоростью одно слово зо 5мкс. Как не потерять данные во время выполнения задачи, если ее прерывать нельзя? Я вам о том, что в QNX умудряются все драйверы (а их там мно-о-о-го устройств, не только плеера  ) представлять как пользовательские процессы - а вы мне про 1024 слова которые нельзя прерывать  .
|
|
|
|
|
Feb 22 2006, 08:47
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(Olej @ Feb 20 2006, 17:15)  Цитата(st256 @ Feb 20 2006, 17:37)  Приведите пример, когда нужно использовать в реал-тайме вытеснение. Все остальное - лишнее.
Вот так сразу?  Так давайте сначала определитесь, что вообще такое "реал-тайм" ... поскольку ваша модель потоковой сигнальной обработки к риал-тайму то, вообще то говоря, отношения и не имеет ... А вот когда с моделью самой "реал-тайм" определитесь - тогда можно и о вытеснении и о примерах говорить... Olej Иванович, не горячись. 256-ой известный корейский провокатор. Бывший с Самсунга  . Но специалист он грамотный. Только зря он заговорил про RTOS. То что он описывает всегда называлось framework. Попробую объяснить, что в DSP считают real-time, чтобы вернуть дискуссию в конструктивное русло. Реальное ВРЕМЯ в отличии от физической абстракции как известно не однородно. Оно имеет абсолютное начало координат (настоящее) и однородную ось повёрнутую в прошлое. Будущего строго говоря не существует. Компьютеры используют для сбора информации её обработки и использования в корыстных целях. Информация представляется в виде функций. Если эти функции не зависят от времени - то нет никакого совсем смысла говорить про real-time. Но даже если они есть функции времени (т.е. представлены дискретными парами (value, time-stamp) то говорить о real-time в большинстве случаев, когда о нём говорят, нет смысла. Смысл говорить о жёстком реале есть только тогда когда для решаемой задачи значения меток времени time-stamp имеют абсолютное, но не относительное значение, т.е. начало координат нельзя сдвинуть по смыслу задачи. Вернее его можно сдвинуть только в пределах незначительных допустимых deadline обработки. Запаздывание обработки позже dead-line делает саму обработку бессмысленной, это программа лузер и её лучше было бы вообще никогда не запускать и не писать. Синхронность или асинхронность не является признаком real-time, признаком real-time является существование дэдлайнов в течении которого обработка должна быть выполнена. Поэтому система реального времени должна характеризоваться максимальными, а не средними временами отклика. Поэтому возможность вытеснения для таких задач действительно существенно ограничены. Исторически термин обработки реального времени появился из обслуживания периферийных устройств, портов и прочего железа, которое может ожидать обслуживания только в пределах ограниченого времени. Но если изолировать железо слоем драйверов/обработчиков прерываний, то выяснится, что почти все коммуникационные задачи считаются задачами реального времени по недоразумению. В формулировке задачи передачи данных абсолютное время (дэдлайны) не входит никоим образом. От данных требуется только поступать последовательно. Поэтому строго говоря ни факс, ни передача данных по TCP/IP не являются задачами реального времени (можно буферизировать как угодно, и достаточно гарантировать среднее, а не максимальное время реакции системы). Обработка звука является очевидно задачей реального времени, поскольку абсолютное время есть координата сигнала и отсчёты должны быть обработаны и доставлены за время ограниченых временных дэдлайнов. Нарушение дэдлайнов приводит к такой ситуации, когда передачу лучше было бы не начинать - ведь поезд уже ушёл. Передача речи UDP-дэйтаграммами, конечно, уже есть задача реального времени. А передача файлов - наоборот нет. Ну а самые главные задачи реального времени - это очевидно когда процессор используется в контуре управления в цепи обратной связи. Существование значительного разброса времени реакции делает такую систему не только бесполезной, но и вредной. Большинство если не все знаменитые коммерческие РТОС (WxWorks, pSOS) в действительности не гарантируют максимальное время реакции, обеспечивая только среднее (во всяком случае в масштабе мсек или даже десятков мсек), поэтому настоящие универсальные РТОС так не популярны в мире DSP. Хотя если говорить о таких гарантиях - то их может обеспечивать только программно-аппаратный комплекс, но никак не универсальная РТОС самостоятельно.
Сообщение отредактировал fontp - Feb 22 2006, 08:53
|
|
|
|
|
Feb 22 2006, 11:27
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
[quote name='fontp' date='Feb 22 2006, 17:47' post='89265'] Olej Иванович, не горячись. 256-ой известный корейский провокатор. Бывший с Самсунга  . Но специалист он грамотный. Только зря он заговорил про RTOS. То что он описывает всегда называлось framework. [/qoute] Ув. г-н Фунт... т.е.Фонт... в смысле fontp! Во-первых, я никогда не работал в Самсунге, т.е. Вы обманываете. Во-вторых, то про что я заговорил framework-ом никак быть не может. Что это такое, рекомендую узнать в словаре, или на худой конец в ближайшем офисе Майкрософт, где Вы получите первичные сведения о MFC  т.е. Вы обманываете вторично. В-третьих... Т.к. Вы обманули дважды, то, сами понимаете, вероятность того, что Вы надули аудиторию, называя меня провокатором, очень высока. И тогда с Ваших слов получается, если провокатор один из нас, то это именно Вы. В-четвертых. Ничего не имею против Вашего понимания Real-Time.
|
|
|
|
|
Feb 22 2006, 11:40
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(st256 @ Feb 22 2006, 14:27)  Ув. г-н Фунт... т.е.Фонт... в смысле fontp! Во-первых, я никогда не работал в Самсунге, т.е. Вы обманываете. Во-вторых, то про что я заговорил framework-ом никак быть не может. Что это такое, рекомендую узнать в словаре, или на худой конец в ближайшем офисе Майкрософт, где Вы получите первичные сведения о MFC  т.е. Вы обманываете вторично. В-третьих... Т.к. Вы обманули дважды, то, сами понимаете, вероятность того, что Вы надули аудиторию, называя меня провокатором, очень высока. И тогда с Ваших слов получается, если провокатор один из нас, то это именно Вы. В-четвертых. Ничего не имею против Вашего понимания Real-Time. Сами Вы Фунт А что такое Майкрософт? У нормальных людей scheduler есть часть framework. Или теперь TI и AD называют ЭТО Real-Time Kernel (DSP/BIOS и VDK, соответственно). Кстати на них отлично строится одноприоритетная система. Но они не имеют такой наглости называть ЭТО RTOS
Сообщение отредактировал fontp - Feb 22 2006, 12:18
|
|
|
|
|
Feb 22 2006, 12:40
|
СТАТУС: только для чтения
 
Группа: Новичок
Сообщений: 133
Регистрация: 23-12-04
Пользователь №: 1 627

|
Цитата Цитата Ув. г-н Фунт... т.е.Фонт... в смысле fontp! Во-первых, я никогда не работал в Самсунге, т.е. Вы обманываете. Во-вторых, то про что я заговорил framework-ом никак быть не может. Что это такое, рекомендую узнать в словаре, или на худой конец в ближайшем офисе Майкрософт, где Вы получите первичные сведения о MFC  т.е. Вы обманываете вторично. В-третьих... Т.к. Вы обманули дважды, то, сами понимаете, вероятность того, что Вы надули аудиторию, называя меня провокатором, очень высока. И тогда с Ваших слов получается, если провокатор один из нас, то это именно Вы. В-четвертых. Ничего не имею против Вашего понимания Real-Time. Сами Вы Фунт Нет, я - st256. Это у меня в паспорте записано. Техническом. Цитата А что такое Майкрософт? Не скажу. А Вы будете теперь мучиться любопытством. Причем в конвульсиях. Цитата У нормальных людей scheduler есть часть framework. Значит Linux делали ненормальные люди. Я им передам Ваше мнение о них. Цитата Или теперь TI и AD называют ЭТО Real-Time Kernel (DSP/BIOS и VDK, соответственно). Кстати на них отлично строится одноприоритетная система. Но они не имеют такой наглости называть ЭТО RTOS ДА НУ??? Про AD не знаю, но TI прямо-таки надрывается в своих буклетах, говоря о некой навороченной RTOS. Но Вы им не верьте. Такую гнусь как DSP/BIOS не то, что операционной, а просто системой назвать нельзя. У меня при ее упоминании повышается психомоторика, слюноотделение и уровень желчи в организме. Со мой так нильзя. Меня так испортить можно...
|
|
|
|
Сообщений в этой теме
st256 Народ, что думаешь про эту писанину? В принципе, это статья :) Feb 19 2006, 09:07 _artem_ не судите строго , по моему вы своими словами опис... Feb 19 2006, 19:58 Andy Mozzhevilov Цитата(_artem_ @ Feb 20 2006, 00:58) не с... Feb 20 2006, 04:26 st256 Цитата(_artem_ @ Feb 20 2006, 04:58) не с... Feb 20 2006, 05:17  Andy Mozzhevilov Цитата(st256 @ Feb 20 2006, 10:17) Это не... Feb 20 2006, 06:08   st256 Цитата(Andy Mozzhevilov @ Feb 20 2006, 15... Feb 20 2006, 12:52 Vic1 ЦитатаТеперь подведем итоги. В данной статье была ... Feb 20 2006, 06:18   st256 Цитата(Olej @ Feb 20 2006, 23:15) Вот так... Feb 21 2006, 13:27    Olej Цитата(fontp @ Feb 22 2006, 12:47) Olej И... Feb 22 2006, 10:01     st256 Цитата(Olej @ Feb 22 2006, 19:01) Вот я о... Feb 22 2006, 11:55      Olej Цитата(st256 @ Feb 22 2006, 15:55) Что та... Feb 22 2006, 14:48       st256 Цитата(Olej @ Feb 22 2006, 23:48) Только ... Feb 22 2006, 15:55  v_shamaev Цитата2. Задачи не должны прерывать друг друга и, ... Feb 20 2006, 15:06 Vic1 Olej, Вам респект !
за то, что все так разло... Feb 20 2006, 08:17 dxp Цитата(Vic1 @ Feb 20 2006, 14:17) Предмет... Feb 20 2006, 12:12 Arch_Grey Действительно, автор статьи пытался рассмотреть оч... Feb 20 2006, 09:14 BVU А какая позразумевается структура (иерархия) на за... Feb 20 2006, 12:53 Vic1 st256, Вам вроде и нужна была критика
Вот эта мы... Feb 21 2006, 13:57 st256 Цитата(Vic1 @ Feb 21 2006, 22:57) st256, ... Feb 21 2006, 14:53  Olej Цитата(st256 @ Feb 21 2006, 18:53) Тогда ... Feb 21 2006, 17:07 TMX По-моему, автор дал описание архитектуры "cyc... Feb 21 2006, 19:13 st256 Цитата(TMX @ Feb 22 2006, 04:13) По-моему... Feb 22 2006, 09:43 Vic1 st256, спасибо за леди (а то как уж тут только не ... Feb 22 2006, 06:55 st256 Цитата(Vic1 @ Feb 22 2006, 15:55) st256, ... Feb 22 2006, 10:06 zltigo Цитата(st256 @ Feb 22 2006, 13:55) После ... Feb 22 2006, 12:35 st256 Цитата(zltigo @ Feb 22 2006, 21:35) Цитат... Feb 22 2006, 12:42 Vic1 ЦитатаНо они не имеют такой называть ЭТО RTOS
Да,... Feb 22 2006, 12:40 fontp Цитата(Vic1 @ Feb 22 2006, 15:40) Да, fon... Feb 22 2006, 14:39 st256 ЦитатаНо они не имеют такой называть ЭТО RTOS
Да, ... Feb 22 2006, 15:02  Olej Цитата(st256 @ Feb 22 2006, 19:02) Зачем?... Feb 23 2006, 07:18 zltigo Цитата(st256 @ Feb 22 2006, 14:42) Кстати... Feb 22 2006, 12:51 st256 Цитата(zltigo @ Feb 22 2006, 21:51) Цитат... Feb 22 2006, 15:18 zltigo Цитата(st256 @ Feb 22 2006, 17:18) А есть... Feb 22 2006, 15:37 _artem_ По моему раздел медленно переходит от темы исследо... Feb 22 2006, 16:59 zltigo Цитата(st256 @ Feb 22 2006, 17:55) И поче... Feb 22 2006, 17:19 fontp " Я написал ОС РВ. Все свободны. Обсуждение. ... Feb 24 2006, 07:44 slabnoff В общем статью надо переписывать. Полностью. Под н... Apr 9 2006, 21:01 Olej Цитата(slabnoff @ Apr 10 2006, 00:01) рек... Apr 10 2006, 05:55 slabnoff Цитата(Olej @ Apr 10 2006, 09:55) Не знаю... Apr 10 2006, 12:23 slabnoff В общем статья действительно довольно здравая. Хот... Apr 10 2006, 19:52 Nixon Положил в \pub\doc\books\os... Apr 12 2006, 15:07 slabnoff Цитата(Nixon @ Apr 12 2006, 19:07) Положи... Apr 12 2006, 19:11 Боинг749 Цитата(st256 @ Feb 19 2006, 13:07) Систем... Aug 29 2008, 19:28
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|