OSDev

для всех
Текущее время: 16 янв 2018, 10:27

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 30 июл 2015, 12:34 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Нет, не так.
Если время реакции (t) системы на событие определяется как:
1) t обычно <= const, то это система мягкого времени.
2) t гарантированно <= const, то это система жесткого времени.
Другими словами, цель СМРВ - реакция за предсказуемое малое время, но если вдруг не получилось, то ничего страшного. Для СЖРВ отсутствие реакции за отведённое время приравнивается к отказу системы. Не успел рассчитать, - погиб больной, спутник не вышел на орбиту, не успели запустить ответную ракету, аварийно остановился завод.

leonidpr писал(а):
Интересно еще вот что. Пусть у нас в системе протекают 2 процесса А и Б. Причем Б периодический (например по таймеру), а А - запускается каким-то внешним событием, момент возникновения которого предугадать нельзя. Следовательно, я так понимаю, нам надо решить, что для нас важнее и соответственно дать приоритеты этим процессам? Я к тому, что для для процесса с более низким приоритетом будет наблюдаться непредсказуемое колебание времени обработки, которое надо будет оценить и проверить на допустимость.

Вообще говоря, СЖРВ - настолько узкий класс задач, что в них не принято выделять конкурирующие процессы (хотя система и может одновременно выполнять несколько задач, но все они расписаны заранее, на этапе разработки СЖРВ). Вся система представляется единым целым. На аппарат искусственного дыхания нельзя установить тетрис и играть в него между вдохами. В СМРВ да, можно запускать процессы и им назначаются приоритеты. Поскольку есть конкурирующие процессы, то, соответственно, нет и гарантии времени реакции.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 30 июл 2015, 16:08 

Зарегистрирован: 10 авг 2007, 15:37
Сообщения: 58
Почему нельзя запускать процессы в системе ЖРВ? если им задан приоритет ниже, чем у критичных процессов это не должно повлиять на работоспособность системы. (на выполнение правила, что гарантированно t<=const)
P.S. Или вы имеете в виду, что в момент, когда создается процесс, система будет полностью заблокирована и не сможет реагировать на события?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 30 июл 2015, 18:25 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Я не говорю, что их нельзя запускать. Я говорю, что СЖРВ не разрабатывают так, чтобы в ней был произвольный набор конкурирующих процессов. Как правило, все процессы, происходящие в СЖРВ, известны заранее и их планирование исходит из той предпосылки, что про все процессы заранее известно всё. Только в таком случае возможно дать 100% гарантию того, что на каждое входное событие последует известная реакция в жёстко отведённое время. А раз так, то и планировщик в СЖРВ обычно сильно редуцирован и специализирован.

Вы, видимо, исходите из предпосылки, что можно сделать СЖРВ общего назначения для настольных ПК и это было бы круто. На самом деле, это ошибочное целеполагание. СЖРВ используют там, где нужно следить за рядом заранее известных критических параметров и реагировать на них в строго отведённое время, иногда действительно с точностью до такта (и мне приходилось делать такую систему). Подумайте, зачем таким системам какие-то левые низкоприоритетные процессы? Понятия "Общее назначение" и СЖРВ несовместимы.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 30 июл 2015, 19:21 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1315
Откуда: Зеленоград
Yoda писал(а):
Нет, не так.
Если время реакции (t) системы на событие определяется как:
1) t обычно <= const, то это система мягкого времени.
2) t гарантированно <= const, то это система жесткого времени.
Другими словами, цель СМРВ - реакция за предсказуемое малое время, но если вдруг не получилось, то ничего страшного. Для СЖРВ отсутствие реакции за отведённое время приравнивается к отказу системы.


То самое, о чём я говорил выше: СЖРВ даёт гарантию, а СМРВ -- не даёт, и именно это -- единственная ключевая разница.

Yoda писал(а):
Вы, видимо, исходите из предпосылки, что можно сделать СЖРВ общего назначения для настольных ПК и это было бы круто. На самом деле, это ошибочное целеполагание. СЖРВ используют там, где нужно следить за рядом заранее известных критических параметров и реагировать на них в строго отведённое время, иногда действительно с точностью до такта (и мне приходилось делать такую систему). Подумайте, зачем таким системам какие-то левые низкоприоритетные процессы? Понятия "Общее назначение" и СЖРВ несовместимы.


