Что такое функционирование в «Реальном масштабе времени»



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Что такое функционирование в «Реальном масштабе времени»



Что такое функционирование в «Реальном масштабе времени»

Каноническое определение системы реального времени дано Дональдом Гиллиесом и выглядит так: «Системой реального времени является такая система, корректность функционирования которой определяется не только корректностью выполнения вычислений, но и временем, в которое получен требуемый результат. Если требования по времени не выполняются, то считается, что произошел отказ системы». Другие добавляют: «Поэтому необходимо, чтобы было гарантировано выполнение требований по времени. Гарантия выполнения требований по времени необходима, чтобы поведение системы было предсказуемо. Также желательно, чтобы система обеспечивала высокую степень использования ресурсов, чтобы удовлетворять требованиям по времени».

ОС РВ характеризуется прежде всего малым временем реакции на внешние события. Последние версии ОС имеют прерываемое микроядро, что гарантирует быструю реакцию на внешнее событие при любом состоянии системы. Особенность большинства ОС – возможность стопроцентного размещения в памяти ядра, сетевого и графического обеспечения, драйверов и прикладных программ. Для встроенных бездисковых систем это чрезвычайно важно.

Традиционно ОС РВ делятся на "жесткие" и "мягкие". Система "жесткого" РВ должна без сбоев отвечать на внешние события в рамках заранее определенного интервала времени. Время ответа должно быть предсказуемым и не зависеть от текущего состояния системы. "Мягкая" ОС РВ тоже должна отвечать очень быстро, но гарантированное время ответа в ней не обеспечивается. Здесь нужно отметить, что временные характеристики последних версий промышленных ОС практически стерли ранее существовавшую грань между двумя этими разновидностями. Сейчас OS-9, ранее считавшаяся "мягкой" ОС, практически не уступает классическим "жестким" ОС - pSOS+ и VxWorks.

Ядра и операционные системы реального времени

При­мем как очевидные следующие момен­ты.

1. Когда-то операционных систем со­всем не было.

2. Через некоторое время после их появ­ления возникло направление ОС РВ.

3. Все ОС РВ являются многозадачны­ми операционными системами. Зада­чи делят между собой ресурсы вы­числительной системы, в том числе и процессорное время.

Четкой границы между ядром (Kernel) и операционной системой нет. Различают их, как правило, по набору функциональных возможностей. Ядра предоставляют пользователю такие базовые функции, как планирование и синхронизация задач, межзадачная коммуникация, управление памятью и т.п. Операционные системы в дополнение к этому имеют файловую систему, сетевую поддержку, интерфейс с оператором и другие средства высоко­го уровня.

По своей внутренней архитектуре ОС РВ можно условно разделить на монолитные ОС, ОС на основе микроядра и объектно-ориентированные ОС.

Задачи, процессы, потоки

Принято различать две разно­видности задач: процессы и пото­ки. Процесс представляет собой отдельно загружаемый программный модуль (файл), который, как правило, во время исполнения имеет в памяти свои независимые области для кода и данных. В отличие от этого потоки мо­гут пользоваться общими участками кода и данных в рамках единого про­граммного модуля.

Преимущества потоков.

1. Так как множество потоков способ­но размещаться внутри одного EXE-модуля, это позволяет экономить ре­сурсы как внешней, так и внутрен­ней памяти.

2. Использование потоками общей об­ласти памяти позволяет эффективно организовать межзадачный обмен сообщениями (достаточно передать указатель на сообщение). Процессы не имеют общей области памяти.

3. Как правило, контекст потоков меньше, чем контекст процессов, а значит, время переключения между задачами-потоками меньше, чем между задачами-процессами.

4. Так как все потоки, а иногда и само ядро РВ размещаются в одном ЕХЕ-модуле, значительно упрощается ис­пользование программ-отладчиков

Недостатки потоков.

1. Как правило, потоки не могут быть подгружены динамически. Процессы, в отличие от потоков, подгружаемы, что позволяет динамически изме­нять функции системы в процессе ее работы.

