- •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Структура файловой системы на диске
 - •Контрольные вопросы Литература
 
Контрольные вопросы
В чем преимущества динамического связывания по сравнению со статическим?
В какой момент времени виртуальный адрес преобразуется в физический?
Поясните разницу между внутренней и внешней фрагментацией.
Почему при поиске свободной памяти стратегия "самый подходящий" оказывается хуже, чем "первый подходящий".
Сравните сегментный и страничный способы организации виртуальной памяти. Перечислите достоинства и недостатки каждого.
Почему размер страницы выбирается равным степени двойки (1024, 2048 и т.д.)?
Укажите недостаток сегментного распределения памяти.
Управление виртуальной памятью
Рассмотренные ранее методы, хотя и преследовали цель разместить в памяти множество процессов для организации мультизадачности, но предполагали, что вся программа перед выполнением должна быть размещена в основной памяти.
Виртуальная память – это технология, которая позволяет выполнять процесс, лишь частично размещенный в основной памяти. Таким образом, виртуальная память позволяет выполнять программы, размеры которых превышают размеры физического адресного пространства. Программист может писать программу так, словно ему предоставлена память неограниченного размера. Когда система с виртуальной памятью выполняет программу, то она автоматически вносит в память некоторые части программы, отображая пространство виртуальных адресов на физические адреса. Когда в процессе исполнения встречается ссылка на часть программы, не находящуюся в оперативной памяти, система извлечет ее из вторичной памяти (вспомогательного хранилища) и разместит в ОП, если там есть место. Если свободной памяти нет, то система вытеснит тот или иной блок из основной памяти, чтобы освободить пространство для необходимого в данный момент блока.
Виртуальная память чаще всего реализуется на базе подкачки страниц, что удобно и при страничной и при сегментно-страничной организации памяти. Возможна виртуальная память и на базе сегментов, например в компьютерах фирмы Burroughs или IBM OS/2.
Подкачка страниц
Система с подкачкой страниц – это просто страничная организация памяти со свопингом страниц. Свопингу подвергаются только те страницы, с которыми работает процессор.
Различают подкачку по запросу, когда очередная страница не перемещается в основную память до тех пор, пока в ней не возникла необходимость, и опережающую подкачку, когда страницы подкачиваются в память заранее на основе некоторого прогноза.
Для учета распределения страниц между внешней и основной памятью каждая строка таблицы страниц дополняется признаком местонахождения страницы (битом принадлежности, valid-invalid bit).
Опишем последовательность действий при переносе страниц в ОП.
Прежде чем осуществить преобразование логического адреса в физический, проверяется значение бита принадлежности необходимой страницы.
Если процесса в памяти нет (значение бита принадлежности равно false), то возникает страничный отказ (page fault) – прерывание по отсутствию страниц в памяти. Управление передается операционной системе.
Программа, называемая алгоритмом управления страничной памятью, разыскивает необходимую страницу во вторичной памяти и помещает ее в физическую страницу ОП, замещая, если необходимо, какую-либо из страниц, находящихся в памяти.
После завершения загрузки страницы редактируется соответствующая строка таблицы страниц (базовый адрес и бит принадлежности).
Управление возвращается прерванному процессу.