Ну, превратить хорошую СЖРВ в систему общего назначения можно -- только тогда она либо вообще перестанет быть СЖРВ, либо сохранит сие свойство только при накладывании дополнительных ограничений на запускаемый код. Скажем, ЖРВ будет гарантироваться лишь для обработчиков прерываний (т.е. система гарантированно не будет по полчаса страдать непонятным онанизмом с запрещёнными прерываниями или выполнением кода на повышенном приоритете процессора, блокируя тем самым низкоприоритетные запросы прерываний).

В СЖРВ вполне могут выполняться низкоприоритетные задачи, не требующие реального времени, но они играют вспомогательную роль. Скажем, система управления каким-то технологическим процессом обслуживает потребности этого самого процесса в жёстком реальном времени, а информацию для оператора может передавать с некоторым отставанием (практически незаметным для человека, но уже не в реальном времени в полном смысле -- скажем, с переменной задержкой от 0,001 до 1 секунды по сравнению с временем проведения замера) в те моменты, когда никакой другой работы для процессора нет. Но играть в тетрис на таких системах действительно глупо, даже если технически такая возможность имеется :)

И опять повторюсь: СЖРВ -- это не только ОС, это весь программно-аппаратный комплекс. По этой причине система общего назначения в принципе не может считаться СЖРВ, даже если и аппаратура, и ОС соответствуют всем требованиям в ЖРВ, поскольку в системе общего назначения нельзя предсказать, какой набор прикладных программ (а зачастую и драйверов) будет выполняться в тот или иной момент времени.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 30 июл 2015, 23:25 

Зарегистрирован: 10 авг 2007, 15:37
Сообщения: 58
Цитата:
Вы, видимо, исходите из предпосылки, что можно сделать СЖРВ общего назначения для настольных ПК и это было бы круто.

Нет, я так не считаю. Я имел в виду, что да, система ЖРВ должна при возникновении события его обработать за четко определенное время. Но, когда этого события нет, проц свободен и может заниматься другой, менее приоритетной работой (тот же GUI обслуживать), но как только событие снова возникнет, она должна "все бросить" и ринуться на его обработку (либо проснется процесс с самым большим приоритетом, либо вообще аппаратно проц перейдет к обработке прерывания, опять же с самым большим приоритетом).

Yoda, вы сказали, что приходилось делать систему, которая реагировала с точностью до такта. Наверное там никакой речи об ОС идти не может (по крайней мере в части критичного кода)? Чисто на прерываниях, плюс выверенный как вы сказали "до такта" код на ассемблере?

Мне чаще попадаются задачи, когда есть два критичных процесса - замер и обработка его. Замеры с помощью АЦП должны идти с одинаковым интервалом, поэтому делаю этот процесс наиболее приоритетным (но при этом он обычно отрабатывает быстро. то есть отношение времени замера к интервалу между замерами очень мало). И второй - обработка замеров. Т.е. первый процесс все складывает в кольцевой буфер, второй же забирает оттуда и если результаты замеров не в заданных пределах, отрабатывает некоторая логика. так вот я всегда полагал, что первый процесс у меня работает в режиме ЖРВ, а вот второй - МРВ (так как его может не один раз прерывать процесс замера, следовательно, момент окончания его работы может несколько отодвинуться во времени).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 31 июл 2015, 14:00 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
SII писал(а):
Ну, превратить хорошую СЖРВ в систему общего назначения можно -- только тогда она либо вообще перестанет быть СЖРВ

Именно.

SII писал(а):
либо сохранит сие свойство только при накладывании дополнительных ограничений на запускаемый код. Скажем, ЖРВ будет гарантироваться лишь для обработчиков прерываний