2. То, что потоки имеют доступ к областям данных друг друга, может при­вести к ситуации, когда некорректно работающий поток способен испор­тить данные другого потока. В отли­чие от этого процессы защищены от взаимного влияния, а попытка запи­си в «не свою» память приводит, как правило, к возникновению специ­ального прерывания по обработке «исключительных ситуаций».

Реализация механизмов управления процессами и потоками, возможность их взаимного сосуществования и взаи­модействия определяются конкрет­ным ПО РВ.

Основные свойства задач

Приоритет – это некое целое число, присваиваемое задаче и характеризую­щее ее важность по сравнению с други­ми задачами, выполняемыми в системе. Приоритет используется в основном планировщиком задач для определе­ния того, какая из готовых к работе за­дач должна получить управление. Раз­личают системы с динамической и ста­тической приоритетностью.

Контекст задачи – это набор дан­ных, содержащий всю необходимую информацию для возобновления вы­полнения задачи с того места, где она была ранее прервана. Плани­ровщик задач в случае необходимости сохраняет контекст текущей активной задачи и восстанавливает контекст за­дачи, назначенной к исполнению. Та­кое переключение контекстов и явля­ется, по сути, основным механизмом ОС РВ при переходе от выполнения од­ной задачи к выполнению другой.

Состояние (статус) задачи. С точ­ки зрения операционной системы, за­дача может находиться в нескольких состояниях. Тем не менее, практически в лю­бой ОС РВ загруженная на выполнение задача может находиться, по крайней мере, в трех состояниях.

1. Активная задача – это задача, выпол­няемая системой в текущий момент времени.

2. Готовая задача – это задача, готовая к выполнению и ожидающая у плани­ровщика своей «очереди».

3. Блокированная задача – это задача, выполнение которой приостановле­но до наступления определенных со­бытий.

Пустая задача – это зада­ча, запускаемая самой операционной системой в момент инициализации и выполняемая только тогда, когда в сис­теме нег других готовых для выполнения задач. Пустая задача запускается с самым низким приоритетом и, как пра­вило, представляет собой бесконечный цикл «ничего не делать».

Многократный запуск задач. Как правило, многозадачные ОС позволя­ют запускать несколько копий одной и той же задачи. В целях экономии памяти может быть предус­мотрено совместное использование одного и того же исполняемого кода для всех запущенных копий. В этом случае программа должна обеспечивать повторную входимость (реентера­бельность).

Реентерабельность (повторная входимость) означает возможность без негативных последствий временно пре­рвать выполнение какой-либо функции или подпрограммы, а затем вызвать эту функцию или подпрограмму снова.

Планирование задач

Важной частью любой ОС РВ являет­ся планировщик задач. Его функции оста­ются теми же: определить, какая из за­дач должна выполняться в системе в каждый конкретный момент времени. Самым простым методом планирова­ния, не требующим никакого специ­ального ПО и планировщика как тако­вого, является использование цикли­ческого алгоритма стиле round robin:

Каждая «задача», представляющая со­бой отдельную подпрограмму, выпол­няется циклически. При этом надо придерживаться следующих правил:

1. Подпрограммы не должны содер­жать циклов ожидания

2. Подпрограммы должны выполнять свою работу как можно быстрее

3. При необходимости подпрограмма может сохранять свое окружение и текущие результаты, чтобы в следую­щем цикле возобновить работу с то­го же места.

Можно отметить следующие преиму­щества циклического алгоритма.

1. Простота использования и прозрач­ность для понимания.

2. Минимальные размеры кода и дан­ных. Кроме того, в отличие от алго­ритмов с вытеснением, для всех задач необходим только один стек.

К недостаткам циклического алго­ритма можно отнести отсутствие при­оритетности и очередей. К тому же за­дачи вызываются независимо от того, должны ли они в данный момент что-либо делать или нет, а на прикладного программиста ложится максимальная ответственность за работоспособность системы.

Кооперативная многозадачность – это еще один алгоритм переключе­ния задач. Задача, получившая управление, выполняется до тех пор, пока она сама по своей инициативе не передаст уп­равление другой задаче.

Приоритетная многозадачность с вытеснением – это, по-видимому, наиболее часто используемый в ОС РВ принцип планирования. Основная идея состоит в том, что высокоприо­ритетная задача как только для нее появляется работа, немедленно прерыва­ет низкоприоритетную.

