Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anonymous/ff6797d141ce31be2294b89b3f7ee096 to your computer and use it in GitHub Desktop.
Save anonymous/ff6797d141ce31be2294b89b3f7ee096 to your computer and use it in GitHub Desktop.
Ошибки программного обеспечения причины

Ошибки программного обеспечения причины



Ссылка на файл: >>>>>> http://file-portal.ru/Ошибки программного обеспечения причины/


Реферат: Надежность программного обеспечения
Основные причины отказов программного обеспечения
13 Надежность программного обеспечения
























В статье даны основные сведения об операционной системе VxWorks , а также описаны преимущества ее использования в бортовом авиационном оборудовании и вычислительных модулях GE Intelligent Platforms. Процессоры с архитектурой MIPS редко встречаются во встраиваемых системах — куда чаще используется тот же ARM. И когда разработчик впервые сталкивается с таким процессором, ему бывает сложно осознать некоторые нюансы их использования. Данная статья поможет разобраться с одним из аспектов — обработкой исключений. В статье рассмотрены тенденции развития компьютерных платформ на транспорте и сформулированы требования к ним. Описаны особенности построения системы питания для отказоустойчивых компьютерных систем и последовательность отбраковочных испытаний таких систем. Приведены примеры построения информационных систем и систем безопасности на базе отказоустойчивого одноплатного компьютера компании Adlink. Статья представляет собой перевод [1]. Современная светотехника Электронные компоненты Медиагруппа "Электроника" Форум и Премия ЖЭР Справочник ЖЭР. По вопросам размещения рекламы обращайтесь в отдел рекламы. Неправильный подход к развитию искусственного интеллекта может привести к вымиранию человечества [1]. Минэкономразвития дало отрицательный отзыв на предложения о законе Яровой [1]. Российские светодиодные лампы теперь поставляются и на Ближний Восток [1]. Texas Instruments может приобрести компанию AMD [1]. Большинство ударивших по Сирии американских "Томагавков" было нейтрализовано российскими средствами радиоэлектронной борьбы [1]. Новости Обзоры, аналитика Интервью, презентации. Ранее Платформы на основе Intel Сore 2 Duo от GE Intelligent Platforms с поддержкой ОС VxWorks позволяют заказчикам снизить программные риски В статье даны основные сведения об операционной системе VxWorks , а также описаны преимущества ее использования в бортовом авиационном оборудовании и вычислительных модулях GE Intelligent Platforms. Обработка исключений в процессорах MIPS-совместимой архитектуры Процессоры с архитектурой MIPS редко встречаются во встраиваемых системах — куда чаще используется тот же ARM. Отказоустойчивые компьютерные платформы на транспорте: Ссылки Современная светотехника Электронные компоненты Медиагруппа "Электроника" Форум и Премия ЖЭР Справочник ЖЭР. Реклама По вопросам размещения рекламы обращайтесь в отдел рекламы. Руководителям Обзоры, аналитика Встраиваемые системы. Однако эти ошибки периодически дают о себе знать. В статье, представляющей собой перевод [1], анализируется несколько типичных ошибок ПО и даются рекомендации по их предотвращению. В статье, представляющей собой перевод [1], анализируется. Обнаружение и устранение скрытых неисправностей во встра-. Зачастую требуются героические усилия и доро-. В наихудшем случае эта нераскры-. В статье рассматриваются наиболее частые основные причины. Условие состязание — это ситуация, при которой совместный. Например, рассмотрим два исполняющихся потока, один из. В случае если приращение не выполня-. Данную ситуацию можно наглядно пояснить с. Конфликт между двумя обновлениями переменной счетчика. Результат может ощутимо сказываться на работе. Возникновение условий состязания можно предот-. Для устранения условий состязания. В случае состязания между двумя задачами ОСРВ наи-. Следует заметить, что не. Совместно используемые данные и произвольное прерывание. Однако эта ошибка не всегда случается, что суще-. Пять причин ошибок встраиваемого. Майкл барр Michael Barr , разработчик встраиваемых программ. Определите все потенциально общие объекты, в. Стандарт Netrino Embedded C Coding Standard реко-. Проблема нереентерабельности является частным случаем воз-. Как следствие, ошибки пери-. На рисунке 2 представлен типичный сценарий, в котором про-. Та, в свою очередь, вызывает функцию протокола IP-уровня,. Однако все эти функции драйвера Ethernet работают с одним. Если во время этой работы с регистрами раз-. Каждый совместно используемый ресурс становится причиной возможного сбоя. А был поставлен в очередь, но до момента его пересылки. Затем задача Б вызывает функцию уровня сокетов, которая. Этот драйвер ставит в очередь и. После того как управление ЦП возвращает-. Пакет А потеряется, не отправившись в сеть. Для реализации возможности почти мгновенного вызова функ-. Если каждая из них использу-. Большинство функций С реентерабельно, тогда как драйверы и. Для того чтобы сделать функции реентерабельными, необхо-. Это осуществляется за счет блокировки одного или. Специфика данной задачи диктует. Создайте и поместите мутекс в каждую библиоте-. Сделайте использование этого механизма предварительным. Следите за тем, чтобы нереентерабельные функции не попали в. Кроме того, нереентерабельные функции могут. ПрОПУск ключевОгО слОва volatile. Ошибка при определении тегов для некоторых типов пере-. Описатель volatile используется при объявлении перемен-. Например, оптимизатор кода см. Ключевое слово volatile необходимо использо-. Следует заметить, что помимо чтения и записи для заданной. Другие доступы volatile до чтения и записи. Каждый программист знает, что переполнение стека — Очень. При этом каждое переполнение бывает. Характер сбоя и интервал неправильного функцио-. К сожалению, переполнение стека оказывает отрицательное. На то имеется несколько при-. Проблему переполнения стека усложняет и то, что никакое. Редко возникающие условия переполнения стека. Убедиться в том, что перепол-. Однако этот анализ потребуется. При запуске выделите цветом те области диаграм-. При выполнении программы периодически про-. Библиотеки и драйверы устройств могут скрывать нереентерабельные функции. Динамическое распределение памяти не нашло широкого при-. На то есть вполне обоснованные причины,. Все структуры данных, созданные с помощью стандартной. ОЗУ с заранее определенным максимальным размером. Изначально каждое выделение ресурса из этой области. Например, в некой системе. В результате размещения двух 4-Кбайт структур. Неиспользуемые в дальнейшем структуры данных можно воз-. Теоретически, эта область памяти. Чтобы понять, какие осложнения может вызвать фрагментация,. В результате свободный участок. Несмотря на то, что суммарное свобод-. Явление фрагментации схоже с энтропией: В большинстве встраиваемых систем фрагментация,. Как добиться того, чтобы встроенное ПО справлялось с таки-. Этой ошибки гарантированно можно избежать,. Однако если в той или иной. Как правило, в основном эта проблема. Если бы все запросы требовали памяти одинакового раз-. У многих операционных систем реального времени имеется пул. При доступе к одному из. Чтобы сократить объем работы по отладке программы, следует. Годятся и стандартные правила. Заподозрив, что в созданном коде скрыт. Фиксированные блоки памяти не подвержены фрагментации. Майкл Барр Michael Barr , разработчик встраиваемых программ Комментарии [ ]. Неправильный подход к развитию искусственного интеллекта может привести к вымиранию человечества [1] Минэкономразвития дало отрицательный отзыв на предложения о законе Яровой [1] Российские светодиодные лампы теперь поставляются и на Ближний Восток [1] Texas Instruments может приобрести компанию AMD [1] Большинство ударивших по Сирии американских "Томагавков" было нейтрализовано российскими средствами радиоэлектронной борьбы [1] все комментарии. Горячие темы все комментарии. Новости Обзоры, аналитика Интервью, презентации Ранее Платформы на основе Intel Сore 2 Duo от GE Intelligent Platforms с поддержкой ОС VxWorks позволяют заказчикам снизить программные риски В статье даны основные сведения об операционной системе VxWorks , а также описаны преимущества ее использования в бортовом авиационном оборудовании и вычислительных модулях GE Intelligent Platforms. Руководителям Обзоры, аналитика Встраиваемые системы 11 мая Пять причин ошибок встраиваемого программного обеспечения Очень часто разработчики программного обеспечения прекращают попытку обнаружить причину редких отклонений в работе системы от нормы, которые с трудом можно воспроизвести в лабораторных условиях. Обнаружение и устранение скрытых неисправностей во встра- иваемом программном обеспечении является непростой задачей. Зачастую требуются героические усилия и доро- гостоящие средства, чтобы отследить в обратном направ- лении главную причину наблюдаемого отказа системы, ее зависания или другого непредсказуемого поведения при выполнении программы. В наихудшем случае эта нераскры- тая причина приводит к такому повреждению кода или дан- ных, при котором система еще некоторое время не подает признаков неисправности и отлично функционирует. В статье рассматриваются наиболее частые основные причины затруднений, мешающих инженерам выявить источник неис- правностей, и даются рекомендации по предотвращению этих сбоев. УслОвие сОстязания Условие состязание — это ситуация, при которой совместный результат исполнения двух или более потоков например, либо задач ОСРВ, либо main или обработчика прерываний зависит от точного порядка выполнения процессором каж- дой чередующейся команды. В случае если приращение не выполня- ется атомарно за один командный цикл , возникает условие состязания. Данную ситуацию можно наглядно пояснить с помощью перекрестка с движущимися машинами см. Конфликт между двумя обновлениями переменной счетчика никогда не происходит или случается редко. Однако если это произойдет, счетчик в тот момент не обнулится в памяти: Результат может ощутимо сказываться на работе системы, но, возможно, в течение непродолжительного вре- мени после конфликта. Возникновение условий состязания можно предот- вратить, окружив критические участки кода, которые должны выполняться атомарно, соответствующим приоритетным пре- рыванием обслуживания. Для устранения условий состязания с помощью стандартной программы обслуживания прерыва- ний требуется, по крайней мере, запретить один сигнал пре- рывания на время выполнения другого критического участка кода. В случае состязания между двумя задачами ОСРВ наи- лучший способ его предотвратить заключается в создании механизма синхронизации доступа mutex — мутекс к обще- му ресурсу, который регулирует обращение каждой задачи к критическому участку программы. Следует заметить, что не стоит полагаться на возможности конкретного ЦП обеспечить атомарность, так как он лишь предотвращает возникновение условий состязания до изменения компилятора или ЦП. Совместно используемые данные и произвольное прерывание обслуживания являются причинами возникновения условий состязания. Однако эта ошибка не всегда случается, что суще- Пять причин ошибок встраиваемого программного обеспечения Майкл барр Michael Barr , разработчик встраиваемых программ ственно затрудняет поиск причин ее возникновения. Таким образом, необходимо самым тщательным образом предусма- тривать защиту всех совместно используемых объектов. Определите все потенциально общие объекты, в т. Локализация всех потенциальных общих объектов станет первым шагом на пути ревизии программы для устранения условий состязания. Как следствие, ошибки пери- ода исполнения, вызванные нереентерабельной функцией, обычно не воспроизводятся, что усложняет их отладку. К сожалению, нереентерабельную функцию сложнее отследить при анализе кода, чем другие типы условий состязания. На рисунке 2 представлен типичный сценарий, в котором про- граммные объекты software entities , испытывающие преры- вание, также являются задачами ОСРВ. Однако вместо того, чтобы напрямую работать с общим объектом shared object , используется косвенная адресация к функции. Предположим, что задача А вызывает функцию протокола на уровне соке- тов, которая обращается к функции протокола уровня TCP. Та, в свою очередь, вызывает функцию протокола IP-уровня, которая обращается к драйверу Ethernet. Для обеспечения надежной работы системы требуется, чтобы все эти функции были реентерабельные. Однако все эти функции драйвера Ethernet работают с одним глобальным объектом в виде регистров кристалла Ethernet- контроллера. Если во время этой работы с регистрами раз- решено приоритетное прерывание обслуживания, задача Б рис. Каждый совместно используемый ресурс становится причиной возможного сбоя 46 вс 2[май] Программное обеспечение может прервать выполнение задачи А, после того как пакет А был поставлен в очередь, но до момента его пересылки. Затем задача Б вызывает функцию уровня сокетов, которая обращается к функции TCP-протокола; та, в свою очередь, вызывает функцию протокола IP-уровня, которая обраща- ется к драйверу Ethernet. Этот драйвер ставит в очередь и передает пакет Б. После того как управление ЦП возвращает- ся к задаче Б, он требует установить пересылку. В зависимо- сти от схемы кристалла Ethernet-контроллера, произойдет либо повторная пересылка пакета Б, либо возникнет ошибка. Для реализации возможности почти мгновенного вызова функ- ций Ethernet-драйвера из нескольких задач ОСРВ эти функции должны быть реентерабельными. Если каждая из них использу- ет только стековые переменные, изменять их тип не требуется. Большинство функций С реентерабельно, тогда как драйверы и некоторые другие функции не являются таковыми. Для того чтобы сделать функции реентерабельными, необхо- димо приостановить приоритетное прерывание обслужи- вания всех доступов регистров периферийных устройств, глобальных переменных, включая статические локальные переменные, постоянные объекты динамически распреде- ляемой области, а также области совместно используемой памяти. Это осуществляется за счет блокировки одного или более прерываний либо с помощью механизма синхрониза- ции доступа — мутекса. Специфика данной задачи диктует наиболее действенное решение. Создайте и поместите мутекс в каждую библиоте- ку или модуль драйвера, не являющийся реентерабельным. Сделайте использование этого механизма предварительным условием работы с любыми долговременными данными или совместными регистрами всего модуля в целом. Например, один и тот же мутексом можно применять для предотвра- щения условий состязания, включая не только регистры контроллера Ethernet, но и счетчик пакетов. Все функции модуля, имеющие доступ к этим данным, должны следовать указанному протоколу, чтобы использовать мутекс, прежде чем работать с объектами. Следите за тем, чтобы нереентерабельные функции не попали в используемую программу как часть связующего ПО сторон- него разработчика, унаследованного кода или драйверов устройств. Если для создания приложений ОСРВ применяется компилятор GNU, следует задействовать Newlib —реентерабельную реализацию стан- дартной библиотеки языка С, а не стандарт по умолчанию. ПрОПУск ключевОгО слОва volatile Ошибка при определении тегов для некоторых типов пере- менных с помощью ключевого слова volatile языка С может привести к непредсказуемому поведению системы, кото- рая нормально функционирует, только когда оптимизатор компилятора установлен на низкий уровень или отключен. Описатель volatile используется при объявлении перемен- ных, цель которой заключается в том, чтобы предотвратить оптимизацию чтения и записи этой переменной. Таким образом, volatile является тем механизмом, который не позволяет компилятору выполнять некорректную оптимизацию. Ключевое слово volatile необходимо использо- вать для объявления: Другие доступы volatile до чтения и записи переменной volatile выполняются перед этим доступом. ПереПОлнение стека Каждый программист знает, что переполнение стека — Очень Неприятная Вещь. При этом каждое переполнение бывает разным. Характер сбоя и интервал неправильного функцио- нирования целиком зависят от того, какие данные или коман- ды пострадали и как они используются. Важно отметить, что продолжительность времени между переполнением стека и отрицательными последствиями этого события для системы зависит от того, за какое время произошло переполнение до использования пострадавших данных. К сожалению, переполнение стека оказывает отрицательное влияние на встраиваемые системы намного чаще, чем, например, на настольные ПК. На то имеется несколько при- чин, в т. Проблему переполнения стека усложняет и то, что никакое тестирование не может гарантировать достаточный объем стека — систему можно проверить при разной нагрузке, и только. Редко возникающие условия переполнения стека невозможно предусмотреть. Убедиться в том, что перепол- нение стека не произойдет ни при каких условиях, можно при определенных алгоритмических ограничениях напри- мер, в отсутствие рекурсии с помощью нисходящего анали- за потока управления кода. Однако этот анализ потребуется повторно проводить всякий раз при изменении кода. При запуске выделите цветом те области диаграм- мы памяти, которые, вероятнее всего, не будет использовать- ся стеками. При выполнении программы периодически про- веряйте с помощью контрольной задачи, не был ли превышен максимально заданный размер памяти. Все ошибки относи- тельно превышения отведенной памяти и его объема тем или рис. Библиотеки и драйверы устройств могут скрывать нереентерабельные функции 47 встраиваемые системы 2 Прикладное ПО иным стеком рекомендуется записать в энергонезависимую память и принять соответствующие меры по обеспечению безопасности пользователей — например, предусмотреть управляемое завершение программы или ее перезапуск до того, как произойдет переполнение стека. Этой функцией можно оснастить сторожевую схему системы. На то есть вполне обоснованные причины, одной из которых — проблема фрагментации кучи heap — область памяти, выделяемая программе для динамически размещаемых структур данных. Изначально каждое выделение ресурса из этой области уменьшает количество остающегося свободного простран- ства на то же количество байтов. Например, в некой системе куча может достигать размера 10 Кбайт, начиная с адреса 0x В результате размещения двух 4-Кбайт структур данных останется 2 Кбайт свободного пространства. Неиспользуемые в дальнейшем структуры данных можно воз- вратить в кучу, вызвав free или воспользовавшись клю- чевым словом delete. Теоретически, эта область памяти становится доступной для повторного использования при последующем распределении ресурсов. Однако порядок назначения и удаления, как правило, носит псевдослучай- ный характер, что приводит к фрагментации кучи. Чтобы понять, какие осложнения может вызвать фрагментация, рассмотрим, что произойдет, если освободится первая из 4-Кбайт структур данных. В результате свободный участок кучи размером 2 Кбайт увеличится еще на 4 Кбайт. Эти обла- сти памяти не являются смежными, и их нельзя объединить из-за фрагментации. Несмотря на то, что суммарное свобод- ное пространство достигает 6 Кбайт, ресурсы выше 4 Кбайт распределить в него невозможно. В большинстве встраиваемых систем фрагментация, в конце концов, приводит к отказу запросов на размещение. Как добиться того, чтобы встроенное ПО справлялось с таки- ми ситуациями? Этой ошибки гарантированно можно избежать, прекратив пользоваться кучей. Однако если в той или иной системе требуется организовать динамическое распределе- ние памяти, следует структурировать кучу для предотвра- щения фрагментации. Как правило, в основном эта проблема вызвана запросами на выделение памяти разных объемов. Если бы все запросы требовали памяти одинакового раз- мера, подошел бы любой свободный блок, даже не сосед- ствующий с другими свободными участками. У многих операционных систем реального времени имеется пул памяти фиксированного размера API. При доступе к одному из таких пулов рекомендуется им воспользоваться вместо malloc и free или записать собственный пул API. Для этого понадобится три функции: Наилучшей проверкой является полный анализ кода, выполненный сторонним программистом. Годятся и стандартные правила программирования, предусматривающие рекомендованные в статье методы. Заподозрив, что в созданном коде скрыт один из рассмотренных сбоев, анализ программы быстрее позволит выявить ошибку, чем ее отслеживание от наблю- даемого дефекта до первопричины. Фиксированные блоки памяти не подвержены фрагментации Оцените материал:


Лев обезьяна характеристика знака
Какая статья мошенничество в особо крупных размерах
Зона обитания вида 5 букв
Типы неисправностей программного обеспечения
Пути решения проблем межэтнических отношений
Сколько времени жарить стейкиз семги
Студентка и учитель рассказы
Причины появления ошибок в программном обеспечении
Как сделать дизайн класса
Как одевать линзы первый раз видео цветные
Лекции - Надежность информационных систем - файл n1.doc
Как на леново переместить фото на карту
Как правильно клеить мозаику видео
В цепи схемакоторой приведенана рисунке
Это интересно!
Как называется фильм где три подруги
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment