Лабораторная работа 2 12 лабораторная работа 3 17 лабораторная работа 4 24 лабораторные работы 5-8 38 введение учебный план по специальности 09. 05. 01 «Применение и эксплуатация автоматизированных систем специального назначения»
Ряд неконтролируемых исключений в
Jаvаприведен в табл. 2.
Таблица 2. Неконтролируемые исключения в
Java
Исключение
|
Описание
|
ArithmeticException
|
Арифметическая ошибка (например, деление на ноль)
|
ArrayIndexOutOfBoundsException
|
Индекс массива за пределами допустимых границ
|
ArrayStoreException
|
Присваивание элементу массива недопустимого значения
|
ClassCastException
|
Недопустимое приведение типов
|
IllegalArgumentExceptiоn
|
Методу передан недопустимый аргумент
|
IndexOutOfBoundsException
|
Некоторый индекс находится за пределами допустимых для него границ
|
NegativeArraySizeException
|
Создание массива отрицательного размера
|
NullPointerException
|
Недопустимое использование нулевого указателя
|
NumberFormatException
|
Недопустимое преобразование текстовой строки в числовой формат
|
StringIndexOutOfBoundsExceptiоn
|
Попытка индексирования вне пределов строки
|
UnsupportedOperationException
|
Недопустимая операция
|
Исключение
|
Описание
|
ClassNotFoundException
|
Класс не найден
|
IllegalAccessException
|
В доступе к классу отказано
|
InstantiationExceptiоn
|
Попытка создать объект абстрактного класса или интерфейса
|
InterruptedException
|
Один поток прерван другим потоком
|
NoSuchFieldException
|
Поле не существует
|
NoSuchMethodException
|
Метод не существует
|
Еще раз отметим, что даже если метод не обрабатывает и выбрасывает контролируемое исключение, отражать этот факт в сигнатуре метода не нужно. Неконтролируемые исключения указываются в сигнатуре метода, если они в этом методе не обрабатываются.
Создание собственных исключений
Классы встроенных исключений в
Jаvа описывают только наиболее общие ошибки, поэтому в некоторых случаях нужно или полезно описать собственное исключение. В
Jаvа такая возможность имеется.
Технически создание собственного исключения сводится к созданию подкласса класса
Exception, который, в свою очередь, является подклассом класса
Throwable. В создаваемом подклассе ничего не нужно реализовывать. Что касается класса
Exceptiоn, то он не определяет собственных методов, а наследует их из класса
Throwablе. Некоторые методы класса
Throwablе представлены в табл. 3.
Таблица 3. Методы класса
Throwable
Метод
|
Описание
|
fillInStackTrace()
|
Метод в качестве результата возвращает объект Throwable, который содержит полную трассу стека. Метод не имеет аргументов
|
getLocalizesMessage()
|
В качестве результата метод возвращает строку (объект класса String) с локализованным описанием исключения. Метод не имеет аргументов
|
getMessage()
|
Методом возвращается строка (объект класса String) с описанием исключения. Метод не имеет аргументов
|
printStackTrace()
|
Методом отображается трасса стека. Метод не имеет аргументов
|
toString()
|
Метод в качестве значения возвращает объект класса String, содержащий описание исключения. Метод не имеет аргументов
|
4. Описание лабораторного оборудования (используемых программных комплексов).
Для проведения лабораторного практикума дисциплины необходим компьютерный класс, оснащенный персональными компьютерами в количестве не менее 8 на подгруппу. На компьютерах должна быть загружена операционная система
Windows, а также среда программирования
Java.
5. Меры безопасности.
Перед началом практикума по дисциплине преподаватель обязан провести инструктаж со студентами о правилах техники безопасности. Инструктаж включает в себя следующий перечень:
правила техники безопасности при работе с электроустановками:
правила техники безопасности при работе за компьютером;
правила пожарной безопасности:
правила поведения при возникновении чрезвычайных ситуаций.
Все лаборатории кафедры должны быть оборудованы средствами пожарной сигнализации, сигнализации при опасности, средствами аварийного пожаротушения.
В лабораториях должны находиться:
план эвакуации:
правила техники безопасности.
Перед каждой лабораторной работой группа студентов (подгруппа) должна расписаться об ознакомлении с правилами безопасности в журнале по технике безопасности, находящемся в лаборатории.
6. Задание.
Написать программы для параллельной работы на языке Java.
1. Создать главный поток. Создать 2 потока расширением класса
Thread. Приостановка главного потока на 2 сек. Дочерних на 5 сек. Сообщения о времени. Обработать исключительные ситуации.
2. Создать главный поток. Создать 3 потока на основе реализации интерфейса
Runnablе. Приостановка главного потока на 1 сек. Дочерних на 5 сек. Сообщения о событыях. Обработать исключительные ситуации.
3. Создать главный поток. Создать 4 потока расширением класса
Thread. Приостановка главного потока на 2 сек. Дочерних на 3 сек. Сообщения об используемом оборудовании. Обработать исключительные ситуации.
4. Создать главный поток. Создать 1 поток на основе реализации интерфейса
Runnablе. Приостановка главного потока на 1 сек. Дочернего на 5 сек. Сообщения о дате. Обработать исключительные ситуации.
5. Создать главный поток. Создать 5 потоков расширением класса
Thread. Приостановка главного потока на 1 сек. Дочерних на 0,5 сек. Сообщения о цвете. Обработать исключительные ситуации.
6. Создать главный поток. Создать 3 потока на основе реализации интерфейса
Runnablе. Приостановка главного потока на 1 сек. Дочерних на 3 сек. Сообщения о номерах. Обработать исключительные ситуации.
7. Создать главный поток. Создать 4 потока расширением класса
Thread. Приостановка главного потока на 1 сек. Дочерних на 7 сек. Сообщения о дисциплинах. Обработать исключительные ситуации.
8. Создать главный поток. Создать 2 потока на основе реализации интерфейса
Runnablе. Приостановка главного потока на 2 сек. Дочерних на 3 сек. Сообщения о животных. Обработать исключительные ситуации.
9. Создать главный поток. Создать 3 потока расширением класса
Thread. Приостановка главного потока на 2 сек. Дочерних на 6 сек. Сообщения о цветах. Обработать исключительные ситуации.
10. Создать главный поток. Создать 6 потоков на основе реализации интерфейса
Runnablе. Приостановка главного потока на 1 сек. Дочерних на 2 сек. Сообщения о событиях. Обработать исключительные ситуации.
7. Методика выполнения задания.
Для выполнения работы необходимо:
Повторить правила техники безопасности при работе с вычислительной техникой.
Изучить раздел "Процессы и нити. Обработка прерываний." лекционного курса, а также теоретическую часть настоящих методических указаний.
Получить у преподавателя вариант задания.
Выбрать требование к операционной системе реального времени для изучения на компьютере.
Оформить отчет по лабораторной работе.
Защитить лабораторную работу, продемонстрировав преподавателю:
отчет по лабораторной работе;
умение решать аналогичные задачи;
теоретические знания.
8. Требования к содержанию и оформлению отчета.
Отчет по выполненной лабораторной работе должен содержать:
титульный лист;
условие задания;
текст программы;
руководство пользователя;
отлаженную программу на компьютере.
ЛАБОРАТОРНАЯ РАБОТА 2
Изучение структурной схемы ОС Windows. Работа с ОС Windows.
1. Цель работы.
Целью лабораторной работы является закрепление теоретических знаний в области архитектуры операционной системы WINDOWS с точки зрения применения для систем реального времени.
2. Задачи.
К задачам лабораторной работы относятся:
Приобретение навыков применения возможностей ОС WINDOWS для эксплуатации систем реального времени;
Изучение возможностей ОС WINDOWS для построения и эксплуатации систем мягкого реального времени.
3. Теоретическая часть.
Сегодня становится широко распространенным желание потребителей использовать
Windows в системах реального времени. Возможно ли использование
Windows для разработки системы реального времени?
В
Windows имеются два класса приоритетов: класс реального времени и динамический класс. Процессы в классе реального времени имеют фиксированный приоритет, менять который может лишь само приложение, тогда как приоритет процессов динамического класса может меняться диспетчером. Процесс имеет базовый уровень приоритета. Нить в процессе может иметь приоритет в диапазоне плюс/минус 2 около базового уровня или один из двух крайних уровней класса (16 или 31 для реального времени). Например, нить в процессе с базовым уровнем 24 может иметь приоритет 16, 22 – 26, 31. Очевидно, что гарантировать предсказуемость системы можно только при использовании процессов первого класса.
Малое число возможных уровней препятствует реализации СРВ на базе
Windows. Большинство современных ОС РВ позволяет иметь, по крайней мере, 256 различных уровней. Чем больше имеется уровней, тем более предсказуемо поведение системы. В
Windows имеется только 7 различных уровней для нити в данном процессе. В результате многие нити будут выполняться с одинаковыми приоритетами и, как следствие, предсказуемость поведения системы будет посредственной. Более того, общее число уровней для всех процессов класса только 16 и положение не спасает даже замена нитей процессами, не говоря уже о том, что переключение контекста для процессов снижает производительность.
В ОС РВ вызовы системы синхронизации (семафоры или критические секции) должны уметь управлять наследованием приоритетов. В
Windows это невозможно, поэтому требование 4 не удовлетворяется.
Еще одна проблема обусловлена реализацией некоторых вызовов системы
GUI. Они обрабатываются синхронно (вызывающая нить приостанавливается, пока не завершится системный вызов) процессом, выполняемым с более низким приоритетом (динамического класса). В результате нить может помешать нити с более высоким приоритетом – возникает инверсия приоритета.
Таким образом, малое число приоритетов и невозможность решить проблему инверсии делают
Windows пригодной только для очень простых СРВ.
Управление памятью в
Windows.
Другим важным моментом при проектировании СРВ является политика управления памятью в ОС РВ. В
Windows процессы выполняются в своем собственном пространстве памяти. Добиться этого позволяют механизмы виртуальной памяти и подкачки. Для бизнес-приложений это хорошо, но для СРВ, которая должна реагировать на внешние события с заранее определенным лимитом времени, это порождает непредсказуемость, особенно если система отправит страницу из памяти на диск.
Windows позволяет захватить страницу в памяти посредством вызова функции
VirtualLock. Тем не менее
Windows может разблокировать страницу и выгрузить ее на диск, если весь процесс неактивен.
Может ли
Windows использоваться в качестве ОС РВ?
Итак, можно сделать вывод, что
Windows, предназначенная в основном для классических приложений, не является хорошей платформой для поддержания обработки в реальном времени. Тем не менее на ее базе можно все-таки построить простую мягкую СРВ, время от времени допускающую опоздания. Следующие обстоятельства могут облегчить построение СРВ на базе
Windows:
– загрузка
CPU низка (
DPC имеют достаточно времени);
– критическая работа (или даже вся) делается на уровне
DPC или (еще лучше) на уровне
ISR. В таком случае непонятно, зачем вообще нужна ОС.
Но для жесткой СРВ использование
Windows невозможно – система реального времени никогда не будет предсказуемой. Что следует изменить в
Windows, чтобы ее можно было использовать в жестких СРВ?
a) Класс процессов реального времени должен иметь больше уровней.
б) Необходимо решить проблему инверсии приоритетов.
в) Время, затрачиваемое каждым системным вызовом, должно быть предсказуемо и известно.
г) Система прерываний должна быть заменена целиком:
–
DPC должны иметь много уровней приоритетов;
–
DPC должны быть вытесняемыми более приоритетными
DPC.
– драйверы от третьих фирм и системные драйверы должны быть настраиваемыми (уровни прерываний
ISR, уровни прерываний
DPC) ;
– драйверы от третьих фирм должны быть открыты для разработчиков, должно быть известно, по крайней мере максимальное время, затрачиваемое на работу
ISR и
DPC;
– должно быть известно время маскирования прерываний.
Коммерческие решения, расширяющие
Windows возможностями обработки в реальном времени.
Существуют разные варианты использования технологии
Windows для разработки систем реального времени:
– использование
Windows как она есть для построения мягкой системы реального времени;
– реализация
Win32
API над другой ОС РВ;
– совместная работа на одном процессоре
Windows и другой ОС РВ (или ее части);
– использование мультипроцессорной архитектуры, когда
Windows выполняется на одном процессоре (или более), а часть реального времени – на остальных.
Разработчик СРВ должен знать, сколько времени затрачивается на ту или иную системную работу. Кроме того, должны быть известны уровни системных прерываний и уровни
IRQ (линий запросов прерываний) драйверов устройств, максимальное время, которое они затрачивают, и т.п.
Несмотря на то, что сегодня
Windows не отвечает в полной мере требованиям, предъявляемым к операционной системе реального времени, давление рынка привело к появлению коммерческих решений, расширяющих
Windows возможностями обработки в реальном времени.
Удовлетворяет ли
Windows требованиям, предъявляемым к ОС РВ?
Очевидно, что
Windows – многонитевая ОС, она позволяет вытеснение.
Предсказуемость системных вызовов
Win32
API.
Для тестирования системных вызовов был написан процесс (принадлежащий классу реального времени), содержащий вызовы системы синхронизации нитей, и измерялось время, затраченное на каждый вызов. Максимальное значение на вызове
mutex достигает 670 мкс при среднем времени 35 мкс. Это произошло потому, что во время работы теста происходили обращения к диску и по сети. Если компьютер искусственно загрузить обращениями к диску и сетевой обработкой, то задержки возрастают до нескольких миллисекунд.
Win32
API очень богат, но не предназначен для реального времени. Например, запросы
mutex обрабатываются в порядке поступления, а не в порядке приоритетов, что снижает предсказуемость. Для синхронизации нитей в одном процессе критические секции следует предпочесть всем другим способам (этот вызов затрачивает всего несколько мкс по сравнению с 35 мкс на вызов
mutex).
Несмотря на все достоинства
API, ядро и менеджер ввода/вывода
Windows недостаточно приспособлены к обработке событий реального времени на уровне приложений.
Управление прерываниями в
Windows.
В
Windows единственный способ управления аппаратурой – через драйвер устройства. Поскольку приложение реального времени имеет дело с внешними событиями, разработчик должен написать и включить в ядро драйвер устройства, дающий доступ к аппаратуре. Этот драйвер реагирует на прерывания, генерируемые соответствующим устройством.
Прерывания обрабатываются в два этапа. Сначала выполняется очень короткая программа обслуживания прерываний (
ISR). Впоследствии работа завершается выполнением
DPC – процедуры отложенного вызова. Возникает следующий поток событий:
– Происходит прерывание.
– Процессор сохраняет
PC, SP и вызывает диспетчер.
– ОС сохраняет контекст и вызывает
ISR.
– В
ISR выполняется критическая работа (чтение/запись аппаратных регистров).
–
DPC ставится в очередь.
– ОС восстанавливает контекст.
– Процессор восстанавливает
PC, SP.
– Ожидающие в очереди
DPC выполняются на уровне приоритета
DISPATCH_LEVEL.
– После завершения всех
DPC ОС переходит к выполнению приложений.
ISR должно быть как можно короче, поэтому большинство драйверов выполняют значительную часть работы в
DPC (которая может быть вытеснена другим
ISR), ожидая окончания других
DPC, ранее попавших в очередь (все
DPC имеют одинаковый приоритет).
Из документации по
Windows следует, что
ISR может быть вытеснена другим
ISR с более высоким приоритетом и что
DPC имеет более высокий приоритет, чем пользовательские и системные нити. Но поскольку все
DPC имеют одинаковый уровень приоритета и
ISR должна быть сведена к минимуму, ваш
DPC будет вынужден ждать других и ваше приложение будет зависеть от остальных драйверов устройств непредсказуемым образом. Задержки системных вызовов, описанные в предыдущем разделе, обусловлены именно тем, что
DPC от драйверов жесткого диска и сети блокируют все другие.
В настоящих ОС РВ разработчик знает, на каком уровне выполняются драйверы всех других устройств. Обычно имеется свободное пространство для прерываний выше стандартных драйверов. Вся критическая работа выполняется в
ISR, что позволяет настроить конфигурацию драйвера в зависимости от временных ограничений приложения.
Похожие:
|
Лабораторная работа №9 59 Лабораторная работа №10 72 Лабораторная...
Рабочая тетрадь для выполнения лабораторных работ по мдк. 03. 01. «Техническое обслуживание и ремонт компьютерных систем и комплексов»...
|
|
Лабораторная работа 1 4 лабораторная работа 2 13 лабораторная работа...
Интернете разнообразную информацию – описательную, графическую, картографическую и пр. При разработке сайтов необходимо уметь работать...
|
|
Методические указания для студентов по выполнению лабораторных работ...
Лабораторная работа 4, 5 Исследование регистров, счетчиков и дешифраторов Лабораторная работа 6, 7 Исследование генератора псевдослучайной...
|
|
Лабораторная работа №10. Изучение принципа действия и функциональной...
Лабораторная работа № Изучение принципов построения системы автоматической подстройки частоты (апч) радиолокационной станции
|
|
Лабораторная работа №27 Лабораторная работа №28 Контрольные работы...
Пм «Сборка монтаж (демонтаж) элементов судовых конструкций, корпусов, устройств и систем металлических судов»
|
|
Лабораторная работа №1 «Применение средств операционных систем и...
|
|
Лабораторная работа №1 «Применение средств операционных систем и...
|
|
Лабораторная работа №
Лабораторная работа №1. Изучение основных возможностей программного продукта Яндекс. Сервер. Установка окружения, установка и настройка...
|
|
Практическая работа Содержание
Лабораторная работа: Оценка программно-аппаратных средств при переходе на Windows Vista 3
|
|
Лабораторная работа 1 Тема работы: Установка операционной системы....
Оответствии с инструкциями преподавателя, последовательность действий, описанных в частях 1 и 2, может быть скорректирована с учетом...
|
|
Лабораторная работа №2. Расчет матрицы a инерционных коэффициентов...
Лабораторная работа №3. Расчет матриц Якоби (С7, D7j) исполнительного механизма космического манипуляционного робота 9
|
|
Контрольная работа №1 по теме «Организм. Молекулярный уровень»
Лабораторная работа №2 «Изучение клеток и тканей растений и животных на готовых микропрепаратах»
|
|
Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора
Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора I8085A при реализации программы
|
|
Лабораторная работа №5 Тема: Использование элементов управления, cookie, сессии. Работа с почтой
Запустите файл из папки лабораторной работы №7 для установки Denver. Внимательной следуйте инструкциям программы – установки. Установку...
|
|
Лабораторная работа №4a
...
|
|
Лабораторная работа №1
Целью работы является изучение технологии построения модели процесса в нотации bpmn 0 с использованием
|
Руководство, инструкция по применению