Способы предотвращения тупиков путем тщательного распределения ресурсов. Алгоритм банкира
Можно избежать взаимоблокировки, если распределять ресурсы, придерживаясь определенных правил. Среди такого рода алгоритмов наиболее известен алгоритм банкира, предложенный Дейкстрой, который базируется на так называемых безопасных или надежных состояниях (safe state). Безопасное состояние – это такое состояние, для которого имеется по крайней мере одна последовательность событий, которая не приведет к взаимоблокировке. Модель алгоритма основана на действиях банкира, который, имея в наличии капитал, выдает кредиты.
Суть алгоритма состоит в следующем.
- Предположим, что у системы в наличии n устройств, например лент.
- ОС принимает запрос от пользовательского процесса, если его максимальная потребность не превышает n.
- Пользователь гарантирует, что если ОС в состоянии удовлетворить его запрос, то все устройства будут возвращены системе в течение конечного времени.
- Текущее состояние системы называется надежным, если ОС может обеспечить всем процессам их выполнение в течение конечного времени.
- В соответствии с алгоритмом банкира выделение устройств возможно, только если состояние системы остается надежным.
26. Резервирование ресурсов, как метод повышения надежности.
1.Основное положительное свойство резервирования состоит в том, что оно позволяет из малонадежных элементов проектировать надежные системы. Это свойство резервирования выгодно отличает его от остальных методов повышения надежности.
2.Выигрыш надежности по вероятности отказов GQ(t) всегда начинается с нуля и асимптотически стремится к единице независимо от надежности резервированной системы и ее элементов. При этом скорость роста GQ(t) тем выше, чем менее надежна основная система и чем ниже кратность резервирования. При нескользящем резервировании с дробной кратностью, начиная с определенного значения времени непрерывной работы системы, значения GQ(t) могут быть больше единицы. Это означает, что подобное резервирование может быть вообще нецелесообразным.
3.Выигрыш надежности резервированной системы по сравнению с нерезервированной тем выше, чем меньше время непрерывной работы резервированной системы и чем более надежная система резервируется. Это – основное противоречие всякого резервирования.
Выигрыш надежности по интенсивности отказов Gλ t) качественно не отличается от GQ(t) . Поэтому свойства резервированных систем, если их надежность оценивать интенсивностью отказов, будут теми же, что и при оценке надежности вероятностью отказов. Зависимости Gλ (t) имеют такой же вид, как и GQ(t) .
4.Среднее время безотказной работы при резервировании с дробной кратностью и нескользящем резерве может быть меньше, чем среднее время безотказной работы нерезервированной системы. Это может быть при условии, если число резервных систем меньше числа основных. С ростом кратности резервирования выигрыш надежности GQ(t) по среднему времени безотказной работы растет, причем скорость роста существенно убывает с ростом кратности резервирования. Это свойство также присуще общему и поэлементному резервированию с постоянно включенным резервом.
При резервировании замещением и идеальных переключателях выигрыш GT растет с ростом кратности резервирования линейно при общем резервировании, а при раздельном (поэлементном) или скользяще – быстрее. Схемная реализация резервирования замещением требует применения переключателей. Наличие переключателей существенно снижает скорость роста выигрыша GT(m). Существующие в настоящее время переключатели имеют настолько низкую надежность, что во многих случаях увеличение кратности резервирования замещением в его схемной реализации приводит к уменьшению скорости роста выигрыша GT.
Из сказанного вытекает, что значительное увеличение кратности резервирования, а следовательно веса, габаритов и стоимости аппаратуры, приводит к менее значительному увеличению среднего времени безотказной работы.
Это второе основное противоречие всякого резервирования, которое ограничивает его применения для повышения надежности сложных автоматических систем, предназначенных для длительной непрерывной работы.
5.С увеличением времени непрерывной работы резервированной системы ее коэффициент готовности Kг и выигрыш GKг падают.
Таким образом, резервирование увеличивает готовность системы к действию лишь при определенных ограничивающих условиях.
5. Характерная особенность сложных автоматических систем разового применения состоит в том, что большую часть времени они находятся в состоянии хранения. Очевидно, что в момент включения такой системы в работу все ее элементы должны быть исправными. Это означает, что выход из строя хотя бы одного элемента резервированной системы в процессе ее хранения следует считать отказом всей системы. Так как число элементов резервированной системы всегда выше числа элементов нерезервированной системы, то первая всегда будет иметь большую опасность отказов.
6.
Если кратность резервирования (m) , то тогда вероятность безотказной работы будет:
нерезервированной системы
резервированной
.
Очевидно, что при большой кратности резервирования (m) вероятность безотказной работы Pc(t) будет низкой.
Из приведенных рассуждений следует важный вывод: надежность резервированной системы в процессе ее хранения всегда ниже надежности нерезервированной системы одного и того же назначения. Увеличение числа отказов резервированной системы при ее хранении требует увеличения в m раз частоты проверок, увеличения числа запасных элементов. Все это приводит к увеличению стоимости эксплуатации.
Отмеченные свойства резервирования позволяют сделать следующие важные выводы:
1) резервирование как средство повышения надежности наиболее целесообразно применять для повышения надежности сложных систем, предназначенных для короткого времени непрерывной работы, часто требует высокой кратности резервирования. Это ограничивает его использование в системах, для которых существуют ограничения веса, габаритов или стоимости;
2) повышение надежности аппаратуры путем ее резервирования осуществляется за счет ухудшения таких ее характеристик, как вес, габариты, стоимость, условий эксплуатации (увеличение частоты проверок, числа запасных элементов, узлов и отдельных приборов и т.п.).
27. Управление нестационарными процессами в СРВ.
Управляющая программа СРВ – аналог ОС, управляет процессами и распределением ресурсов в СРВ, запускает и останавливает соответствующие процессы для обработки входных сигналов и распределяет ресурсы памяти и процессора. Однако обычно в управляющих програм-мах отсутствуют более сложные средства, присущие ОС, например средства управления файлами.
Несмотря на то что на рынке программных продуктов существует несколько управляющих программ СРВ,их часто проектируют самостоятельно как части систем из-за специальных требований, предъявляемых к конкретным СРВ.
Компоненты управляющей программы (рис. 2.1) зависят от размеров и сложности проектируемой СРВ. Обычно управляющие программы, за исключением самых простых, состоят из следующих компонентов.
1. Часы реального времени – компонент управляющей программы,периодически предоставляющий информацию для планирования процессов.
2. Обработчик прерываний – компонент управляющей программы, которыйуправляет апериодическими запросами к сервисам.
З. Программа-планировщик – компонент управляющей программы, просматривающий список процессов, которые назначены на выполнение, и выбирающий один из них.
4. Администратор ресурсов – компонент управляющей программы, которыйполучивпроцесс, запланированный на выполнение, выделяет необходимые ресурсы памяти и процессора.
5. Диспетчер (ядро) – компонент управляющей программы, которыйзапускает на выполнение какой-либо процесс.
Рис. 2.1. Компоненты управляющей программы реального времени
Входные сигналы, обрабатываемые СРВ, обычно имеют несколько уровней приоритетов. Для одних сигналов, например связанных с исключительными ситуациями, важно, чтобы их обработка завершалась в течение определенного интервала времени. Если процесс с более высоким приоритетом запрашивает сервис, то выполнение других процессов должно быть приостановлено. Вследствие этого администраторсистемы должен уметь управлять по крайней мере двумя уровнями приоритетов системных процессов.
28. Международные стандарты СРВ и их роль.
Большие различия в спецификациях ОСРВ и огромное количество существующих микроконтроллеров выдвигают на передний план проблему стандартизации в области систем реального времени.
Наиболее ранним и распространенным стандартом ОСРВ является стандарт POSIX(IEEE Portable Operating System Interface for Computer Environments, IEEE 1003.1). Первоначальный вариант стандарта POSIX появился в 1990 г. и был предназначен для UNIX-систем, первые версии которых появились в 70-х годах прошлого века. Спецификации POSIX определяют стандартный механизм взаимодействия прикладной программы и операционной системы и в настоящее время включают набор более чем из 30 стандартов. Для ОСРВ наиболее важны семь из них (1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21, 1003.2h), но широкую поддержку в коммерческих ОС получили только три первых.
Несмотря на явно устаревшие положения стандарта POSIX и большую востребованность обновлений стандартизации для ОСРВ, заметного продвижения в этом направлении не наблюдается.
Некоторые наиболее успешные компании в области систем реального времени объявляют о своем решении принять в качестве стандарта спецификации одной из своих продвинутых ОСРВ. Так поступила компания TRON (the RTOS Nucleus), которая в 1987г. выпустила в свет первые ITRON спецификации – ITRON1. Далее в 1989г. она разработала и выпустила спецификации µITRON для 8- и 16- битовых микроконтроллеров, а также спецификации ITRON2 для 32-битовых процессоров. ОСРВ ITRON описывается ниже в соответствующем разделе. Этот стандарт является очень распространенным в Японии.
Военная и аэрокосмическая отрасли предъявляют жесткие требования к вычислительным средствам, влияющим на степень безопасности целевой системы. В настоящее время имеются следующие стандарты для ОСРВ в авиации – стандарт DO-178B и стандарт ARINC-653. Поскольку эти стандарты разработаны в США, стоит отметить еще европейский стандарт ED-12B, который является аналогом DO-178B.
Распространенным также является стандарт OSEK/VDX [OSEK], который первоначально развивался для систем автомобильной индустрии.
Стандарт DO-178B, создан Радиотехнической комиссией по аэронавтике (RTCA, Radio Technical Commission for Aeronautics) для разработки ПО бортовых авиационных систем [DO178B]. Первая его версия была принята в 1982 г., вторая (DO-178A) - в 1985-м, текущая DO-178B - в 1992 г. Готовится принятие новой версии, DO-178C. Стандартом предусмотрено пять уровней серьезности отказа, и для каждого из них определен набор требований к программному обеспечению, которые должны гарантировать работоспособность всей системы в целом при возникновении отказов данного уровня серьезности
Данный стандарт определяет следующие уровни сертификации:
· А (катастрофический),
· В (опасный),
· С (существенный),
· D (несущественный)
· Е (не влияющий).
До тех пор пока все жесткие требования этого стандарта не будут выполнены, вычислительные системы, влияющие на безопасность, никогда не поднимутся в воздух.
Arinc-653
Стандарт ARINC-653(Avionics Application Software Standard Interface) разработан компанией ARINC в 1997 г. Этот стандарт определяет универсальный программный интерфейс APEX (Application/Executive) между ОС авиационного компьютера и прикладным ПО. Требования к интерфейсу между прикладным ПО и сервисами операционной системы определяются таким образом, чтобы разрешить прикладному ПО контролировать диспетчеризацию, связь и состояние внутренних обрабатываемых элементов. В 2003 г. принята новая редакция этого стандарта. ARINC-653 в качестве одного из основных требований для ОСРВ в авиации вводит архитектуру изолированных (partitioning) виртуальных машин.
Osek
Стандарт OSEK/VDX является комбинацией стандартов, которые изначально разрабатывались в двух отдельных консорциумах, впоследствии слившихся. OSEK берет свое название от немецкого акронима консорциума, в состав которого входили ведущие немецкие производители автомобилей – BMW, Bosch, Daimler Benz (теперь Daimler Chrysler), Opel, Siemens и Volkswagen, а также университет в Карлсруэ (Германия). Проект VDX (Vehicle Distributed eXecutive) развивался совместными усилиями французских компаний PSA и Renault. Команды OSEK и VDX слились в 1994г.
Первоначально проект OSEK/VDX предназначался для разработки стандарта открытой архитектуры ОС и стандарта API для систем, применяющихся в автомобильной промышленности. Однако разработанный стандарт получился более абстрактным и не ограничивается использованием только в автомобильной индустрии.
Стандарт OSEK/VDX состоит из трех частей – стандарт для операционной системы (OS), коммуникационный стандарт (COM) и стандарт для сетевого менеджера (NM). В дополнение к этим стандартам определяется некий реализационный язык (OIL). Первым компонентом стандарта OSEK является стандарт для ОС, поэтому часто стандарт OSEKошибочно воспринимается как стандарт ОСРВ. Хотя ОС и есть большая порция данного стандарта, мощность его состоит в интеграции всех его компонент.
29. Мультипроцессирование в СРВ.
Мультипрограммирование призвано повысить эффективность использования вычислительной системы [10, 17]. Однако эффективность может пониматься по-разному. Наиболее характерными показателями эффективности вычислительных систем являются:
· пропускная способность – количество задач, выполняемых системой в единицу времени;
· удобство работы пользователей, заключающихся, в частности, в том, что они могут одновременно работать в интерактивном режиме с несколькими приложениями на одной машине;
· реактивность системы – способность выдерживать заранее заданные (возможно, очень короткие) интервалы времени между запуском программы и получением конечного результата.
В зависимости от выбора одного из этих показателей эффективности ОС делятся на системы пакетной обработки, системы разделения времени и системы реального времени (некоторые ОС могут поддерживать одновременно несколько режимов).
Системы пакетной обработки предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов [11]. Максимальная пропускная способность компьютера достигается в этом случае минимизацией простоев его устройств и прежде всего процессора. Для достижения этой цели пакет заданий формируется так, чтобы получающаяся мультипрограммная смесь сбалансированно загружала все устройства машины. Например, в такой смеси желательно присутствие задач вычислительного характера и с интенсивным вводом-выводом. Однако в этом случае трудно гарантировать сроки выполнения того или иного задания.
В благоприятных случаях общее время выполнения смеси задач меньше, чем суммарное время их последовательного выполнения. При этом времени выполнения отдельной задачи может быть затрачено больше, чем при монопольном ее выполнении (рис. 5.4).
В системах разделения времени пользователям (в частном случае – одному) предоставляется возможность интерактивной работы сразу с несколькими приложениями. Для этого каждое приложение должно регулярно получать возможность "общения" с пользователем. Эта проблема решается за счет того, что ОС принудительно периодически приостанавливает приложения, не дожидаясь, когда они "добровольно" освободят процессор.
Рис. 5.4.Иллюстрация эффекта мультипрограммирования
Всем приложениям попеременно выделяются кванты времени процессора, таким образом, пользователи, запустившие программы на выполнение, получают возможность поддерживать с ними диалог (рис. 5.5) со своего терминала. Если время кванта выбрано достаточно небольшим, то у всех пользователей складывается впечатление единоличной работы на машине.
Рис. 5.5.Система разделения времени
Системы реального времени предназначены для управления техническими объектами (спутник, ракета, атомные электростанции, станок, научная установка и др.), технологическими процессами (гальваническая линия, доменный процесс и т.п.), системами обслуживания разного рода (резервирование авиабилетов, оплата покупок и счетов и др.). Во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа управления объектом. В противном случае возможны нежелательные последствия вплоть до аварии.
Критерием эффективности ОС в этом случае является способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата. Это время называется временем реакции системы, а соответствующее свойство – реактивностью. Требования ко времени реакции зависят от специфики управляемого объекта или процесса. В системах реального времени мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ решения функциональных задач управления объектом или процессом. Выбор программы на выполнение осуществляется по прерываниям (исходя из текущего состояния объекта) или в соответствии с расписанием плановых работ.
В системе реального времени обычно закладывается запас вычислительной мощности на случай пиковой нагрузки, а также принимаются меры обеспечения высокой надежности работы системы (резервирование, дублирование, троирование с мажоритарным элементом и др.).
Интересная форма мультипрограммной работы связана с мультипроцессорной обработкой. Мультипроцессорная обработка – это способ организации вычислительного процесса в системе с несколькими процессорами, при котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы. Концепция мультипроцессирования не нова, она известна с 70-х годов, однако стала доступной в широком масштабе лишь в последнее десятилетие, особенно с появлением многопроцессорных ПК (часто в качестве серверов ЛВС).
В отличие от мультипрограммной обработки, в мультипроцессорных системах несколько задач выполняется одновременно, т.к. имеется несколько процессоров. Однако это не исключает мультипрограммной обработки на каждом процессоре. При этом резко усложняются все алгоритмы управления ресурсами, т.е. операционная система. Современные ОС, как правило, поддерживают мультипроцессирование (Sun Solaris 2.x, Santa Cruz Operation Open Server 3.x, OS/2, Windows NT/2000/2003/XP, NetWare, начиная с версии 4.1 и др.).
Мультипроцессорные системы часто характеризуют как симметричные и как несимметричные. Эти термины относятся, с одной стороны, к архитектуре вычислительной системы, а с другой – к способу организации вычислительного процесса.
Симметричная архитектура мультипроцессорной системы предполагает однотипность и единообразие включения процессоров и большую разделяемую между этими процессорами память. Масштабируемость, т.е. возможность наращивания числа процессоров, в данном случае ограничена, т.к. все они используют одну и ту же оперативную память и, следовательно, должны располагаться в одном корпусе. В симметричных архитектурах вычислительных систем легко реализуется симметричное мультипроцессированиеобщей для всех процессоров операционной системой. При этом все процессоры равноправно участвуют и в управлении вычислительным процессом, и в выполнении прикладных задач. Разные процессоры могут в какой-то момент времени одновременно обслуживать как разные, так и одинаковые модули общей ОС. Для этого программы ОС должны быть реентерабельными(повторновходимыми).
Операционная система полностью децентрализована. Ее модули выполняются на любом доступном процессоре. Как только процессор завершает выполнение очередной задачи, он передает управление планировщику задач. Последний выбирает из общей для всех процессоров системной очереди задачу, которая будет выполняться на данном процессоре следующей.
В вычислительных системах с асимметричной архитектурой процессоры могут быть различными как по характеристикам (производительность, система команд), так и по функциональной роли в работе системы. Например, могут быть выделены процессоры для вычислений, ввода-вывода и др. Эта неоднородность ведет к структурным отличиям во фрагментах системы, содержащих разные процессоры (разные схемы подключения, наборы периферийных устройств, способы взаимодействия процессоров с устройствами и др.).
Масштабирование в таких системах реализуется иначе, поскольку отсутствует требование единого корпуса. Система может состоять из нескольких устройств, каждое из которых содержит один или несколько процессоров. Масштабирование в данном случае называют горизонтальным, а мультипроцессорную систему – кластерной. В кластерной системе может быть реализовано только асимметричное мультипроцессирование с организацией вычислительного процесса по принципу "ведущий – ведомый". Этот наиболее простой способ может быть использован и в вычислительных системах с симметричной архитектурой. В таких системах ОС работает на одном процессоре, который называется ведущим и организует централизованное управление вычислительным процессом и распределением всех ресурсов системы.
30. Параллельные и многонитевые структуры в системах РВ.
Многозадачность является важнейшим свойством современной ОС. Для поддержки этого свойства ОС определяет и оформляет для себя те внутренние единицы работы, между которыми и будет разделяться процессор и другие ресурсы компьютера. Эти внутренние единицы работы в разных ОС носят разные названия – задача, задание, процесс, нить. В некоторых случаях сущности, обозначаемые этими понятиями, принципиально отличаются друг от друга.
Говоря о процессах, мы отмечали, что операционная система поддерживает их обособленность: у каждого процесса имеется свое виртуальное адресное пространство, каждому процессу назначаются свои ресурсы – файлы, окна, семафоры и т.д. Такая обособленность нужна для того, чтобы защитить один процесс от другого, поскольку они, совместно используя все ресурсы машины, конкурируют с друг другом. В общем случае процессы принадлежат разным пользователям, разделяющим один компьютер, и ОС берет на себя роль арбитра в спорах процессов за ресурсы.
При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет работу одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса).
Однако задача, решаемая в рамках одного процесса, может обладать внутренним параллелизмом, который в принципе позволяет ускорить ее решение. Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой «ветви» процесса.
Для этих целей современные ОС предлагают использовать сравнительно новый механизм – многонитевость (multithreading). При этом вводится новое понятие «нить» (thread), а понятие «процесс» в значительной степени меняет смысл.
Мультипрограммирование теперь реализуется на уровне нитей, и задача, оформленная в виде нескольких нитей в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения ее отдельных частей. Например, если электронная таблица была разработана с учетом возможностей многонитевой обработки, то пользователь может запросить пересчет своего рабочего листа и одновременно продолжать заполнять таблицу. Особенно эффективно можно использовать многонитевость для выполнения распределенных приложений, например, многонитевый сервер может параллельно выполнять запросы сразу нескольких клиентов.
Нити, относящиеся к одному процессу, не настолько изолированы друг от друга, как процессы в традиционной многозадачной системе, между ними легко организовать тесное взаимодействие. Действительно, в отличие от процессов, которые принадлежат разным, вообще говоря, конкурирующим приложениям, все нити одного процесса всегда принадлежат одному приложению, поэтому программист, пишущий это приложение, может заранее продумать работу множества нитей процесса таким образом, чтобы они могли взаимодействовать, а не бороться за ресурсы.
В традиционных ОС понятие «нить» тождественно понятию «процесс». В действительности часто бывает желательно иметь несколько нитей, разделяющих единое адресное пространство, но выполняющихся квазипараллельно, благодаря чему нити становятся подобными процессам (за исключением разделяемого адресного пространства).
Нити иногда называют облегченными процессами или мини-процессами. Действительно, нити во многих отношениях подобны процессам. Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и стек. Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить из состояния в состояние. Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ. Пока одна нить заблокирована, другая нить того же процесса может выполняться. Нити разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования.
Однако различные нити в рамках одного процесса не настолько независимы, как отдельные процессы. Все такие нити имеют одно и то же адресное пространство. Это означает, что они разделяют одни и те же глобальные переменные. Поскольку каждая нить может иметь доступ к каждому виртуальному адресу, одна нить может использовать стек другой нити. Между нитями нет полной защиты, потому что, во-первых, это невозможно, а во-вторых, не нужно.
Все нити одного процесса всегда решают общую задачу одного пользователя, и аппарат нитей используется здесь для более быстрого решения задачи путем ее распараллеливания. При этом программисту очень важно получить в свое распоряжения удобные средства организации взаимодействия частей одной задачи. Кроме разделения адресного пространства, все нити разделяют также набор открытых файлов, таймеров, сигналов и т.п.
Итак, нити имеют собственные: программный счетчик;стек; регистры; нити-потомки; состояние.
Нити разделяют: адресное пространство; глобальные переменные; открытые файлы; таймеры; семафоры; статистическую информацию.
Многонитевая обработка повышает эффективность работы системы по сравнению с многозадачной обработкой. Например, в многозадачной среде Windows можно одновременно работать с электронной таблицей и текстовым редактором. Однако, если пользователь запрашивает пересчет своего рабочего листа, электронная таблица блокируется до тех пор, пока эта операция не завершится, что может потребовать значительного времени. В многонитевой среде в случае, если электронная таблица была разработана с учетом возможностей многонитевой обработки, предоставляемых программисту, этой проблемы не возникает, и пользователь всегда имеет доступ к электронной таблице.
Широкое применение находит многонитевая обработка в распределенных системах. Некоторые прикладные задачи легче программировать, используя параллелизм, например задачи типа «писатель-читатель», в которых одна нить выполняет запись в буфер, а другая считывает записи из него. Поскольку они разделяют общий буфер, не стоит их делать отдельными процессами.
Другой пример использования нитей – это управление сигналами, такими как прерывание с клавиатуры (del или break). Вместо обработки сигнала прерывания, одна нить назначается для постоянного ожидания поступления сигналов. Таким образом, использование нитей может сократить необходимость в прерываниях пользовательского уровня. Важно не параллельное выполнение, а ясность программы.
В мультипроцессорных системах для нитей из одного адресного пространства имеется возможность выполняться параллельно на разных процессорах. Правильно сконструированные программы, которые используют нити, должны работать одинаково хорошо как на однопроцессорной машине в режиме разделения времени между нитями, так и на настоящем мультипроцессоре.
31. Виды изменения хода выполнения программы
Особенностью активной отладки является возможность изменения выполнения задачи.
- Изменение данных.
Отладчик имеет возможность изменять значения переменных, содержимое регистров и памяти. Это позволяет корректировать выполнение задачи, проверяя предположения об ошибках в ее коде.
- Продолжение выполнения задачи с любого адреса.
Пользователь может потребовать продолжить выполнение задачи с другого адреса (например, обходя критический участок кода).
- Продолжение выполнения задачи до некоторого адреса.
В этом случае ставится временная точка прерывания на нужный адрес, и задача выполняется, пока этот адрес не будет достигнут. Как и в случае с обычной точкой прерывания, отладчик обеспечивает установку временной точки прерывания на начало строки исходного текста, на конкретный адрес или на точку входа некоторой функции. Однако, помимо этого отладчик может ставить временную точку прерывания на адрес возврата текущей функции, реализуя выполнение задачи вплоть до завершения этой функции.
Механизм установки временной точки прерывания используется и в режиме пошаговой отладки. Тогда точка прерывания ставится на следующую исполняемую инструкцию или (в случае отладки без захода в вызываемые функции) на инструкцию, следующую за вызовом функции.
- Возврат из функции.
Может возникнуть ситуация, когда пользователю понадобится завершить выполнение функции с определенным возвращаемым значением. В этом случае отладчик выполняет следующие действия:
- Приведение заданного пользователем значения к типу возвращаемого значения этой функции.
- Восстановление сохраненных регистров.
- Установка возвращаемого значения в требуемую область памяти/регистр.
- Установка указателя стека на предыдущий кадр.
- Установка точки выполнения программы на адрес возврата заданной функции.
- Уничтожение текущего кадра стека.
Описывая отладочные действия, стоит упомянуть об инструментальной системе ЭСКОРТ ([27]), созданной в Научно-исследовательском институте системных исследований РАН как средство повышения производительности труда профессиональных программистов. Основу ЭСКОРТа составляет интегрированная система редактирования - компиляции - выполнения.
Программы в ЭСКОРТе имеют нетекстовое представление. Более точно, все программные объекты представлены как объекты базы данных. Средствами БД ЭСКОРТа реализовано хранение предыдущих состояний объектов (и, в частности, значений переменных), откатка, "откатка откатки" и т.п., что позволяет дать в руки программисту мощные средства контролируемого выполнения (пошаговое, с контролем значений переменных, обратное и т.д.). Правда, на сегодняшний день, для современных систем реального времени, средства, предлагаемые в рамках ЭСКОРТа, представляются слишком тяжеловесными (хотя и весьма перспективными).
32. Локальная сетевая организация СРВ.
33. Особенности параллельных и многонитевых вычислительных структур.
34. Влияние характеристик аппаратных устройств на качество СРВ.
35. Методы оценки переменных в СРВ.
36. Особенности спорадических процессов в СРВ.
37. Методы борьбы со спорадическими нарушениями.
38. Анализ требований объекта по времени обработки прерывания.
39. Динамическое перераспределение приоритетов прерываний.
Список тем Рефератов
- Выбор типа и характеристик устройств ввода-вывода в СРВ.
- Выбор организации адресного пространства в системах СРВ.
- Выбор типа системных шин и магистралей в СРВ.
- Методы переключения ресурсов в СРВ.
- Запросы и взаимоблокировки в СРВ.
- Статический алгоритм планирования процессов - RMS.
- Динамический алгоритм планирования процессов – EDF.
- Методы предупреждения взаимоблокировки.
- Локализация и ликвидация взаимоблокировок.
- Особенности спорадических процессов в СРВ.
- Методы борьбы со спорадическими нарушениями.
- Резервирование ресурсов, как метод повышения надежности.
- Управление нестационарными процессами в СРВ.
- Методы оценки переменных в СРВ.
- Меры компенсации транспортного запаздывания.