Необходимо отметить, что в одной вычислительной системе могут одно­временно сосуществовать задачи и «жесткого», и «мягкого» реального вре­мени, и что только одна из этих задач, обладающая наивысшим приорите­том, может быть по-настоящему де­терминированной.

Как правило, разработчики стара­ются свести свою систему реального времени к наиболее простым конфи­гурациям, характерным для систем «жесткого» реального времени, иногда даже в ущерб эффективности исполь­зования вычислительных ресурсов. Часто в системе реализует­ся несколько «режимов» работы, каж­дый из которых имеет свой набор вы­полняемых задач с заранее заданными приоритетами. Значительная часть особо ответственных систем по-преж­нему реализуется без применения коммерческих ОС РВ вообще.

Синхронизация задач

Хотя каждая задача в системе как правило, выполняет какую-либо от­дельную функцию, часто возникает необходимость в согласованности (синхронизации) действий, выполня­емых различными задачами. Такая синхронизация необходима, в основ­ном, в следующих случаях.

1. Функции, выполняемые различны­ми задачами, связаны друг с другом. Одна из вариаций в этом случае – это когда задача при определенных условиях порождает одну или не­сколько новых задач.

2. Необходимо упорядочить доступ не­скольких задач к разделяемому ре­сурсу.

3. Необходима синхронизация задачи с внешними событиями. Как правило, для этого используется механизм прерываний.

4. Необходима синхронизация задачи по времени. Для решения этих вопросов в конеч­ном счете используются специаль­ные аппаратные средства, называе­мые таймером.

Тестирование

Прежде чем устанавливать вашу сис­тему реального времени, рекомендуется про­верить ее работоспособность с по­мощью интенсивных тестов. Это осо­бенно важно для сложных динамических систем. Во время такого тестирования желательно смоделировать наибо­лее неприятные и «тяжелые» режимы работы, аварийные ситуации и т.п. При умозрительном анализе простых сис­тем следует осторожно относиться к рекламной информации разработчи­ков ОС РВ, которые из коммерческих соображений показывают, как прави­ло, параметры для «лучшего случая».

Linux реального времени

У Linux много достоинств: открытость кода; большое количество сопутствующего программного обеспечения, пока в основном ориентированного на серверные применения; наличие неплохой документации на API-интерфейс и ядро операционной системы; работа на процессорах различных классов. В данный момент эта ОС готова к стабильной работе, а открытость ее исходных текстов и архитектуры наряду с растущей популярностью заставляет программистов переносить свои наработки на многие аппаратные платформы. Для задач реального времени сообщество разработчиков Linux активно применяет специальные расширения – RTLinux, KURT и UTIME, позволяющие получить устойчивую среду реального времени. RTLinux представляет собой систему "жесткого" реального времени, а KURT (KU Real Time Linux) относится к системам "мягкого" реального времени. Linux-расширение UTIME, входящее в состав KURT, позволяет добиться увеличения частоты системных часов, что приводит к более быстрому переключению контекста задач.

Операционная система QNX

QNX – это первая коммерческая ОС, построенная на принципах микроядра и обмена сообщениями. Система реализована в виде совокупности независимых (но взаимодействующих через обмен сообщениями) процессов различного уровня, каждый из которых реализует определенный вид сервиса.

Предсказуемость, означающую ее применимость к задачам жесткого реального времени. Ни одна версия Unix не может достичь подобного качества, поскольку нереентрабельный код ядра слишком велик. Любой системный вызов в Unix может привести к непредсказуемой задержке. То же самое относится к Windows NT, где реальное время заканчивается между ISR (первичный обработчик прерывания) и DPC (вызов отложенной процедуры).

Масштабируемость и эффективность, достигаемую оптимальным использованием ресурсов и означающую ее применимость для встроенных систем. Можно иметь только тот сервис или те модули, которые реально нужны, причем это не требует серьезных усилий и не порождает проблемы.

Расширяемость и надежность одновременно, поскольку написанный вами драйвер не нужно компилировать в ядро, рискуя вызвать нестабильность системы.

Быстрый сетевой протокол FLEET, прозрачный для обмена сообщениями, автоматически обеспечивающий отказоустойчивость, балансирование нагрузки и маршрутизацию между альтернативными путями доступа. Он не так универсален, как TCP/IP, но гораздо проще в использовании и эффективнее.

Богатый выбор графических подсистем, включающий QNX Windows, X11R5 и Photon, что позволяет разработчикам выбирать ту, которая лучше подходит для их целей.

Существуют также некоторые ограничения, связанные с ориентацией системы на рынок встроенных систем реального времени. Вот важнейшие из них:

– нет поддержки SMP;

– нет своппинга виртуальной памяти на диск;

– неэффективная и нестандартная поддержка нитей (threads);

– нет поддержки Java (как следствие предыдущего пункта);

– нет поддержки отображения файлов в память;

– многочисленные ограничения файловой системы;

– нет поддержки Unix-domain sockets;

– слабые средства разграничения и контроля доступа пользователей;

– отсутствие средств безопасности в рамках собственного сетевого протокола.

Проект Neutrino

Еще до появления Windows 95, стартовал проект создания совершенно новой ОС, которая могла бы воплотить в себе лучшие идеи, разработанные в теории операционных систем. Этот проект получил кодовое название "Neutrino", довольно удачно отражающее его суть – очень маленькая и неуловимо быстрая ОС.

глобальная цель проекта Neutrino – создание POSIX-совместимой масштабируемой ОС, пригодной для построения систем реального времени на самом широком спектре оборудования. термин "Neutrino", если говорить конкретно, применяется на данном этапе не ко всей ОС, а лишь к ее микроядру. Neutrino представляет собой значительно более совершенную модель, выполняющую гораздо больше функций, чем микроядро QNX, имея при этом лучшую производительность и временные характеристики. Улучшенное микроядро позволило также вчетверо уменьшить размер менеджера процессов (с 80 до 20 Кбайт).

Функции, включенные в микроядро, были выбраны по принципу минимального количества операций, необходимых для их исполнения. Все относительно сложные функции были вынесены во внешние модули. По этой причине Neutrino остается достаточно маленьким и простым и по-прежнему оправдывает название "микроядра". управление процессами и памятью не является, строго говоря, функцией Neutrino – это функция менеджера процессов ProcNto, который, кроме этого, занимается поддержкой пространства имен ввода/вывода

Сетевой сервис в Neutrino представлен только протоколом TCP/IP. Разработчики создали специальную версию стека для встроенных систем – Micro TCP/IP, который занимает всего около 40 Кбайт кода за счет ряда ограничений. Для тех же, кому нужны все возможности TCP/IP, например динамическая маршрутизация, будет предоставлен другой вариант, совместимый на 100% с BSD-sockets. Файловая система в Neutrino реализована иначе, чем в QNX. Главное функциональное отличие – улучшенная приспособленность к сменным носителям. Теперь приложение обращается к драйверу, который определяет тип файловой системы (по сигнатурам) и динамически загружает соответствующую файловую систему, реализованную в виде разделяемой библиотеки.

Аппаратная архитектура

Для разработчиков систем автоматизации стандарты – это возможность создавать открытые модульные комплексы из готовых программных и аппаратных блоков разных производителей. Выигрывают и поставщики – во-первых, они могут действовать на всем рынке, а не только на своей частной делянке. Во-вторых, они получают доступ к профессионально разработанным спецификациям открытых стандартов, для которых не требуется приобретение патентов и которые не защищены авторским правом.

Успех стандарта не определяется постановлением правительства. Он будет продуктивен при условии, что его поддерживают поставщики, разработчики и потребители. И уж во всяком случае стандарт должен развиваться, отражая постоянно растущий потенциал базовых технологий. В этом плане в области систем управления жизнь кипит: при изобилии стандартов разного уровня идет жесткая конкурентная борьба альтернативных подходов.

Технологии VME и PCI

По отмеченным причинам одним из основных архитектурных решений для систем промышленной автоматизации является магистрально-модульная архитектура, в которой различные внешние блоки – модули связываются между собой через общую магистраль. Первым из получивших широкое признание международных стандартов на магистрально-модульные системы стал принятый в 1968 году стандарт CAMAC. Сегодня уже очевидно, что большинство разработчиков систем промышленной автоматизации практически отказались от применения нестандартных технических решений (их доля снизилась до 12%), возможно даже в ущерб техническим характеристикам, ориентируясь на стандарты де-факто и де-юре.

Мезонинные технологии

Мезонинные технологии применяются достаточно давно: в середине 80-х не было способа запаивать на основной плате кристаллы памяти емкостью более 64 Кбайт, и для увеличения ее объема использовались мезонинные модули. Сейчас, когда степень интеграции микросхем гораздо выше, на одной плате размещается простой компьютер со всеми соответствующими электронными атрибутами, и еще остается место. Мезонинные технологии приобрели новый смысл – сегодня это средство модульного наращивания функциональных возможностей. Взяв за основу типовую плату, разработчик может добавить к ней специальные пользовательские функции, реализованные в готовом мезонинном модуле.

Таким образом, мезонинные платы представляют еще один, более низкий по сравнению, например, с модулями VMEbus уровень модульности. Типичный размер мезонинных плат 50×80 мм. Они являются функционально законченными изделиями и устанавливаются на плату-носитель

Полевые системы

Для связи с удаленными цифровыми устройствами промышленного назначения принято использовать бит-последовательные промышленные или полевые шины. PROFIBUS-FMS представляет собой решение для задач взаимодействия на цеховом и полевом (field) уровне иерархии промышленных связей: с его помощью организуется обмен между интеллектуальными field-устройствами и контроллерами, а также между контроллерами. Как правило, на этом уровне обмен информацией осуществляется по запросу прикладного процесса и не является циклическим. Поэтому время реакции здесь не очень существенно, гораздо важнее функциональные возможности.

Модель PROFIBUS позволяет определить коммуникационные связи, объединяющие распределенные прикладные процессы в один общий. Та часть прикладного процесса field-устройства, которая отвечает за взаимодействие, называется виртуальным field-устройством (VFD). Все объекты реального устройства, с которыми можно взаимодействовать (переменные, программы, диапазоны данных), называются объектами коммуникации. Отображение функций VFD на реальное устройство обеспечивается в коммуникационной модели PROFIBUS интерфейсом прикладного уровня. Для этого объекты коммуникации PROFIBUS-станции вводятся в ее локальный словарь объектов – OD. Конфигурация OD может определяться и загружаться в устройство либо его производителем, либо разработчиком или может формироваться динамически. OD содержит структуру и типы всех объектов, а также их внутренние адреса в устройстве и представление на шине (индекс/имя). Доступ к объектам при функционировании происходит через сервисные функции протокола PROFIBUS-FMS, которые позволяют, например, опросить/установить значения переменных и массивов, запустить/остановить программу.

Управление производством

Верхний уровень в комплексе FactorySuite занимает пакет InTrack – инструментарий для разработки систем управления производством. Продолжая линию, заложенную в пакете InTouch, он поддерживает объектно-ориентированный стиль разработки и имеет архитектуру клиент/сервер. Назначение InTrack – создание интерактивных приложений, способных контролировать и управлять всеми стадиями производственных процессов – от загрузки сырья до выпуска готовой продукции.

Основные принципы в InTrack такие же, как и в InTouch, – работа с переменными, графическими образами и обработка предупредительных сообщений. Добавлено понятие схемы производственных процессов как некоторой последовательности операций. Схемы создаются в специальном графическом редакторе из графических образов, поставляемых в библиотеке InTrack. Среди них производственные цепочки и операции, материальные ресурсы, продукты. В результате приложение, разработанное в InTrack, способно автоматизировать сбор данных и выдавать управляющие воздействия на производственные процессы в масштабах целого предприятия.

Метод и нотация

Метод проектирования и нотация проектирования – это разные вещи. Нота­ция проектирования ПО предназначена для описания самого проекта. Хотя она и предполагает наличие определенного подхода к проектированию, сам подход остается за ее рамками. Метод проектирования ПО представляет собой система­тическое описание этапов создания проекта.

Нотация проектирования ПО описывает.проект программы в графическом или текстовом виде. В частности, диаграммы классов – это графическая нотация, а псевдокод – текстовая.

Концепция проектирования ПО – это фундаментальная идея, применимая к проектированию всей системы, например сокрытие информации.

Стратегия проектирования ПО – общий план и методика выполнения проек­та. Одной из стратегий является объектно-ориентированная декомпозиция.

Критерии структурирования ПО – это эвристические или формальные пра­вила, помогающие проектировщику разбить систему на отдельные компоненты. Так, критерии разбиения на объекты - это правила декомпозиции системы на объекты.

Метод проектирования ПО описывает последовательность шагов, выполняе­мых при работе над проектом при условии, что требования к системе уже сформу­лированы. Он помогает выявить, какие решения предстоит принять, в каком по­рядке это следует делать и на основе каких критериев. Метод проектирования базируется на наборе соответствующих концепций, использует одну или несколь­ко стратегий, а также ту или иную нотацию для документирования результатов. При выполнении определенных шагов метод может подсказать разработчику, ка­кие критерии наиболее удобны для декомпозиции системы.

Диаграммы классов

На такой диаграмме классы изображаются в виде прямоугольников, а стати­ческие (постоянные) отношения между ними – в форме дуг. Поддерживаются три основных типа отношений между классами:

– ассоциации. Ассоциация между двумя классами (бинарная ассоциация) изображается в виде линии, соединяющей прямоугольники классов. У нее есть имя и, возможно, стрелка, поясняющая, в каком направлении следует это имя читать. На каждом конце ассоциации проставляется кратность – число, свидетельствующее, сколько экземпляров одного класса связано с од­ним экземпляром другого класса. Дополнительно на каждом конце ассоци­ации может присутствовать стрелка, указывающая направление навигации вдоль данной ассоциации.

– иерархии агрегирования и композиции. Это отношения вида целое/часть. Отношение композиции (изображается закрашенным ромбом) накладыва­ет более сильные ограничения на экземпляры классов, чем отношение агре­гирования (показывается незакрашенным ромбом). Ромб одной вершиной примыкает к прямоугольнику класса, являющегося частью в отношении вида «часть/целое»;

– иерархия обобщения/специализации. Это отношение вида «является». Обоб­щение изображается в виде стрелки, ведущей от подкласса (потомка) к су­перклассу (родителю), причем стрелка упирается в прямоугольник супер­класса.

Видимость определяет, доступен ли элемент класса вне самого класса. Показывать видимость на диаграмме необязательно. Открытая видимость, изобра­жаемая символом + (плюс), означает, что элемент виден извне класса.

Закрытая видимость, отмеченная знаком – (минус), свидетельствует о том, что элемент ви­ден только внутри класса, в котором он определен, а от других классов скрыт. За­щищенная видимость, показываемая знаком #, говорит о том, что элемент ви­ден внутри класса, в котором определен, а также во всех подклассах этого класса.

Диаграммы взаимодействия

В UML есть два вида диаграмм взаимодействия: диаграммы кооперации (col­laboration diagram) и диаграммы последовательности (sequence diagram). Семан­тически они эквивалентны.

Диаграммы кооперации. На диаграмме кооперации показывается, как объекты динамически общают­ся между собой, посылая и получая сообщения. Эта диаграмма представляет структурную организацию взаимодействующих объектов, изображаемых в виде прямоугольников и соединяющих их дуг.

Помеченные стрелки рядом с дугами обозначают имя сообщения и направление его передачи между объектами. От­дельные сообщения в последовательности сообщений, отправляемых от одного объекта к другому, нумеруются.

Диаграмма кооперации в нотации UML

 

Диаграммы последовательности. Другой способ показать взаимодействие объектов – воспользоваться диаграм­мой последовательности. Диаграмма последовательности дву­мерна: участвующие объекты изображаются вдоль горизонтальной оси, а время откладывается вдоль вертикальной. От прямоугольника каждого объекта идет вниз вертикальная пунктирная линия, называемая линией жизни. Период, в тече­ние которого объект выполняет операцию, именуется активизацией. На протяже­нии этого периода линия жизни изображается двойной сплошной линией.

