|
|
  |
ОСРВ как тема кандидатской диссертации, прошу наставлений |
|
|
|
Oct 29 2012, 12:06
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(AlexandrY @ Oct 29 2012, 14:42)  А в RTOS вообще не должно быть сбоев. вы как всегда в ударе, капитан очевидность  Цитата Недаром на навороченных чипах типа i.MX53 c MMU и прочими фичами для жизненно важных приложений выбирают uC/OS RTOS без всякой виртуализации. использовать на таких процессорах голые RTOS - это как в анекдоте про лису "обманула, обманула - деньги таксисту заплатила, а сама не поехала", а теперь куда вы засунете эти бумажки от uC/OS, если нужно что-то чуть более, чем круто дернуть ножкой ? Нормальные парни давно об этом подумали, даже комитеты создали по стандартизации Trusted Computing Group & ISO/IEC, GlobalPlatform TEE. А виртуализацией пользуются многие, например http://www.ok-labs.com/releases/release/ok...quipment-from-k
Сообщение отредактировал sasamy - Oct 29 2012, 12:17
|
|
|
|
|
Oct 29 2012, 14:10
|
Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182

|
Цитата(wedmeed @ Oct 29 2012, 12:15)  Какие еще есть способы защитить программу? Как это делают FreeRTOS и остальные без MMU. От кого защитить? От своей же соседней программы? Смысл защиты памяти в том чтобы оградить программу (и ядро) от произвольной сторонней программы, написанной кулхацкером Васей из 7а, осилившим журнал "какер". Или от одноклассника Васи - Пети, который осиливает указатели в Си по K&R и то и дело портит данные в драйвере файловой системы и теряет данные на диске. В МК же вы заранее пишите весь софт, который там будет работать, и, соответственно вылавливаете баги и уж точно не станете специально портить данные ядра или других программ. Например, во FreeRTOS-MPU чтобы для Cortex-M3 настроить правильно распределение памяти для задач уйдёт много больше времени и сил чем отлов реальных багов. А попытка программы обратиться куда нельзя так же вызовет MemFault. Надёжность только если на случай порчи данных, например вдруг так совпало и записываем неверные данные в буфер отправки сообщения по какому-либо каналу связи и так получится что вместо "привет" отправится что-то нецензурное. Т.е. гарантируется "плановый" сбой на случай бага с указателями или иными косяками в работе с памятью. Так на этот случай вроде достаточно простого MPU в кортексах М3
--------------------
typedef enum { no, yes, maybe } bool; | блог тут
|
|
|
|
|
Oct 29 2012, 15:30
|
Местный
  
Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197

|
Цитата(sasamy @ Oct 29 2012, 14:23)  L4 -- это семейство ядер почти все из них ориентированы на наличие MMU. И вообще наверное скорее следует говорить о MPU! Поэтому Вас не поддерживаю в этом, а вот в том чтобы "использовать ЯВУ" с защитой -- это да! На мой взгляд java и Lua лучшие кандидаты. Цитата(sasamy @ Oct 29 2012, 16:06)  Опять таки L4-тое ядро. Цитата(wedmeed @ Oct 29 2012, 09:40)  Но надо: -многозадачность (многопоточность); -защита программ друг от друга (виртуализация, МК без MMU), скорее всего аппаратными средствами; -по возможности оптимизация. 1. По надёжности -- Нет MPU -- нет надёжности от быдлокода! 2. По методикам -- различные стандарты требуют куча всего для того чтобы код был надёжным. То есть направо не ходить, налево не ходить, компиляторными нестандартными фишками не пользоваться, память выделять так, именовать так и так далее -- все эти требования выглядят как ритуал который впринципе помогает кодить среднеквалифицированым специалистам. НО! это всё не даёт 100% гарантии на выполнение! ДЛЯ доказательства того что ВСЯ система надёжна нужно доказывать всё до последнего байта! Если есть MPU -- то для доказательства надёжности нужно доказать что ядро+аппаратный механиз защиты памяти надёжны (L4 и прочее тут как раз рулит!) и то что нужные Вам высокоприритетные важные процессы надёжны! 3. РТОС без ММU c "гарантирванным временем вытеснения!" даёт возможность проводить математическое докозательство того что при любых условях самые высокоприоритетные процессы-"элита" получат себе нужное быстродействие а система уложится в отведённые дедлайны! ВСЁ!
Сообщение отредактировал SyncLair - Oct 29 2012, 15:18
--------------------
|
|
|
|
|
Oct 29 2012, 18:32
|

Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 5-04-11
Из: г.Саратов
Пользователь №: 64 137

