[an error occurred while processing this directive]
|
Кое-что о многозадачности знаю. Сам реализовал вытесняющую на AVR. Открыл для себя очень много того, о чём ранее и не задумывался. На этапе отладки все выглядело, как Win98 - и перезагрузы и зависания. Мало выделил памяти под стек одной из задач - он заполз на соседнюю задачу... И никак от этого не защититься, так как механизмов защиты у AVR нет. Как выяснилось, на i486 и выше многозадачность реализована так же, как и у меня, с той лишь разницей, что у i486 есть сегментация программной памяти, что само по себе тоже защита, и механизм защиты от того, что приложение попытаеся перепрыгнуть за выделенный ей предел. Про ARM, каюсь, ничего подобного не читал. Если я правильно понял, то MMU - это и есть механизм, который при попытке приложения выскачить за пределы выделенной ему программной памяти, либо обратиться к ячейке памяти данных за пределом выделенного дипазаона, формирует аппаратное прерывание. А обработчик прерывания сделает, что нужно. Скорее всего закроет это приложение. Если я не прав, то прошу меня поправить. По долгу службы заинтересовался одним готовым контроллером http://www.moxa.com/product/UC-7110-LX.htm, с uCLinux на Samsung S3C2500. На этом процессоре, как выяснилось, MMU нет. uCLinux - как раз для него. Не получится ли, что одна из задач может изменить данные OS, либо другой задачи, тем самым нарушить работу всей системы? Или MMU - не единственный механизм защиты многозадачности у ARM? Есть ли у ARM сегментация, как у x86 и механизм смены банков регистров, как у MCS51?
Спасибо!
E-mail: info@telesys.ru