Мелкософт в принципе по этому пути и пошла, там есть жёсткие требования на первичный обработчик прерываний. Однако... а кто пишет эти обработчики прерываний? Как распределены приоритеты между железками? А что, если одновременно возникают сразу несколько прерываний? Ладно, пусть нам удалось в первичном обработчике зафиксировать прерывание, дальше передали работу отложенному обработчику. Тут вдруг оказалось, что в системе запущен высокоприоритетный системный процесс (не буду говорить, какой, хотя это был антивирус McAffee, которому пришло в голову просканировать систему, поэтому вы не можете даже пошевелить мышкой - формально от неё прерывания приходят, но не обрабатываются). Все эти вопросы в результате и приводят к тому, что MS Win не может работать в качестве СЖРВ. Либо, в теории, может (только с несколькими, тщательно отобранными процессами и полным запретом на запуск любого стороннего софта, а также с тщательно подобранным и сконфигурированным железом), но опять же, перестаёт при этом быть системой общего назначения.

SII писал(а):
В СЖРВ вполне могут выполняться низкоприоритетные задачи, не требующие реального времени, но они играют вспомогательную роль. Скажем, система управления каким-то технологическим процессом обслуживает потребности этого самого процесса в жёстком реальном времени, а информацию для оператора может передавать с некоторым отставанием

Именно! Я же и говорю - никакого запрета на низкоприоритетные задачи нет.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 31 июл 2015, 14:02 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
leonidpr писал(а):
Я имел в виду, что да, система ЖРВ должна при возникновении события его обработать за четко определенное время. Но, когда этого события нет, проц свободен и может заниматься другой, менее приоритетной работой (тот же GUI обслуживать), но как только событие снова возникнет, она должна "все бросить" и ринуться на его обработку (либо проснется процесс с самым большим приоритетом, либо вообще аппаратно проц перейдет к обработке прерывания, опять же с самым большим приоритетом).

Да, так можно. Более того, так часто и делают.

leonidpr писал(а):
Yoda, вы сказали, что приходилось делать систему, которая реагировала с точностью до такта. Наверное там никакой речи об ОС идти не может (по крайней мере в части критичного кода)?

А что такое "ОС"? Если мы говорим о СЖРВ, то тут неоднократно отметили, что это - программно-аппаратный комплекс, весь целиком. Нельзя отделить ОС от железа и от пользовательских процессов. Конечно, системы в виде дистрибутива на дискете не было, всё записано во флеш-память, однако была возможность обновления прошивки и вышло два обновления.

leonidpr писал(а):
Чисто на прерываниях, плюс выверенный как вы сказали "до такта" код на ассемблере?

Что значит "чисто на прерываниях"? А на чём работают планировщики настольных ОС, разве не "чисто на прерываниях"?
Если вас интересуют технические детали, то планировщик моей СЖРВ представлял собой конечный автомат, в качестве входных событий которого был ряд прерываний.
Да, система писалась на ассемблере. Код выверялся до такта в необходимых местах - это сам планировщик, обработчики прерываний и один критический процесс. Часть задач также была реализована в виде конечных автоматов. Именно конечные автоматы позволяют получить наилучшую скорость реакции и 100% предсказуемость поведения.

ЗЫ
А, я понял, что вы имели ввиду под "чисто на прерываниях". Вы имели ввиду, что каждое прерывание порождает свою независимую реакцию, так, что можно обойтись только одними обработчиками без реального планирования. Нет, в моей СЖРВ большинство процессов пересекалось по прерываниям. Т.е. по прерываниям надо был решать, что именно делать, а по некоторым прерываниям надо было выполнять несколько задач из очереди, причём, состав задач мог меняться со временем. Так что планировщик неизбежен.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОСРВ и современные процессоры
СообщениеДобавлено: 02 авг 2015, 16:47 

Зарегистрирован: 10 авг 2007, 15:37
Сообщения: 58
Да, я это и имел в виду, возможно не совсем правильно обозвал этот способ организации системы. Т.е. "планировщиком" выступает контроллер прерываний. Если этого хватает, то мне кажется, зачем тянуть ОС в такой проект, она только лишних усилий потребует для себя (как процессорного времени так и сил проектировщика).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB