Самодел 2 (1114717), страница 4
Текст из файла (страница 4)
Контроллеры внешних устройств «развязывают руки» процессору, но синхронное управление плохо тем, что начатый обмен будет происходить до конца или до ошибки. Если он окажется длительным, то может заставить процессор ожидать своего завершения, а это потери времени. Асинхронное управление использует аппарат прерываний. Это позволяет вести обмены данными через контроллеры внешних устройств более эффективным образом.
4. Использование контроллера прямого доступа к памяти (DMA) при обмене.
5. Управление внешними устройствами с использованием процессора или канала ввода/вывода
Иерархия памяти
Это пример иерархии памяти компьютера по скоростям.
Память ЦП и ОЗУ практически всегда присутствуют. КЭШ второго уровня, как и КЭШ первого уровня, расположен на процессоре или около него. Он больше по размеру, но медленнее по скорости доступа, чем КЭШ L1, но быстрее, чем ОЗУ.
ВЗУ могут присутствовать и отсутствовать в зависимости от компьютера. Пример ВЗУ с внутренней буферизацией – современный винчестер. ВЗУ долговременного хранения данных используются, например, в электронном архиве библиотеки Ленина (выглядит как шкафы с дисками) и т.п.
Аппаратная поддержка ОС и систем программирования
Как мы уже видели в предыдущих пунктах, существуют аппаратные элементы для реализации мультипрограммного режима работы компьютера.
Мультипрограммный режим - режим, при котором возможна организация переключения выполнения с одной программы на другую.
Аппаратные средства компьютера, необходимые для поддержания мультипрограммного режима:
-
Аппарат защиты памяти
например, программа сама не вычисляет физические адреса ячеек памяти; система следит, чтобы программа не лезла в память вне отведенной ей.
А) пример защиты анализом, (применялся на заре программирования)
Программа – непрерывная область памяти. Выделялось два регистра: в одном адрес начала программы, в другом – конец. Каждый раз смотрим, не залезли ли куда нельзя.
Б) защита по ключу
Каждой странице физической памяти ставится в соответствии регистр с номером равным номеру страницы. Каждой задаче присваивается номер. После выделения каждой задаче физических страниц в каждый регистр заносится номер решаемой задачи, играющий роль ключа. Существует особый регистр, значение которого равно номеру программы, которая сейчас считается. При каждом обращении к памяти проверяется, совпадает ли ключ на процессоре с ключом страницы памяти.
-
Специальный режим операционной системы (привилегированный режим или режим супервизора)
Режим супервизора организовывает централизацию доступа к аппаратным ресурсам (например, каждой программе не приходится самостоятельно реализовывать посылку на печать). Машинные команды делятся на две группы: пользовательские и для ОС (например, гасить единицу в регистре прерываний после обработки, операции ввода/вывода, и пр.).
-
Аппарат прерываний (как минимум, прерывание по таймеру).
например, программа может зациклиться. Но система не повиснет, так как на этот случай предусмотрено прерывание по таймеру. Причем оно может быть как аппаратное, так и может контролироваться ОСой – прерываться в определенное ей время. Алгоритмы смены задачи:
1) выделить промежуток времени каждой задаче
2) ввести понятие приоритета
3) одна задача считается, пока не потребует обмена
Некоторые проблемы
1. Вложенные обращения к подпрограммам
П ри обращении к подпрограммам приходится каждый раз сохранять/восстанавливать регистры, что отнимает время. Таким образом, делать много обращений к ним становится не выгодно.
2. Накладные расходы при смене обрабатываемой программы:
-
необходимость включения режима блокировки прерываний
-
программное сохранение/восстановление содержимого регистров при обработке прерываний
3. Перемещаемость программы по ОЗУ
Существует проблема адресации. Программа с относительными адресами записывается в физическую память. Если она была прервана и вытолкнута из памяти, то после прерывания нужно вернуть программу в память. Причем, скорее всего она попадет на новое место. Возникает необходимость настроить программу на новое место.
4. Фрагментация памяти
Выполняемые программы хранятся в памяти, занимая каждая свой фрагмент. Когда запускается новая программа, возникает вопрос, куда ее поместить. ОС ищет свободный фрагмент памяти, размер которого равен или больше размеру запускаемой программы. Если нет такого куска памяти (деградация системы), то возникает проблема загрузки этой программы в память. Один из способов решения – это компрессия (но она чревата потерями памяти). Существуют и другие решения.
Регистровые окна (register window)
Р егистровые окна – метод решения проблемы запуска подпрограмм. В системе может быть реализовано K регистровых окон, каждое из которых ставится в соответствие одной из подпрограмм. Благодаря указателям текущего и сохраненных окон, ОС ориентируется, какой набор значений регистров сейчас актуален.
Каждое регистровое окно содержит:
-
область регистров параметров (параметры вызова подпрограммы, результаты работы программы)
-
область локальных регистров
-
область временных регистров
Возможна реализация кольцевой схемы организации регистровых окон.
При
обращении
в функцию
При
выходе из
функции
Таким образом, можно оптимизировать запуск подпрограмм.
Модель организации регистровой памяти в Intel Itanium
Р егистры делятся на две группы: статические и динамические. «Динамическое» окно – окно произвольного размера (от регистра GR32 до регистра GR32+N, N=0,..,95).
Происходит оптимизация работы с физическими регистрами.
Системный стек
С тек аппаратно не реализован, является частью оперативной памяти и управляется программно. Поступающие прерывания запихиваются в стек, если не могут быть сразу обработаны. Стек строится таким образом, что последний запихнутый элемент выпихивается первым. Использование системного стека может частично решать проблему минимизации накладных расходов при смене обрабатываемой программы и/или обработке прерываний.
Виртуальная память.
Базирование адресов.
Аппарат виртуальной памяти – аппаратные средства компьютера, обеспечивающие преобразование (установление соответствия) программных адресов, используемых в программе адресам физической памяти, в которой размещена программа при выполнении.
Так как в исполняемом модуле используется программная адресация, то ОСе приходится устанавливать соответствие между физическими и программными адресами.
Б азирование адресов – реализация одной из моделей аппарата виртуальной памяти. При базировании выделяется регистр, в котором будет храниться адрес, начиная с которого размещается программа. Проблема: программы должны располагаться в одном блоке.
Базирование адресов – решение проблемы перемещаемости программы по ОЗУ.
Б азирование адресов – средство отображения виртуального адресного пространства программы в физическую память «один в один».
Базирование памяти решает проблему перемещения, но не решает проблему фрагментации. Для решения проблемы фрагментации используются более развитые механизмы организации ОЗУ и виртуальной памяти.
Страничная память.
Модельная (упрощенная) схема организации функционирования страничной памяти ЭВМ следующая: Пусть одна система команд ЭВМ позволяет адресовать и использовать m страниц размером 2k каждая. То есть виртуальное адресное пространство программы/процесса может использовать для адресации команд и данных до m страниц.
Виртуальное адресное пространство – множество виртуальных страниц, доступных для использования в программе. Количество виртуальных страниц определяется размером поля «номер виртуальной страницы» в адресе.
Ф изическое адресное пространство – оперативная память, подключенная к данному компьютеру. Физическая память может иметь произвольный размер (число физических страниц может быть меньше, больше или равно числу виртуальных страниц).
Соответственно структура исполнительного физического адреса будет отличаться от структуры исполнительного виртуального адреса за счет размера поля ”номер страницы”.
С уществуют регистры процессора, где каждой виртуальной странице ставится в соответствие реальная физическая. В процессе выполнения программы при каждом обращении в память по какому-то виртуальному адресу по регистру приписки заменяется номер виртуальной страницы на соответствующую физическую, по адресу которой и будет обращение в память. Может произойти прерывание, происходит замена одного процесса на другой. Вся таблица страниц будет откачена на внешнюю память (свопинг) и будет ждать нового обращения. После обработки прерываний происходит проверка: закачены ли страницы обратно.
Может быть реализована аппаратная защита памяти – проверка невыхода из пограничного диапазона при обращении.
Вообще говоря, всё будет зависеть от конфигурации компьютера.