
- •8 Взаимодействие процессов 79
- •9 Синхронизация процессов 87
- •10 Тупиковые ситуации 101
- •11 Управление памятью 114
- •12 Управление виртуальной памятью 132
- •13 Интерфейс файловой системы 138
- •14 Некоторые аспекты Реализации файловой системы 156
- •Литература 166 введение
- •Понятие операционной системы
- •Контрольные вопросы
- •Организация компьютерной системы
- •Архитектура компьютера с общей шиной
- •Структура памяти
- •Структура ввода-вывода
- •Контрольные вопросы
- •Классификация Операционных Систем
- •Поддержка многопользовательского режима.
- •Поддержка многопоточности
- •Многопроцессорная обработка
- •Особенности областей использования
- •Контрольные вопросы
- •Функциональные компоненты операционной системы
- •Управление процессами
- •Управление памятью
- •Управление файлами и внешними устройствами
- •Безопасность и защита данных
- •Интерфейс прикладного программирования
- •Пользовательский интерфейс
- •Контрольные вопросы
- •Структура операционной системы
- •Монолитные системы
- •Многоуровневые системы
- •Виртуальные машины
- •Экзоядро
- •Модель клиент-сервер
- •Контрольные вопросы
- •Процессы и потоки
- •Концепция процесса
- •Состояния процесса
- •Реализация процессов
- •Операции над процессами
- •1Создание процессов
- •2Завершение процессов
- •Контрольные вопросы
- •Планирование процессора
- •Планирование процессов. Очереди
- •Планировщики
- •Моменты перепланировки. Вытеснение
- •Переключение контекста
- •Диспетчеризация
- •Критерии планирования процессора
- •Стратегии планирования процессора
- •3Планирование в порядке поступления
- •Пример.
- •4Стратегия sjf
- •5Приоритетное планирование
- •6Карусельная стратегия планирования
- •7Очереди с обратной связью
- •8Гарантированное планирование
- •9Лотерейное планирование
- •10Планирование в системах реального времени
- •Планирование потоков
- •Оценка алгоритмов планирования
- •11Детерминированное моделирование
- •12Моделирование очередей
- •13Имитация
- •Контрольные вопросы
- •Взаимодействие процессов
- •Разделяемая память. Проблема производителя и потребителя
- •Взаимодействие путем передачи сообщений
- •14Буферизация
- •15Исключительные ситуации
- •Потерянные сообщения
- •Вызов удаленных процедур (rpc)
- •Контрольные вопросы
- •Синхронизация процессов
- •Взаимное исключение и критические участки
- •Синхронизация с помощью элементарных приемов нижнего уровня
- •16Запрещение прерываний
- •17Переменные блокировки
- •18Операция проверки и установки
- •Семафоры
- •19Использование семафоров
- •20Реализация семафоров
- •21Тупики и зависания
- •Классические проблемы синхронизации
- •22Проблема ограниченного буфера
- •23Проблема читателей и писателей
- •24Задача об обедающих философах
- •Двоичные семафоры
- •Сигналы
- •Контрольные вопросы
- •Тупиковые ситуации
- •Необходимые условия возникновения тупиков
- •Граф выделения и закрепления ресурсов
- •Методы решения проблемы тупиков
- •25Предотвращение тупиков
- •Взаимное исключение
- •Захват и ожидание
- •Отсутствие перераспределения
- •Условие кругового ожидания
- •26Обход тупиков
- •27Простейший алгоритм обхода тупика
- •28Алгоритм банкира
- •29Обнаружение тупиков
- •30Восстановление после тупика
- •Контрольные вопросы
- •Управление памятью
- •Функции операционной системы по управлению памятью
- •Типы адресов
- •Физическое и логическое адресное пространство
- •Связывание адресов
- •Динамическая загрузка
- •Динамическое связывание
- •Перекрытие программ в памяти
- •Свопинг
- •Смежное размещение процессов
- •31Простое непрерывное распределение
- •32Распределение с несколькими непрерывными разделами
- •Фрагментация
- •Страничная организация памяти
- •Сегментная организация памяти
- •Защита и совместное использование
- •Фрагментация
- •Сегментация в сочетании со страничной памятью
- •Контрольные вопросы
- •Управление виртуальной памятью
- •Подкачка страниц
- •Алгоритмы вытеснения страниц
- •33Случайный выбор (Random)
- •34«Первым пришел первым ушел» (fifo)
- •35Вытеснение по давности использования (lru)
- •36Вытеснение редко используемых страниц (lfu)
- •37Оптимальный алгоритм (opt)
- •Аномалии в алгоритмах страничной реализации
- •38«Толкотня» в памяти
- •39Аномалия Биледи
- •Эффективность и применимость виртуальной памяти
- •Пример.
- •Контрольные вопросы
- •Интерфейс файловой системы
- •Понятие файла. Атрибуты файла и операции с файлами
- •Операции над файлами
- •Типы файлов
- •Структура файлов
- •Методы доступа
- •40Последовательный метод доступа
- •41 Прямой метод доступа
- •42Другие методы доступа
- •Каталоги
- •Логическая структура каталога
- •43Одноуровневая структура каталога
- •44Двухуровневая структура каталога
- •45 Древовидная структура каталога
- •46Организация каталога в виде графа без циклов
- •47Организация каталога в виде произвольного (простого) графа
- •Проблемы защиты файлов
- •48Типы доступа
- •49Списки прав доступа
- •50Другие подходы к защите
- •Контрольные вопросы
- •Некоторые аспекты Реализации файловой системы
- •Общая структура файловой системы
- •Методы выделения дискового пространства
- •51Выделение непрерывной последовательностью блоков
- •52Связный список
- •53Таблица отображения файлов
- •54Индексные узлы
- •Управление свободным и занятым дисковым пространством
- •55Учет при помощи организации битового вектора
- •56Учет при помощи организации связного списка
- •57Размер блока
- •58Структура файловой системы на диске
- •Контрольные вопросы Литература
Сегментная организация памяти
Страничная организация памяти предполагает, что разделение программы на страницы осуществляется операционной системой и «невидимо» для прикладного программиста. Большинство технологий программирования также предполагают разделение программы на множество логических частей (подпрограммы, процедуры, функции, модули).
Сегментная организация памяти представляет собой метод несмежного размещения, при котором адресная структура программы отражает ее содержательное членение. Пространство адресов каждой программы подразделяется на называемые сегментами отрезки разной длины, которые соответствуют различным частям программы.
Логический адрес при сегментной организации памяти состоит из двух частей: <s, d>, где s – номер сегмента, а d – смещение в пределах сегмента. При сегментной организации виртуальный адрес является двумерным как для программиста, так и для операционной системы, и состоит из двух полей – номера сегмента и смещения внутри сегмента.
Каждому процессу соответствует таблица сегментов (segment table), в которой каждому сегменту соответствует одна запись. Адрес таблицы сегментов обычно хранится в специальном аппаратном регистре (STBR – Segment-Table Base Register). В каждой строке таблицы хранится адрес начала сегмента в ОП (base) и длина сегмента (limit).
Количество строк таблицы сегментов равно количеству сегментов программы.
Рис. 11.7 иллюстрирует аппаратную поддержку базового метода сегментной организации памяти.
Номер сегмента (s) используется как индекс для таблицы сегментов. С помощью таблицы сегментов определяется его начальный адрес (base) в основной памяти. Значение limit используется для защиты памяти. Смещение d должно удовлетворять неравенству 0<d<limit. В случае выхода смещения за границы сегмента работа программы прерывается. Физический адрес определяется как сумма начального адреса (base) и смещения (d).
Рисунок 11.31 - Аппаратная поддержка базового метода сегментной организации памяти
Защита и совместное использование
Сегментация позволяет с целью защиты управлять уровнем доступа к каждому сегменту. Например, сегменты, содержащие только код, обычно помечаются как доступные только для чтения или выполнения, а сегменты, содержащие данные, помечаются как доступные для чтения и записи. Специальное оборудование может выявить недопустимые обращения к сегменту.
Другим преимуществом сегментации является возможность совместного использования программ и данных. Сегмент является разделяемым, строки таблиц сегментов, хотя бы двух различных процессов, указывают на один и тот же физический сегмент.
Фрагментация
Для работы программы необходимо разместить все ее сегменты в памяти. Для этого используются те же методы, что и при схеме с несколькими переменными разделами.
При этом возникает внешняя фрагментация, так как после удаления блока из памяти, не всегда возможно заменить его блоком той же длины. Может случиться, что все свободные блоки будут слишком малы, и процесс вынужден будет дожидаться освобождения достаточного участка памяти.
Сегментация в сочетании со страничной памятью
Хранить в памяти сегменты большого размера целиком так же неудобно, как и хранить процесс непрерывным блоком. Возможен подход, объединяющий сегментную и страничную организацию памяти. В этом случае память разбивается на страницы для каждого сегмента по собственной таблице страниц.
Логические адреса состоят из трех: [s, p, d]. Первая компонента – номер сегмента s. Вход в таблицу сегментов осуществляется через регистр таблицы сегментов; s-я ячейка таблицы сегментов содержит базовый адрес и длину (то есть границу) таблицы страниц для этого сегмента. Вторая компонента адреса р определяет запись в таблице страниц, которая указывает на р-ю страницу сегмента s. Затем, чтобы добраться до искомого слова, надо смещение d прибавить к базовому адресу страницы.
На такую трехкомпонентную ссылку требуется три цикла обращения к памяти; это создает недопустимо большую задержку, даже, если поиск слова по адресу выполняется с помощью аппаратного оборудования. Эту трудность можно обойти, если использовать группу ячеек памяти с быстрым доступом, называемых ассоциативными регистрами. Эти регистры сопоставляют комбинациям [s, p] физические места страниц. Основное свойство ассоциативных регистров — то, что их можно просматривать параллельно. По заданной ссылке [s, p, d] ассоциативная память порождает указатель страницы [s, p], если он имеется в одном из ассоциативных регистров. Таким образом, количество требуемых циклов памяти сводится к двум. Если комбинации [s, p] нет ни в одном ассоциативном регистре, то происходит прерывание и супервизор заменяет содержимое одного из ассоциативных регистров новой ссылкой [s, p]. Наблюдения показывают, что ссылки распределяются в памяти неравномерно, концентрируясь на нескольких интенсивно используемых страницах. Поэтому для большинства адресных ссылок соответствующая комбинация [s, p] будет найдена в ассоциативных регистрах.
Странично-сегментному методу присущи все преимущества и сегментации, и страничной организации. Сегментация пространства программных адресов дает возможность совсем нехитро реализовать разделение и установление внешних связей. Страничная организация памяти позволяет, применяя несложную стратегию сегментации, упростить распределение памяти. К тому же исключается внешняя фрагментация. Но такая способность системы приспосабливаться к различным требованиям достигается ценой трехкомпонентной адресной ссылки. Однако при наличии соответствующего оборудования, с ассоциативными регистрами можно добиться, чтобы стоимость дополнительных обращений к памяти оставалась в разумных пределах.