Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные системы реального времени и технологии разработки кроссплатформенного программного обеспечения. Ч.1. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
6.4. Особенности управления памятью в операционных системах реального…
121
1. Даже если все страницы виртуальной памяти загружены и отоб-
ражаются в физическую память, то вносимая во время трансляции адресов задержка не является определенной заранее, т.е. ожидаемой. Эта “пауза” между операциями зависит от нескольких факторов, например, находится ли страница в кэше трансляции страниц, был ли уже ранее рассчитан и закэ­широван адрес и т.д.
2. Если некоторые страницы виртуальной памяти находятся за пре-
делами физической памяти и находятся на внешнем носителе, то задержка, связанная с трансляцией адресов, не только не является определенной, но и может быть очень большой. Это также зависит от многих факторов, например от размеров требуемой программе памяти, скорости чтения диска и занятости системы в целом.
Для того чтобы уменьшить эффект задержки, в операционных систе-
мах реального времени существуют специальные системные вызовы, со­храняющие (кэширующие) ранее загружаемые страницы в физической па­мяти с запретом переноса на внешний дисковый накопитель.
Время задержки на переключение контекста потока напрямую зави-
сит от конфигурации памяти, т.е. от Модели защиты памяти, которая строго соблюдается в системе. Можно привести примеры наиболее часто применяемых моделей работы с памятью.
1. Модель памяти без защиты.
2. Модель защиты Система–Пользователь.
3. Модель защиты Пользователь–Пользователь.
4. Модель защиты виртуальной памяти.
Согласно Модели памяти без защиты, которая часто применялась в
ранних операционных системах (например, в MS DOS), системное адрес­ное пространство и пользовательское пространство никак не изолирова­лись друг от друга. Здесь применялось два сегмента памяти, называемые Сегмент кода и Сегмент данных. Метки этих Сегментов напрямую разме­щались в файле программы. Например, на языке Ассемблер применялись аббревиатуры dataseg, codeseg. То же самое происходило и с сегментом стека (stack). В этом подходе не требовалось специальное аппаратное устройство для поддержки виртуальной памяти и контроля доступа к обла­стям памяти. Программа исполнялась одна на фоне системных вызовов.
6. Управление памятью
122
Модель защиты Система–Пользователь подразумевает, что систем­ное адресное пространство изолируется и защищается от адресного про­странства пользователя. Системные и пользовательские процессы выпол­няются уже в общем виртуальном адресном пространстве, и при этом тре­буется аппаратная система управления памятью MMU (Memory management unit). При этом используются страничные механизмы доступа и соответственно защиты памяти. Различают системные и пользователь­ские страницы. Однако пользовательские страницы никак не защищаются друг от друга. Процессор находится в режиме супервизора и работает с сег­ментами, оценивая уровень привилегий текущего сегмента задачи. При­нято различать четыре уровня привилегий с номерами от 0 до 3. Пользова­тельский (самый низкий) уровень привилегий – 3. Уровни от 0 до 2 принад­лежат сегментам кода и являются системными. В такой модели механизм страничного доступа не добавляет никаких накладных расходов к процессу управления памятью, так как защита срабатывает одновременно с преобра­зованием адреса. А преобразование адреса проводит MMU и при этом сама операционная система в этом процессе непосредственно не участвует.
Модель защиты Пользователь–Пользователь добавляет к модели за­щиты Система–Пользователь дополнительный уровень, реализуемый сов­местно с MMU. Как и в предыдущем случае, применяется страничный ме­ханизм управления памятью. Все страницы помечаются как привилегиро­ванные за исключением страниц текущего исполняемого процесса, кото­рые помечаются как пользовательские. Таким образом, решается ситуация, что выполняющийся поток находится в окружении страниц другого уровня и не может обратиться за пределы своего адресного пространства. В этом процессе операционная система отвечает за обновление флага привилеги­рованности для конкретной страницы. Обновление проводится для стра­ницы в специальной таблице при переключении процесса.
Модель защиты виртуальной памяти описывает выполнение каж­дого процесса в своей собственной виртуальной памяти. Здесь также тре­буется активная работа MMU. Каждый процесс использует свои собствен­ные сегменты, а следовательно, и свои собственные таблицы с описанием сегментов. Операционная система в этой модели занимается поддержкой описательных таблиц сегментов. Используемое процессами адресное про-
6.4. Особенности управления памятью в операционных системах реального…
123
странство может превышать размеры физической памяти, так как применя­ется страничная организация памяти совместно с механизмом подкачки. В чистых операционных системах реального времени подкачка обычно не применяется в связи с непредсказуемостью этого процесса. Поэтому до­ступная память разбивается на фиксированное множество логических ад­ресных пространств одинакового размера. При этом число одновременно выполняемых процессов становится ограниченным.
Следует также упомянуть, что для операционных систем реального
времени очень важно выполнять требования ограниченности времени до­ступа к оперативной памяти. Память является разделяемым ресурсом и, как любой разделяемый ресурс ОС РВ, требует детерминированности.
Следствием этого ограничения является запрет механизмов вызова
страниц по запросу, т.е. механизмов подкачки, поэтому ОС РВ просто бло­кирует вызов страницы от процесса в оперативной памяти.
Если применяется страничная организация памяти, то поддержка отображения страниц на физические адреса становится частью контекста обработки процесса. Если процесс не является процессом жесткого реаль­ного времени, то можно применять механизм динамического распределе­ния памяти, но при этом ОС РВ должна поддерживать обработку времен­ных задержек при работе с памятью, выравнивая и предсказывая их. То есть ОС должна обеспечивать предсказуемое время ожидания.
В обычных операционных системах без жестких требований к реаль­ному времени, применяется механизм сегментации памяти для борьбы с фрагментацией, т.е. с процессом нарушения регулярности распределения ад- ресов по физическому адресному пространству. Эта процедура называется уплотнением памяти после сборки мусора. А под сборкой мусора понима­ется освобождение памяти, выделенной под переменные программ после того, как они перестают быть нужными в системе или выгружаются. Языки программирования системного уровня типа С++ не имеют автоматической сборки мусора, тогда как прикладные языки типа C# или Java имеют соб­ственные системы очистки, называемые сборщиками (garbage collectors). Так как процесс очистки сопровождается фрагментацией памяти и занимает не­детерминированное время, то такие языки не подходят на роль основных языков разработки приложений для систем реального времени.
6. Управление памятью
124
В системах жесткого реального времени обычно применяются ме-
тоды статического распределения памяти. В системах мягкого реального времени возможно применение динамического распределения памяти без виртуализации и уплотнения.
6.5. Устройство управления памятью (Memory Management Unit, MMU)
Это блок управления памятью MMU, который является компонентом
аппаратного обеспечения вычислительного устройства. Он отвечает за управление доступом к памяти и контролируется центральным процессором.
MMU обеспечивает выполнение следующих основных функций: трансляция адреса при помощи TLB (Translation LookUp Buffer)
– специального буфера быстрого преобразования адреса. Этот буфер пред­ставляет собой специальную аппаратную таблицу (находящуюся внутри самого устройства), которая применяется для преобразования виртуаль­ного адреса в физический и наоборот;
вызов страниц по требованию, если такой механизм поддержива-
ется системой. Вызов работает по сигналу ошибки вследствие отсутствия страницы в основной памяти;
защита адресов при помощи специального режима, обеспечива-
ется несколькими способами защиты: реальный режим, защищенный ре­жим и т.д. Для каждого диапазона памяти может быть применен различный режим защиты;
управление кэшем; арбитраж шин; переключение блоков памяти.
Иногда MMU упоминается в документации как блок управления ста-
тической памятью (Paged MMU). Его принцип работы основан на разделе­нии виртуального адресного пространства на участки одинакового размера (рис. 13), называемого страницами.
Тогда память воспринимается как отражение одномерного массива адресов, используемого центральным процессором. Размер страницы фик­сируется равным нескольким килобайтам, хотя возможно применение страниц большего размера, определяемого степенью числа 2.
6.5. Устройство управления памятью (Memory Management Unit, MMU)
125
Рис. 13. Схема работы MMU
Младшие биты адреса, определяющие смещение внутри страницы,
в этом случае остаются неизменными. Старшие биты адреса интерпретиру­ются как номер виртуальной страницы и используются для страничных операций. MMU обычно преобразует номера виртуальных страниц в физи­ческие с применением буфера ассоциативной трансляции TLB (Translation Lookaside Buffer), в котором некоторое время хранятся уже ранее сформи­рованные отображения. Также для систем обслуживание буфера харак­терно применение алгоритмов сортировки и распознавание адресов.
Если преобразование при помощи TLB (аппаратно) невозможно, то подключается более медленный механизм преобразования адресов, резуль­тат которого пополняет или изменяет TLB. Данные в этих таблицах называ­ются элементами таблицы страниц PTE (Page Table Entries), а сами струк­туры – таблицами страниц PT (Page Table). Объединение номера физической страницы со смещением внутри страницы определяет физический адрес.
Также в таблицах могут содержаться дополнительные данные, например, признак записи в страницу, который применяется для определе­ния времени последнего использования страниц для алгоритма замещения страниц, признак того, какие процессы могут читать и записывать данные в страницу (пользовательские или системные), признак необходимости кэ­шировать страницу и так далее.
Сейчас наиболее часто MMU уже включен в состав центрального процессора и не требует реализации в виде отдельной микросхемы.
7. Отказоустойчивость операционных систем реального времени
126
7. ОТКАЗОУСТОЙЧИВОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ РЕАЛЬНОГО ВРЕМЕНИ
7.1. Понятие отказоустойчивости системы
Условия применения ОС РВ накладывает определенные требования на ее устойчивость, надежность и способность работать в критических си­туациях. Любой отказ в работе системы может привести не только к про­стою системы, некорректности результатов вычислений или их отсут­ствию, но и к критическим последствиям. Продолжительное бездействие системы или постоянные ошибки могут привести к аварии или к техноген­ной катастрофе. Преимущество использования отказоустойчивых систем как раз и вытекает из необходимости продолжительной надежной работы в любых условиях, особенно когда техническое обслуживание или ремонт в любое время невозможен, когда доступ к системе ограничен или условия эксплуатации опасны для здоровья или жизни персонала.
Поэтому все отказоустойчивые системы разрабатываются изна­чально так, чтобы система была “терпима” к отказам и даже могла восста­навливаться самостоятельно. Отдельные экземпляры ОС РВ и систем во­обще работают без перезагрузки и обслуживания годами и даже десятиле­тиями, чего не скажешь об обычных системах, нацеленных на стандартного потребителя.
Сложность современных вычислительных систем такова, что даже сама возможность проверить работоспособность системы в реальных крити­ческих ситуациях является невозможной. Максимум что можно сделать, так это провести симуляцию и проводить разработку в моделируемых условиях.
Это в некоторых случаях позволяет выявить ошибки разработки про­граммных и аппаратных средств до введения системы в эксплуатацию и принять меры по их своевременному устранению.
Сами по себе отказы могут быть периодическими или случайными, внутренними или возникающими под влиянием внешних факторов. Могут быть помехи, паразитные импульсы или всплески, брак производства аппа­ратных устройств и программные ошибки. В любом случае, каждая такая ситуация тщательно изучается и принимаются соответствующие меры по ликвидации уязвимости системы.
7.2. Основные причины сбоев вычислительной системы
127
7.2. Основные причины сбоев вычислительной системы
К основным причинам возникновения сбоев можно отнести кон-
струкционные или эксплуатационные риски.
Эксплуатационные риски возникают при неправильной эксплуата-
ции, т.е. при применении в нормальной или критической ситуации с ненад­лежащим циклом и составом параметров эксплуатации. В этой связи, вы­деляют понятие “надежности” системы как способности функционировать даже при наличии определенных ошибок аппаратного или программного характера.
Отказ при исполнении системой основных функций может про-
явиться вследствие следующих причин:
нарушение кодов программ, например, при загрузке их в опера-
тивную память с внешних носителей;
стирание или искажение данных в процессе работы в оператив-
ном, постоянном запоминающих устройствах или в каналах связи:
нарушение нормального хода вычислительного процесса.
Примечательно то, что перечисленные выше причины могут возни­кать как обособленно, так и все вместе. Отказ системы может проявиться в виде программного сбоя, нарушения алгоритма, пропуска команд, пере­хода по неправильному адресу, однократного или систематического нару­шения данных и т.д.
Программные отказы приводят в основном к прекращению выдачи потребителям нужных им данных или к прекращению обслуживания.
Аппаратные отказы могут привести вообще к краху всей системы и к появлению программных ошибок. Программные ошибки приводят к по­явлению аппаратных достаточно редко. Единственным распространенным примером является сбой в системе управления целевой системы и, как следствие, переход системы в критические состояния (например, сбой си­стемы вентиляции, охлаждения, питания).
Обеспечить устойчивость системы на программном уровне гораздо сложнее, чем на аппаратном. Рассматривая подробнее аппаратные сбои, можно выделить следующие основные классы отказов системы с точки зре­ния аппаратуры:
отказ микропроцессора или другого важного элемента системы;
7. Отказоустойчивость операционных систем реального времени
128
отказ каналов связи между важными элементами системы; отказ систем обеспечения работоспособности и систем обслужи-
вания основной системы.
Разработчики стараются включить в системы средства идентифика-
ции отказа и выявления его причины. Подобные данные позволяют соби­рать статистику и разрабатывать новые методы и средства защиты систем, как на аппаратном, так и на программном уровне.
Например, отказ коммуникационной системы, приводящий к потере определенной степени связанности второстепенных компонентов системы, может привести к фатальному исходу, если связь нарушена с централь­ными элементами. В качестве одного из возможных решений применяют дублирование и резервирование каналов связи, что позволяет при сбое быстро реинициализировать коммуникационную среду и направить потоки данных и команд управления по другим каналам к тем же самым элементам системы.
Предсказать системный сбой можно, но предсказать случайные или “блуждающие” ошибки практически невозможно. Можно лишь оценить вероятность возникновения такого сбоя и тщательно к нему подготовиться. С течением времени и с усложнением систем появляется все больше веро­ятных источников опасности для системы. В конце концов, задача разра­ботчиков – создать систему, для которой была бы определена реакция на любую вероятную или случайную ошибку.
Таким образом, сбой будет приводить к ожидаемому поведению си­стемы, как и в случае нормального поведения.
Такой спектр мер способен обеспечить безотказную работу системы в любой вообразимой ситуации.
7.3. Элементы отказоустойчивости системы
Существует множество элементов или компонент отказоустойчивой системы.
Одним из самых популярных является изоляция системы в целом или изоляция ее отдельных компонент. Основной принцип изоляции за­ключается в том, что ни один из компонент, работающих нормально или
7.3. Элементы отказоустойчивости системы
129
со сбоями, не может нарушить работоспособность других компонент си­стемы.
Обычно такая цель достигается путем построения системы из от-
дельных блоков со слабыми связями. При этом стандартно она решается внедрением дополнительных блоков управления памятью (диспетчеров) и введением пользовательских и системных программных интерфейсов (API), нередко с разграничением прав доступа.
При нарушении целостности системы или при нарушении прав до-
ступа к информации, механизм отключает проблемный компонент и пере­запускает его.
Исключительная ситуация может быть реализована в отдельном ад-
ресном пространстве приложения и никак не повлияет на работоспособ­ность системы в целом.
Также существует несколько важных элементов отказоустойчивости
системы, которые гарантируют ее надежность при совместном или раздель­ном применении:
восстановление ресурсов; режим пользователя/супервизора; защита от чрезмерного расходования ресурсов.
Восстановление ресурсов выполняется после окончания работы при­кладной программы, которая завершилась по плану или вследствие сбоя. Выделенные ей ресурсы возвращаются обратно в систему и становятся до­ступны другим приложениям. Исключение составляют ресурсы, которые помечены как резервные. При отсутствии этой возможности, ОС РВ быстро исчерпает свободные ресурсы и ее необходимо перезагружать. Учитывая требуемый высокий уровень качества обслуживания, эта ситуация непри­емлема на практике. Даже во время модернизации системы или ее обнов­ления, должны оставаться свободные ресурсы и возможность их перерас­пределять. При этом стараются сделать ресурс и обслуживающий сервис максимально независимыми друг от друга. Например, сервер приложений, который обслуживает множество клиентов, может быть быстро перезагру­жен или вообще заменен без ущерба для клиентов, потому что сами кли­енты совершенно не в курсе какой сервер запущен и как он работает. Для них важно только то, что их задания выполняются, а ресурсы предоставля­ются по очереди или по требованию.
7. Отказоустойчивость операционных систем реального времени
130
Пользовательский режим и режим супервизора работает в том слу-
чае, когда приложения исполняются либо в “системном” режиме, либо в режиме “супервизора”, т.е. ему становятся доступны некоторые операции, которые недостижимы для обычных приложений. Следует, однако, пом­нить, что применение режима супервизора сопряжено с вероятностью по­явления необратимых последствий. Операционная система должна обла­дать достаточной гибкостью, чтобы обеспечить создание привилегирован­ных процессов, которые могут переходить в режим супервизора и потом возвращаться обратно в обычный режим пользователя.
Защита от перерасхода ресурсов применяется тогда, когда часть при-
ложений пишется без автоматического контроля над используемыми ре­сурсами. Отсутствие контроля может, в конце концов, вырасти в неконтро­лируемое “клонирование” и “размножение” выполняемых процессов, сни­жение надёжности, нехватку ресурсов. Защита заключается во внедрении в систему таких элементов, которые могли бы следить за процессами и зада­чами, контролировать ресурсы и их распределение по потребителям.
Большую надежность и отказоустойчивость системы можно достичь в определенных пределах путем внедрения режимов работы: “мягкого” (с выдачей предупреждений) или “жесткого” (с выделением сигналов, напри­мер, о нехватке ресурсов) порогов, при достижении которых запускаются действия по восстановлению работоспособности системы.
7.4. Способы обеспечения отказоустойчивости системы
Для обеспечения надежной работы системы и ожидаемого выполне­ния задач в условиях случайных и систематических сбоев в основном при­меняются следующие два подхода:
восстановление или возобновление задачи после сбоя системы;
предотвращение отказа системы.
Первый подход заключается во внедрении дополнительных меха­низмов прямого и возвратного восстановления задачи. Прямое восстанов­ление выполняется без восстановления предыдущего состояния, т.е. задача запускается заново с переходом к следующему состоянию. Прямое восста­новление основано на своевременном обнаружении сбоя. Такое восстанов-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]