fk0, легенда (13.09.2013 12:45 - 12:51, просмотров: 300) ответил Mahagam на да ладно. защита памяти нужна только для запуска стороннего кода
Ещё раз. Есть вероятность сбоя. Она всегда есть. ПО для МК -- это комплекс из нескольких компонентов, где в больших МК число компонентов достаточно высоко и связность между ними тоже высокая. Надёжность компонента ПО порядка 0.999... Когда ПО стоит из двух компонентов -- это полностью устраивает. Когда имеется сотня компонентов (модулей на языке) и сбой в любом приводит к тотальному краху: 0.999^100 = 0.90. С точки зрения стороннего наблюдателя -- это значит "постоянно глючит".
Это если грубо, не разбираясь в ошибках. Если детальней. MPU даёт изоляцию компонентов ПО и сбои в одних компонентах перестают влиять на другие компоненты. Т.е. при сбоях в одних функциях прибора мы не имеем перезагрузку всего прибора, а получаем только отказ данной функции. А в ОС типа windows или linux может быть даже и не получаем -- программа может что-то портить, например, в своём сегменте памяти и эта "порча" может даже не влиять на нормальную работу. В МК ввиду ограниченных объёмов памяти и отсутствия виртуальной памяти (MMU) пустых участков нет и велик шанс испортить память соседнего компонента со всеми последствиями. Напрашивается прямая аналогия с перезагрузкой ПК от любого сбоя в программе -- на самом деле в ОС типа windows или linux перманентно происходят сбои в программах, по большей части не обнаружимые. Этот факт легко заметен, если работал с чем-то вроде valgrind. Он далеко не все ошибки обнаруживает. А без valgrind ещё хуже.
Ещё один аспект -- MPU позволяет ошибки вообще обнаруживать. Без MPU они могут быть никогда не обнаружены. Программа иногда (а не на тестовых примерах) посчитает неправильно (пример из жизни, измерительный прибор: только в определённом диапазоне измеряемых величин резко увеличивалась погрешность -- и не скажешь даже сходу, что программная ошибка). Или посчитает правильно, но опять же иногда, испортит какую-то память ответственную за другую функцию. С MPU имеем сразу аварийную остановку и диагностику для отладки. Альтернатива -- только что-то вроде Java машины.
[ZX]