Актер обычно изображается в левом верхнем углу диаграммы. Помеченные горизонтальные линии представляют пересылку сообщений. Существенны толь­ко отправитель и получатель сообщения. Сообщение посылается объектом-отпра­вителем объекту-получателю. Время возрастает в направлении сверху вниз. Расстояние по вертикали между сообщениями не имеет значения.

Диаграммы состояний

В нотации UML диаграмма перехода состояний называется диаграммой со­стояний. На ней состояния представляются прямоугольниками со скругленными углами, а переходы – соединяющими их дугами (рис. 6.7). Начальное состояние обозначается дугой, исходящей из маленького закрашенного кружка. Может также присутствовать необязательное конечное состояние, изображаемое закрашенным кружком внутри незакрашенного (иногда его называют «бычий глаз»). Диаграмму состояний разрешается подвергнуть иерархической декомпозиции, так что надсостояние разлагается на подсостояния.

Рядом с дугой, представляющей переход, находится условие перехода в виде: Событие [условие]/Действие. Событие вызывает переход в новое состояние. Если задано необязательное булевское условие, то переход осуществится, когда оно истинно. В результате перехода может быть выполнено необязательное действие. Дополнительно с состоянием иногда ассоциируются:

– действие при входе в состояние;

– деятельность, выполняемая во время нахождения внутри состояния;

– действие при выходе из состояния.

Пакеты

В UML пакетом называется группа элементов модели, используемая, напри­мер, для представления системы или подсистемы. Такая группа изображается пиктограммой папки – большим прямоугольником, над которым находится пря­моугольник поменьше. Пакеты бывают вложенными; между ними мо­гут существовать отношения зависимости и обобщения/специализации. Пакеты способны содержать классы, объекты или прецеденты.

 

Нотация UML для пакетов

Диаграммы развертывания

На диаграмме развертывания очерчивается физическая конфигурация системы, то есть физические узлы и соединения между ними (например, связывающая их сеть). Узел представляется в виде куба, а соединение – в виде линии, ведущей от одного куба к другому. По сути, диаграмма развертывания – не что иное, как диаграмма классов с акцентом на узлах системы [16].

Узлом, как правило, является компьютер, при этом макси­мальное число экземпляров узла может быть ограничено (см. раздел 6.10). Для физического соединения имеется стереотип, задающий

Механизмы расширения UML

В UML имеется три механизма расширения языка [16]:

– стереотипы. Стереотип определяет новый строительный блок, производ­ный от существующего в UML элемента моделирования, но адаптирован­ный к решаемой задаче. В UML определено несколько стандартных стереотипов, но проектировщик может создавать и собствен­ные. Названия стереотипов заключаются в кавычки.

– помеченные значения. Помеченное значение расширяет свойства строитель­ного блока UML, сообщая тем самым новую информацию. Оно заключается в фигурные скобки {метка = значе­ние}. Друг от друга помеченные значения отделяются запятыми.

– ограничения. Ограничение задает условие, которое должно выполняться. В UML ограничение семантически расширяет элемент, добавляя новые пра­вила или изменяя существующие.

Планирование задач

В системе с одним процессором ядро операционной системы должно плани­ровать доступ параллельных задач к процессору. Ядро поддерживает список гото­вых к работе задач. Для назначения центрального процессора (ЦП) задачам было разработано много разных алгоритмов, в том числе циклическое обслуживание и вытесняющее планирование с приоритетами.

Алгоритмы планирования задач. Цель циклического алгоритма планирования – обеспечить справедливое вы­деление ресурсов. Задача ставится в очередь, поддерживающую принцип «первым пришел – первым обслужен» (FIFO).

Для систем реального времени циклическое планирование не годится. Задачам нужно назначать при­оритеты в соответствии с важностью выполняемых операций. Так, критичные по времени задачи обязательно должны уложиться в отведенные временные рамки. Поэтому для систем реального времени больше подходит алгоритм вытесняюще­го планирования с приоритетами. Каждой задаче назначается приоритет, и спи­сок готовых упорядочивается по значению этого приоритета. ЦП выделяется задаче с наивысшим приоритетом. Затем эта задача выполняется до тех пор, пока не приостановится сама либо не будет вытеснена задачей с большим приоритетом (которая только что возобновила работу). Задачам с одинаковыми приоритетами ЦП выделяется по циклическому алгоритму.

