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

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

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

Различают следующие типы прерываний:

внешние (аппаратные),

внутренние (исключения -exception),

программные

Внешние прерывания происходят асинхронно, т.е. происходят в случайный момент времени в процессе выполнения программы (например, от внешних устройств), внутренние – синхронно, т.е. возникают по конкретной причине и можно предугадать возникновение такого прерывания (например, при делении на ноль).

Программные прерывания не являются "истинными" прерываниями. Они возникают при выполнении определенной команды процессора и применяются в том случае, когда необходимо выполнить некоторые привилегированные действия (например обратится к порту компьютера).

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

  1. Сегментное распределение памяти

Первым среди разрывных методов распределения памяти был сегментный:

Программу необходимо разбивать на части и уже каждой такой части выделять физическую память. Естественным способом разбиения программы на части является разбиение её на логические элементы – сегменты.

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

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

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

При размещении каждого из сегментов в оперативной или внешней памяти ОС отмечает в дескрипторе текущее местоположение сегмента.

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

Сама таблица дескрипторов сегментов, в свою очередь, также представляет собой сегмент данных, который обрабатывается диспетчером памяти ОС.

Поэтому:

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

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

Решение проблемы замещения (определения того сегмента, который должен быть либо перемещён во внешнюю память, либо просто замещён новым) используются следующие дисциплины:

FIFO (First In First Out) первый пришёл – первый ушёл

LRU (Least Recently Used ) не используемый дольше других

LFU (Least Frequently Used) используемый реже других

Random-случайный выбор сегмента

  1. Сегментно–страничное распределение

Метод представляет собой комбинацию сегментного и страничного распределения памяти и сочетает в себе достоинства обоих подходов.

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

Загрузка процесса выполняется ОС постранично, при этом часть страниц размещается в ОП, а часть на диске.

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

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

Виртуальный адрес состоит из двух составляющих:

1. указание на номер сегмента

2. смещение относительно начала сегмента

2.1. виртуальная страница

2.2. индекс

Другими словами, получается, что виртуальный адрес теперь состоит из трех компонентов: сегмента, страницы и индекса.

Плюсы:

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

Наличие сегментов облегчает разделение программных модулей между параллельными процессами;

Возможна динамическая компоновка задачи;

Выделение памяти страницам позволяет минимизировать фрагментацию.

Минусы:

Сложность реализации и высокие вычислительные затраты позволяют использовать его редко в дорогих и мощных вычислительных системах.

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

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

Принципиальная возможность реализации сегментно-страничной организации памяти заложена в семейство микропроцессоров i80x86, однако вследствие слабой аппаратной поддержки, трудностей при создании систем программирования и ОС в ПК эта возможность не используется.