|
Цитата(SyncLair @ Oct 29 2012, 18:30)  MPU! Это если необходимо защищать встроенную память. Если пользуется внешняя - можно и MMU, правда выглядеть он будет довольно монстроидально. Исходя из задачи - да, MPU достаточно и гораздо оптимальнее. Цитата(SyncLair @ Oct 29 2012, 18:30)  "использовать ЯВУ" Насколько сложно портировать среду явы? Сложно ли гарантировать корретность портирования и отсутствие ошибок в среде? Насколько понимаю, это накладные расходы x3 минимум? З.Ы. На яве никогда не писал и, тем более, не портировал.
|
|
|
|
|
Oct 30 2012, 19:59
|
Местный
  
Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197

|
Цитата(wedmeed @ Oct 29 2012, 22:32)  З.Ы. На яве никогда не писал и, тем более, не портировал. ЯВУ не означает ТОЛЬКО ява. Ничем помочь не могу у самого реальный опыт ноль! Но на то она и диссертация....
--------------------
|
|
|
|
|
Nov 1 2012, 06:15
|

Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 5-04-11
Из: г.Саратов
Пользователь №: 64 137

|
Цитата(SyncLair @ Oct 30 2012, 22:59)  ЯВУ не означает ТОЛЬКО ява. Я Вас понял. Виртуальные машины вещь очень сильная, но и расточительная. Когда люди говорят о микроконтроллерах - часто это связано с маломощными платформами и ужатыми ресурсами. С другой стороны, у меня есть специфицеская задача со специфическим набором функций. Чтобы сократить расходы на интерпретацию байт-кода, очень пригодился бы такой же специфический набор функций. Но разрабатывать новый язык я не возмусь. Даже если он выродится в небольшой набор скриптов. На мой взгляд, маленькая простенькая ОС с MMU/MPU выглядет гораздо элегантнее. Даже не ОС, диспетчер. Какие еще преимущества кроме контроля исполнения дают ЯВА-подобные среды? Почему микроконроллеры с флэшью >64 Кб не оснащают MMU/MPU? Ведь уже в таком объеме можно наворотить довольно сложную систему. Насколько я понимаю это, по крайней мере MPU, не такой сложный модуль, который можно сделать даже не влезая в ядро (просто мониторить шину и генерировать прерывания-ловушки).
Сообщение отредактировал wedmeed - Nov 1 2012, 06:16
|
|
|
|
|
Nov 1 2012, 06:29
|

Mute Beholder
  
Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754

|
Цитата(wedmeed @ Nov 1 2012, 17:15)  Я Вас понял. Виртуальные машины вещь очень сильная... Какие еще преимущества кроме контроля исполнения дают ЯВА-подобные среды? По-моему не поняли. ЯВУ - язык высокого уровня. Си, например. В отличие от ассемблера который низкоуровневый.
--------------------
Common sense is not so common.
|
|
|
|
|
Nov 1 2012, 06:59
|

Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 5-04-11
Из: г.Саратов
Пользователь №: 64 137

