Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции_операционные системы (Информатики)

.pdf
Скачиваний:
57
Добавлен:
06.06.2015
Размер:
3.81 Mб
Скачать

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

автоматическое переключение процессора в привилегированный

режим с возможностью исполнения любых команд.

Механизм прерываний обеспечивает:

распознавание прерываний;

передачу управления соответствующему обработчику прерываний;

корректное возвращение к прерванной программе.

При прерывании выполняется следующая последовательность

действий.

1.Установление факта прерывания (прием сигнала запроса на прерывание) и идентификация прерывания. Вызов процедуры обработки прерывания, адрес которой находится в специальной таблице операционной системы.

2.Запоминание контекста прерванного потока (процесса),

чтобы было возможно возобновить его выполнение после обработки прерывания.

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

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

4.После выполнения процедуры обработки прерывания восстанавливается контекст ранее прерванного потока

(процесса) в соответствии с которым меняется значение регистров процессора.

5.Выполнение прерванного потока (процесса)

возобновляется с прерванного места.

71

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

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

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

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

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

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

72

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

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

который распределяет оставшееся процессорное время между выполняющимися в системе программами.

Контрольные вопросы:

1.Зачем выполняется инсталляция приложений по многих ОС?

2.Что такое многозадачность? Каким образом один процессор может обеспечивать выполнение программ в многозадачном режиме?

3. Типы реализации

многозадачности и их основные

отличительные особенности?

4.В чем отличие многозадачности от мультипроцессорной обработки?

5.Чем отличаются процессы и потоки?

6.Что такое дескриптор процесса, какую информацию он несет?

7.Для чего используется контекст процесса?

8.Что такое ресурсы процесса? Типы ресурсов.

9.В чем заключается дисциплина планирования процессов?

10.Что такое диспетчеризация? Какие алгоритмы используются диспетчером задач?

11.Перечислите основные состояния процесса (потока)?

12.Для чего используется механизм прерываний? Какие бывают прерывания?

13.Какие действия выполняются при обработке прерывания?

14.Как работает диспетчер прерываний?

ГЛАВА 5. УПРАВЛЕНИЕ ПАМЯТЬЮ

Процессор напрямую работает с оперативной памятью,

программы, запущенные на выполнение, предварительно

73

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

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

является управление памятью.

В многозадачных ОС управление памятью предполагает выполнение следующих действий:

отслеживание свободной и занятой памяти;

выделение памяти процессам, в том числе динамически во время исполнения процесса, и ее освобождение по завершении процессов;

поддержка механизмов виртуальной памяти;

корректное отображение виртуального адресного пространства в пространство физических адресов;

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

5.1.Виртуальное и физическое адресные пространства

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

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

переводчик – транслятор. В процессе трансляции (перевода)

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

74

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

потом загружена программа, поэтому присваивает всем переменным и командам адреса, начиная с нулевого. То есть все оттранслированные программы имеют один и тот же начальный виртуальный адрес.

Программы при запуске загружаются в оперативную память и

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

Виртуальное адресное пространство – совокупность виртуальных адресов процесса. Диапазон виртуального адресного пространства одинаков у всех процессов. Например, 32-разрядный процессор дает возможность адресовать 232 байтов (4 Гбайт памяти)

с диапазоном от 0000000016 до FFFFFFFF16.

Физическое адресное пространство – совокупность физических адресов памяти.

Каждый процесс имеет свое виртуальное пространство,

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

75

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

Рис. 5.1. Схема отображения виртуальных адресов в

физические.

5.2. Организация виртуальной памяти

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

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

Если образы процессов из оперативной памяти целиком перемещаются на диск и обратно, то эта технология называется

76

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

свопингом (swapping). Сейчас редко используется в операционных системах.

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

Можно выделить три подхода к организации виртуальной памяти.

Страничная организация виртуальной памяти

предусматривает перемещение данных страницами

(виртуальная страница – блок памяти фиксированного сравнительно небольшого размера).

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

Сегменты позволяют определять разные права доступа к разным сегментам.

Сегментно-страничная организация виртуальной памяти –

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

Перемещение происходит страницами.

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

линейное виртуальное адресное пространство с адресами от

77

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

0000000016 до FFFFFFFF16 в 32-разрядном процессоре (в

большинстве ОС). Однако встречаются ОС, в которых виртуальное пространство процесса – это набор из N виртуальных сегментов,

каждый из которых может быть размером до 4 Гбайт.

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

физические в пределах оперативной памяти.

Сегментно-страничная организация памяти предполагает двухуровневую трансляцию виртуального адреса в физический.

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

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

78

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

Рис. 5.2. Сегментно-страничная организация памяти.

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

79

Фрагмент учебника «Операционные системы, сети и интернеттехнологии» С.А.Жданов, Н.Ю.Иванова, В.Г.Маняхина, С.Н.Мягков.

адрес. Если доступ к сегменту разрешен, то далее полученный линейный адрес преобразуется в физический адрес: вычисляется номер страницы, соответствующей найденному линейному виртуальному адресу, по таблице страниц определяется физический номер начала страница, к которому прибавляется смещение. Таким образом получаем физический адрес искомой ячейки памяти.

5.3. Управление кэшированием данных

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

Кэширование, во-первых, применяется для увеличения скорости обмена данными между оперативной памятью и внутренними регистрами процессора. Регистры процессора имеют самую высокую скорость доступа раза в 4-5 превышающую скорость доступа к устройствам оперативной памяти на основе динамической памяти DRAM. Для увеличения скорости обмена и ускорения выполнения программы вводится промежуточное более быстрое, но менее емкое запоминающее устройство на основе статической памяти SRAM. Регистры процессора перестают напрямую работать с более медленной памятью, а считывают данные из быстродействующей SRAM-памяти, куда периодически подгружаются блоки данных из DRAM-памяти. Это существенно ускоряет обмен данными между оперативной памятью и

80