Контекстное переключение задач. Если задача приостанавливается из-за блокировки или потому что ее вытес­нили, необходимо сохранить текущий контекст, то есть состояние процессора. Сюда относятся аппаратные регистры, счетчик команд задачи (который указыва­ет на следующую команду, подлежащую выполнению) и другая информация. Ког­да задача снова получит ЦП, контекст требуется восстановить. Эта последователь­ность операций называется контекстным переключением.

В мультипроцессорной среде с разделяемой памятью копия ядра обычно вы­полняется на каждом процессоре. Процессор выбирает задачу, находящуюся в на­чале списка готовых. Взаимно исключающий доступ к списку обеспечивает аппа­ратный семафор, который обычно реализуется с помощью команды Test and Set Lock (проверить и установить замок). Таким образом, одна и та же задача может в разные моменты времени исполняться на разных процессорах. В некоторых мультипроцессорных средах потоки одного многопоточного процесса могут па­раллельно выполняться на разных процессорах.

Вопросы ввода/вывода в операционной системе

Рассмотрим способы, которые операционная система применяет для работы с устройствами ввода/вывода. Существует два механизма выполне­ния ввода/вывода: прерывания и опрос. Рассмотрим как параллельные задачи взаимодействуют с внешними устройствами.

Устройства ввода/вывода общаются с операционной системой при помощи кон­троллеров, которые находятся на интерфейсных платах устройства). Центральный процессор работает именно с контроллером, а не с самим ус­тройством. У контроллера есть набор регистров, используемых для обмена инфор­мацией с ЦП. В некоторых компьютерах имеются специальные команды для дос­тупа к регистрам контроллера. Если же применяется отображение устройств на память, то регистры контроллера представляются в виде обычных ячеек адресно­го пространства.

Если ввод/вывод управляется прерываниями, то при поступлении входных данных и завершении операции вывода генерируется прерывание. Есть множест­во способов, но наиболее распространены ввод/вывод с управлением от про­граммы и ввод/вывод, запускаемый программой. В первом случае прерывание обычно генерируется после чтения или записи каждого символа, во втором между устройством ввода/вывода и основной памятью помещается устройство прямого доступа к памяти (Direct Memory Access – DMA), управляющее передачей бло­ков данных между ними. По завершении передачи устройство DMA генерирует прерывание. . Когда используется ввод/вывод с опросом, прерывания отсутствуют. Поэто­му система должна периодически проверять устройство ввода, чтобы понять, не пришли ли новые данные, или устройство вывода, чтобы выяснить, завершилась ли операция.

Технология World Wide Web

Огромная популярность Всемирной паутины (WWW), придуманной Бернер-сом-Ли из Европейской организации по ядерным исследо­ваниям (CERN) в Женеве привела к очень быстрому росту сети Internet. Страницы WWW разме­щены на Web-серверах. Каждая страница обычно содержит графику и ссылки на другие страницы.

Web-страница создается с помощью языка разметки, например широко рас­пространенного языка HTML (Hyper Text Markup Language – язык разметки ги­пертекста) или начавшего приобретать популярность языка XML (eXtensible Markup Language – расширяемый язык разметки). Каждая страница помечается унифицированным указателем ресурса (URL), который используется в составе любой ссылки на эту страницу. Когда пользователь хочет просмотреть страницу, браузер берет из URL адрес сервера и обращается к нему с просьбой загрузить необходимые данные

Внешний модуль, или вставка (plug-in), – это программа, которая помещается в браузер и расширяет его возможности – скажем, позволяет обрабатывать аудио- и видеоданные, посылаемые сервером. Внешний модуль может входить в дистри­бутив браузера или загружаться отдельно с определенного сервера.

С появлением WWW и Web-браузеров в начале 90-х годов браузер стал рас­пространенным пользовательским интерфейсом для распределенных приложе­ний. Рост популярности Всемирной паутины вывел на авансцену язык програм­мирования Java, который широко применяется для создания апплетов.

ПО промежуточного слоя



Последнее изменение этой страницы: 2016-04-23; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.239.179.228 (0.023 с.)