|
Цитата(Snaky @ Nov 1 2012, 09:29)  ЯВУ - язык высокого уровня. Си, например. Извиняюсь, только сейчас понял что это аббревиатура. Тогда не понимаю. В теме говорилось про возможность контроля за процессом и защита памяти. Си, даже Си++, это не умеют. А вот джава-подобные (с виртуальной машиной) умеют.
Сообщение отредактировал wedmeed - Nov 1 2012, 07:04
|
|
|
|
|
Nov 1 2012, 07:43
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(wedmeed @ Nov 1 2012, 10:59)  Тогда не понимаю. В теме говорилось про возможность контроля за процессом и защита памяти. Си, даже Си++, это не умеют. А вот джава-подобные (с виртуальной машиной) умеют. В теме говорилось о том что "Только придется среду исполнения портировать", так вот ее не обязательно портировать - ЯВУ (Haskell по ссылке) используется для создания прототипа микроядра Цитата Despite its ability to run real user code, the Haskell ker- nel remains a prototype, as it does not satisfy our high- performance requirement. Furthermore, Haskell requires a significant run-time environment (much bigger than our ker- nel), and thus violates our requirement of a small TCB. We therefore translated the Haskell implementation manually into high-performance C code. An automatic translation (without proof) would have been possible, but we would have lost most opportunities to micro-optimise the kernel in order to meet our performance targets. We do not need to trust the translations into C and from Haskell into Isabelle — we formally verify the C code as it is seen by the compiler gaining an end-to-end theorem between formal specification and the C semantics.
|
|
|
|
|
Nov 1 2012, 09:43
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(wedmeed @ Nov 1 2012, 08:15)  , маленькая простенькая ОС с MMU/MPU выглядит гораздо элегантнее. Даже не ОС, диспетчер.
Почему микроконтроллеры с флэшью >64 Кб не оснащают MMU/MPU? Voyager-1 летит уже 35 лет. Никакого MMU на нем нет. Планировщики в осях тоже никакого отношения к MMU не имеют. Если вы согласны с мыслью, что в RTOS вообще не может быть ошибок, то должны сконцентрироваться на их отлавливании на этапе разработки, а не на фиксации сбоев благодаря MMU на этапе эксплуатации. Поэтому для RTOS гораздо важнее JTAG отладчики и трассировщики. Использовать же MMU на этапе разработки только для того чтобы вычислить пару специфических ошибок сильно расточительно.
|
|
|
|
|
Nov 1 2012, 09:51
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
QUOTE (SyncLair @ Oct 29 2012, 18:30)  1. По надёжности -- Нет MPU -- нет надёжности от быдлокода! а кто вам сказал что если есть MPU - то сразу появляется надёжность от быдлокода? надёжность с наличием/отсутствием MPU никак не связана (конечно, в проектах, где внешнюю программу подгрузить нельзя). надёжность зависит только от количества быдлокода. QUOTE (SyncLair @ Oct 29 2012, 18:30)  Если есть MPU -- то для доказательства надёжности нужно доказать что ядро+аппаратный механиз защиты памяти надёжны (L4 и прочее тут как раз рулит!) и то что нужные Вам высокоприритетные важные процессы надёжны! то есть к доказательству надёжности каждой строчки проекта надо ещё и доказать надёжность дополнительного кода поддержки MPU?
|
|
|
|
|
Nov 1 2012, 11:06
|

Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 5-04-11
Из: г.Саратов
Пользователь №: 64 137

|
Цитата(sasamy @ Nov 1 2012, 10:43)  ЯВУ (Haskell по ссылке) используется для создания прототипа микроядра Хаскель - функциональный "чистый" язык. В нем по логике не может быть коллизий памяти, пока не начать использовать функции с побочными эффектами. А как без последнего работать со временем или реализовать закон управления по передаточной функции (где обязательно иметь переменные состояния) я не представляю. Буду рад если сможете привести пример. Почему прототип? Какие функции он выполняет и есть ли среди них защита процессов друг от друга? Есть ли подобная реализация на Си? Цитата(AlexandrY @ Nov 1 2012, 12:43)  Использовать же MMU на этапе разработки только для того чтобы вычислить пару специфических ошибок сильно расточительно. Человек есть человек. Все ошибки найти или гарантировать что они все найдены невозможно. http://www.osp.ru/os/1998/06/179592/Или зачем тогда делают системы с резервированием? Цитата(Mahagam @ Nov 1 2012, 12:51)  то есть к доказательству надёжности каждой строчки проекта надо ещё и доказать надёжность дополнительного кода поддержки MPU? Доказать надёжность кода поддержки MPU можно один раз и использовать во всех дальнейших проектах. При защищенности процессов друг от друга можно плотно доказывать надежность только критических модулей программы, остальных - поверхностно. Если классифицировать уровень критичности модуля в соответствии с тем же КТ178.
|
|
|
|
|
Nov 1 2012, 11:39
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(wedmeed @ Nov 1 2012, 13:06)  Человек есть человек. Все ошибки найти или гарантировать что они все найдены невозможно. http://www.osp.ru/os/1998/06/179592/Или зачем тогда делают системы с резервированием? А не удивительно, что за столько лет все продолжают приводить в пример замусоленные случаи с Ariane 5 и Therac-25? Почему бы не привести проблему с Opportunity? Вообще-то известная и яркая проблема человеческого фактора который может легко убить даже систему с MMU. Там речь шла о том, что марсоход в определенный момент экпедиции вдруг стал жутко тормозным и долго не реагировал на команды. Его пришлось остановить и долго перезаливать софт. Там была RTOS VxWorks. Поскольку нынче на космической технике применяю радиационно стойкие RAD750 (аналог PowerPC) то WxVorks там использует MMU. Программист то ли из-за лени, то ли из-за невысокой своей квалификации подумал, что в RTOS можно кое в каких местах пропустить использование мьютексов. Дескать вызов мьютекса вносит лишнюю задержку, а там надо было записать какую-то мелочь межзадачную. Хотя проблема инверсии приоритетов ему была прекрасно известна. Ну инверсия и произошла. Низкоприоритетная задача в результате остановила важные задачи по оперативному управлению. Теперь вопрос. Как MMU могло бы помочь этой проблеме? Ответите и докторская у вас в кармане.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|