Цитата: small__virus от 01.01.2017 08:17:13Не обязательно. Есть контроллер прерываний. Есть иерархия прерываний.
Прерывания таймера, например, приоритетнее обработки прерываний клавиатуры.
Последний раз, когда я писал в институте обработчик прерываний (2 или 3-й курс, если мне не изменяет склероз), контроллер прерываний хранил в своем стеке от 16 до 255 прерываний (вот не помню просто). Естественно, во время обработки прерывания таймера еще раз обработка прерывания таймера произойти не может.
Цитата: Senya от 01.01.2017 08:30:47Нет, он всё правильно написал, пусть немного и непонятно. В доведении до абсурда - если прерывания приходят с частотой большей, чем частота переключения входного каскада, смогут они регистрироваться? Нет. Ну и после приёма сигнала нужно несколько (десятков/сотен) тактов на его регистрацию. Может быть всё вплоть до разнесения по входам аппаратных стеков для ускорения процесса, но это ньюансы.
Цитата: Hadan от 01.01.2017 15:44:40Прерывание там вообще не причем. Вернее, это отбельная и совсем узкая тема. Ваять контроллер на железе без запаса по производительность – жесть.
Регистрировать событие для реалтайма - пол дела. Важно отработать его вовремя, и не просто «вроде успеваем», а конкретные цифры с расчетами и доказательствами. Это тянет за собой целую кучу особенностей и ограничений на операции с неясным временем выполнения. Диск, сеть, элементарное выделение памяти в куче – уже криминал.
Цитата: Поверонов от 01.01.2017 20:01:35Да, при управлении реальным процессом (скажем движущимся транспортом) ОС РВ должна гарантировать завершенную реакцию системы за заданное лимитированное время. Практически это означает что следующее прерывание не должно поступить ранее чем полностью завершится отработка предыдущего прерывания, иначе можно не успеть завершить обработку предыдущего. Другими словами ОС РВ способна гарантированно обрабатывать лишь одну последовательность прерываний для одного высшего приоритета, то есть решать лишь одну задачу реального времени. При этом прерывания меньших приоритетов уже не могут быть гарантированно выполнены в реальном времени, а могут обрабатываться лишь с непредсказуемой задержкой в фоновом режиме.
Так было для однопроцессорных ОС типа RT-11. Но с появлением многоядерных процессоров для ОС РВ возникли более широкие возможности маневра вычислительными ресурсами, чтобы таким образом гарантировать обработку в реальном времени прерываний для нескольких приоритетов ( в пределе - по числу процессорных ядер )
Цитата: AndreyK-AV от 02.01.2017 00:25:42Я сейчас не помню скорость обработки прерываний, но суть в том, что во время обработки текущего включался механизм отложенных прерываний и они сохранялись или в регистрах или в стеке памяти (где точно забыл блин, тридцать лет прошло всё-же), и извлекались по мере высвобождения системы от оперативной обработки текущего, которое понижалось а приоритете и порождало процесс второго(?) уровня, а основной ресурс на извлечённое....
Цитата: adolfus от 02.01.2017 02:52:10Все было совершенно по-другому. Прерывания инициировались по 4-м линиям уровнем по ИЛИ, что позволяло "хранить" запросы на схемотехническом уровне. Аналогичный метод реализован на шине PCI и тоже всего 4 линии. Никаких стеков и регистров для складирования запросов не было. Да и нет их нигде. Запросы от устройства физически не могут поступать быстрее, чем они будут обработаны.
Цитата: AndreyK-AV от 02.01.2017 10:23:39Прерывание вполне себе хранятся в стеке или регистрах,
если скорость обработки процессора позволяет,
а порождённый запрос вполне себе обрабатывается,
совместно с предыдущими, конкурируя за ресурсы процессора....
Цитата: Hadan от 02.01.2017 16:06:59Логично. Хотя я так и не понял, как внешние события узнают «можно им произойти физически и или еще рано».Еще, раз. Прерывание, и обработка запроса от устройства – разные вещи. Есть куча систем где несколько устройств сидит на одном векторе и спокойно обслуживаются.
Цитата: adolfus от 02.01.2017 16:45:11Назовите хоть одну систему, где "прерывания хранятся в стеке или регистрах"?
Цитата: adolfus от 02.01.2017 16:45:11Назовите хоть одну систему, где "прерывания хранятся в стеке или регистрах"?
Цитата: slavae от 02.01.2017 18:33:26Могу предложить. Обработка прерывания должна заключаться всего лишь в помещении данных о нём в собственный стек, который обрабатывается независимым процессом. Тогда по крайней мере данные об аппаратном прерывании не улетят в никуда.
Цитата: adolfus от 02.01.2017 22:57:26Они и так никуда не улетают без всяких стеков и регистров. Система реального времени всегда строится таким образом, чтобы никуда ничего не пропадало. Для разгребания запросов на обслуживание не стеки используются, а очереди с приоритетами. И занимается всем этим контроллер прерываний. Система же потребляет уже то, что этот контроллер упорядочил и раздал по процессорам/ядрам. Вот тут, тут и тут в главе 10 описано, как это все работает и почему ничего нигде не протекает. Курим до посинения прежде чем продолжим про прерывания.
Цитата: AndreyK-AV от 03.01.2017 00:12:08Особенности, свойственные операционной системе RSX-11, определяемые ее способностью работать с асинхронными процессами с помощью механизма обработки отложенных прерываний, позволяют задаче-клиенту запускать множество параллельно работающих удаленных подпрограмм-серверов. Каждая подпрограмма-сервер также может порождать множество других удаленных процессов.
Цитата: Цитатасистемы реального времени бывают 2х типов: QNX и сотоварищи (их много, в том числе самоправленных разными концернами) и WIndows-style
Цитата: Цитата: Valery от 03.01.2017 00:22:57С другой стороны, под многочисленные микроконтроллеры ARM во всю живет FreeRTOS, и не только...
Цитата: TAU от 03.01.2017 21:28:57Второе мнение значительно ближе к истине.
Помимо QNX, есть много заслуженных вполне себе "жесткого" или "настоящего" (в системах "мягкого" реального времени лишь обеспечивается реализация временных ограничений в заданном проценте случаев, или с заданной вероятностью) реального времени, например:
семейство VxWorks
Lynx
RTOS
Есть отечественные варианты, например - JetOS
И вообще
Цитата: Поверонов от 03.01.2017 23:05:36Пытаясь разобраться в костях QNX пришел к выводу что в сущности она не имеет ничего специального для реального времени, а лишь предоставляет микроядро непосредственно поддерживающее pthreads ...
Цитата: slavae от 15.12.2016 11:59:24Системная плата на микропроцессоре Эльбрус-8С
Всем привет!
немного эксклюзива: материнка для персоналки Эльбрус 801-РС на новом микропроцессоре Эльбрус-8С!
Это предсерияная партия плат, для внутренней отладки, но на серийной партии микропроцессоров.
Работа идет полным ходом по наладке, для того что бы во второй половине 2017 года можно было отгрузить персоналки, а далее и четырехпроцессорный сервер на Эльбрус-8С для конечных потребителей.
Сразу скажу: в видео засветились только 4 платы: они остались на выходные для окончания монтажа. Они и попали в мои руки. Так же ранее было выпущено еще некоторое количество плат за предыдущие пол года.
От себя добавлю: по производительности — сущий термояд! все летает, но это еще не до конца оптимизировано ПО! так что хочу всех поздравить: Эльбрус-8С уже на уровне производительности с зарубежными аналогами!
Цитата: ps_ от 05.01.2017 16:18:37Очень интересно
Цитата: TydymBydym от 05.01.2017 16:56:452. Средства эмуляции и виртуализации. Сейчас есть два таких средства - исполнение x86 бинарников и полная эмуляция x86 машины. Если бы я эксплуатировал сервера на базе Эльбруса, то мне не хватало бы в первую очередь qemu+KVM, хотя сейчас мощность серверов не так чтоб избыточна для использования в качестве платформы виртуализации. Для стороннего же разработчика важно иметь средства эмуляции на x86 платформе, для того чтобы можно было собирать и отлаживать свое ПО без кросс-сборки и без реальной железки. Последнее - важно, если МЦСТ хочет иметь полноценные порты дистрибутивов и ПО на своей платформе
3. GCC. Есть lcc, но не уверен что им нормально соберется большая часть пакетов. Более того, уверен что большая часть не соберется в силу тех или иных причин. Вместо того чтобы делать свой велосипед на титановых колесах с реактивным приводом - лучше бы запилили поддержку gcc на своей платформе
4. Ванильное ядро ничего не знает про архитектуру Эльбрус. Форк пилится МЦСТ самостоятельно, причем версии ядра довольно древние. Необходимо сливать свои наработки в апстрим, растить сторонних разработчиков. А для этого необходимы дешевые железки по учебным заведениям и по почте на заказ, тогда может быть и будет пул разработчиков лет через 5. Своими силами новую платформу одна фирма не вытянет, как мне кажется.