Мультипрограммирование в системах пакетной обработки
Главная цель: минимизация простоев всех устройств компьютера. Это, как правило, задачи вычислительного характера. Оператор формирует пакет заданий и вводит его тем или иным способом во внешнюю память. ОС выбирает из пакета мультипрограммную смесь из программ, таким образом, чтобы максимально загрузить систему.
В этом режиме невозможно гарантировать выполнение задачи в течении определенного времени. Мультипрограммирование организованно за счет параллельной работы канала или контроллера и процессора.
Переключение процессора с одной задачи на другую - инициатива самой задачи. В подобных системах пользователь отстраняется от вычислительного процесса. Примерами ОС пакетной обработки являются ОС для мэйнфреймов IBM 360/370/390.
Мультипрограммирование в системах разделения времени
Основной критерий систем разделения времени - повышение удобств и эффективности работы пользователей. Такие ОС позволяют организовать интерактивную работу пользователей с несколькими приложениями.
Мультипрограммирование организуется путем выделения каждой задаче некоторого, достаточно небольшого отрезка времени - кванта. Задача принудительно приостанавливаются по завершению кванта и в соответствии с заложенным алгоритмом, выбирается на выполнение новая задача.
Системы разделения времени имеют меньшую пропускную способность по сравнению с системами пакетной обработки при прочих равных условиях. Это обусловлено потерей времени на переключение процессора с задачи на задачу.
ОС MS Windows 98/NT/2000/XP, Unix являются примерами систем разделения времени.
ОС реального времени используются при управлении техническими объектами или технологическими процессами
Особенность: наличие предельного времени в течении которого должна быть выполнена та или иная задача (реактивность системы).
Мультипрограммная смесь (т.е. набор задач, одновременно выполняемых) представляет собой: фиксированный набор заранее разработанных программ, а выбор на выполнение - по прерываниям (или по расписанию).
Для систем реального времени важна скорость обработки прерываний. Задача максимальной загрузки устройств - не актуальна.
Мультипроцессорная обработка
Мультипроцессорная обработка - это способ организации вычислительного процесса в системах с несколькими процессорами. В отличие от организации мультипрограммирования на одном процессоре, мультипроцессорная обработка предполагает действительно одновременное выполнение нескольких процессов. Это приводит к усложнению всех алгоритмов ОС.
Симметричная архитектура предполагает однородность всех процессоров и единообразное их включение в общую схему. Традиционно все процессоры при этом разделяют одну память и как следствие находятся в одном корпусе.
При асимметричной архитектуре процессоры могут отличаться своими техническими характеристиками и функциональной ролью. Требование единого корпуса отсутствует. Система может состоять из нескольких корпусов (в каждом может быть один или несколько процессоров). Такие устройства называются кластерами.
Для симметричной архитектуры вычислительный процесс может строится симметричным образом (все процессоры равноправны) или асимметричным (процессоры различаются функционально).
Для асимметричной архитектуры возможен только асимметричный способ организации.
Мультипрограммирование на основе прерываний
Прерывание – это способ переключения процессора на выполнение потока команд, отличного от того который выполнялся, с последующим возвратом.
Различают следующие типы прерываний:
· внешние (аппаратные);
· внутренние (исключения -exception);
· программные.
Внешние прерывания происходят асинхронно, т.е. происходят в случайный момент времени в процессе выполнения программы (например, от внешних устройств), внутренние – синхронно, т.е. возникают по конкретной причине и можно предугадать возникновение такого прерывания (например, при делении на ноль).
Программные прерывания не являются "истинными" прерываниями. Они возникают при выполнении определенной команды процессора и применяются в том случае, когда необходимо выполнить некоторые привилегированные действия (например обратится к порту компьютера).
Прерываниям равного значения приписываются уровни приоритетов (уровни - IRQ).
Каждое из прерываний обслуживается обработчиком прерываний (Interrupt Service Routine).
Внешние – обрабатываются драйверами, внутренние – модулями ядра, программные – процедурами из API.
Механизм прерываний. Системные вызовы
Механизм прерываний
Механизм прерываний поддерживается аппаратными и программными средствами ОС.
Различают векторный (vectored) и опрашиваемый (polled) типы прерываний. В обоих способах процессору передается информация об уровне приоритета.
При векторном типе прерывания в процессор передается также адрес обработчика прерывания.
Для векторного типа схема обработки такова: электрический сигнал - запрос на подтверждение - вектор - обработчик (например, для шины VMEbus).
Для опрашиваемого схема обработки такова: сигнал - запрос на подтверждение - уровень приоритета (например, шина ISA). Каждый уровень связан с несколькими устройствами. Вызываются все обработчики данного уровня. Один опознает свое устройство. (Примеры шин: ISA, EISA, MCA, PCi, SBus).
Intel Pentium объединяет два типа. устройство выдает сигнал некоторого уровня (IRQ - Interrupt Request), а контроллер вектор. Вектор - это число 0-255.
Приоритеты обслуживания могут быть: относительные (обработка прерывания не прекращается при появлении более приоритетного прерывания) и абсолютные.
Для упорядочивания работы обработчиков введен механизм приоритетных очередей, которые обслуживает модуль ОС диспетчер прерываний.
Системные вызовы
С понятием прерываний тесно связано понятие системных вызовов. Системный вызов позволяет приложению обратится к процедуре ОС, при этом используется механизм программных прерываний. В результате упрощается структура приложения, позволяются действия, запрещенные в пользовательском режиме.
В большинстве ОС системные вызовы осуществляются через диспетчер системных вызовов.
Например для транслятора Си системный вызов – это обычный вызов функции. Транслятор имеет специальные функции «заглушки» (Stab). В этих функциях присутствует Си-функция с вызовом программного прерывания.
Системные вызовы могут выполнятся синхронно и асинхронно. Большинство выполняются синхронно. Операции ввода-вывода – асинхронно. В новых ОС количество асинхронных вызовов – увеличивается.
25. Функции ОС по управлению памятью. Типы адресов.
Функции ОС по управлению памятью. Типы адресов
Память компьютера, или основная память, или оперативная память, или ОЗУ играет особую роль. Это обусловлено тем, что программа может выполнятся только в том случае если она находится в памяти. В дальнейшем, основную память будем называть ОЗУ.
Память распределяется между пользовательскими и системными программами ОС.
К основным функциям ОС по управлению памятью относятся:
· Учет свободной и занятой памяти;
· Выделение памяти процессам и ee освобождение;
· Вытеснение кодов и данных процессов на диск, когда памяти не хватает и возврат на место;
· Настройка адресов на конкретную область физической памяти;
· Дефрагментация;
· Защита памяти.
Типы адресов
Для идентификации команд программы и данных используются адреса.
Адреса подразделяются на:
· Символьные имена. Присваивает программист (например метки);
· Виртуальные адреса. Формирует транслятор. Начальный адрес равен нулю;
· Физические адреса - номера ячеек памяти, где в действительности будут расположены команды и данные.
Совокупность виртуальных адресов составляет виртуальное адресное пространство. Виртуальное адресное пространство определяется разрядностью компьютера. Для 32-разрядных – это максимум FFFFFFFF, что составляет 4 Гб.
Существует два основных типа представления виртуальных адресов:
· Линейная, при которой адрес начала всегда равен нулю, а адрес целое число;
· Деление на сегменты, при котором адрес – это пара чисел (n,m), где n- номер сегмента, m- смещение.