Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответник на госы.docx
Скачиваний:
120
Добавлен:
08.02.2015
Размер:
1.89 Mб
Скачать

4.7. Понятие о режимах реального времени. Мультизадачность и многопоточость.

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

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

Примером такой системы является система противовоздушной обороны, когда время обнаружения и уничтожения быстролетящего объекта состав-ляет доли секунды. Здесь запросом к системе является появление на экране радара некоторого летящего объекта. А обработка запроса означает распо-знавание объекта и, если это объект "чужой", выполнение действий по его уничтожению. Очевидно, что если не распознать летающий объект за не-которое время (время его полета), то сама система может быть уничтожена. Расчет характеристик такой системы производится исходя из того, какое максимальное количество запросов необходимо обслужить за некоторое малое время.

Типы многозадачности

По еще одной классификации все множество алгоритмов планирования процессов может быть разделено на две группы:

Non-preemptive multitasking - невытесняющая многозадачность - это способ планирования процессов, при котором некоторый процесс выпол-няется до тех пор, пока он сам не отдаст управление планировщику опера-ционной системы.

Preemptive multitasking - вытесняющая многозадачность - это такой способ управления, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимает- ся планировщиком операционной системы.

Вытесняющая или приоритетная многозадачность (режим реального времени)

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

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

Недостатки: необходимость особой дисциплины при написании кода, особые требования к его реентрантности, к защите всех разделяемых и глобальных данных объектами типа критических секций и mutex’ов.

Реализована в таких ОС, как:

VMS

Linux

в пользовательском режиме (а часто и в режиме ядра) всех UNIX-подобных ОС, включая версии Mac OS X, iOS; Symbian OS

в режиме ядра ОС Windows 3.x — только при исполнении на процессоре 386 или старше, «задачами» являются только все Windows-приложения вместе взятые и каждая отдельная виртуальная машина ДОС, между приложениями Windows вытесняющая многозадачность не использовалась

Windows 95/98/ME — без полноценной защиты памяти, что служило причиной крайне низкой, на одном уровне с MS-DOS, Windows 3.x и Mac OS версий до X — надежности этих ОС

Windows NT/2000/XP/Vista/7 и в режиме ядра, и в пользовательском режиме.

AmigaOS — все версии, до версии 4.0 без полноценной защиты памяти, что на практике для системных программ почти не сказывалось на надёжности из-за высокой стандартизированности, прозрачных API и SDK. Программы ориентированные на «железо» Амиги, наоборот не отличались надёжностью.

Многопото́чность — свойство платформы (например, операционной системы, виртуальной машины и т. д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины.

Такие потоки называют также потоками выполнения (от англ. thread of execution); иногда называют «нитями» (буквальный перевод англ. thread) или неформально «тредами».

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

Многопоточность (как доктрину программирования) не следует путать ни с многозадачностью, ни с многопроцессорностью, несмотря на то, что операционные системы, реализующие многозадачность, как правило реализуют и многопоточность.

К достоинствам многопоточности в программировании можно отнести следующее:

Упрощение программы в некоторых случаях, за счет использования общего адресного пространства.

Меньшие относительно процесса временны́е затраты на создание потока.

Повышение производительности процесса за счет распараллеливания процессорных вычислений и операций ввода/вывода.