- •Оглавление
- •7.1. Основные понятия 37
- •8.1. Основные понятия 47
- •14.1. Основные понятия 77
- •Введение
- •Раздел 1. Основные сведения об операционных системах Тема 1. Функции и классификация операционных систем
- •1.1. Функции ос
- •1.1. История ос
- •По назначению
- •По режиму обработки задач
- •1.3. Классификация ос
- •По способу взаимодействия с пользователем
- •По принципу построения
- •Вопросы для самоконтроля
- •Тема 2. Структура операционных систем. Системные вызовы
- •2.1. Структура ос
- •Монолитная структура (структура макроядра)
- •Иерархическая структура (многослойное ядро)
- •Структура микроядра
- •2.2. Выполнение системных вызовов
- •2.3. Понятие операционной и программной среды
- •Вопросы для самоконтроля
- •Раздел 2. Процессы и потоки Тема 3. Процессы
- •3.1. Основные сведения о процессах
- •Создание процессов
- •Завершение процессов
- •Иерархия процессов
- •3.2. Модели процесса Модель с двумя состояниями
- •Модель с пятью состояниями
- •3.3. Описание процессов
- •3.4. Управление процессами Создание процессов
- •Переключение процессов
- •3.5. Выполнение кода ос по отношению к процессам
- •Ядро вне процессов (автономное ядро)
- •Ядро в составе пользовательских процессов
- •Ос на основе процессов
- •Вопросы для самоконтроля
- •Тема 4. Системные вызовы управления процессами в ос unix
- •4.1. Создание процесса
- •4.2. Завершение процесса
- •4.3. Изменение образа памяти процесса
- •4.4. Синхронизация между родительским и дочерним процессами
- •4.5. Состояние "зомби"
- •Вопросы для самоконтроля
- •Тема 5. Сигналы в ос unix
- •5.1. Назначение сигналов
- •5.2. Обработка сигналов
- •5.3. Посылка сигнала процессу
- •Вопросы для самоконтроля
- •Тема 6. Потоки
- •6.1. Основные понятия
- •6.2. Основные операции с потоками
- •6.3. Способы реализации потоков в пространстве пользователя
- •В пространстве ядра
- •Смешанная реализация
- •Вопросы для самоконтроля
- •Тема 7. Взаимоблокировки
- •7.1. Основные понятия
- •Типы доступа к ресурсу
- •Условия возникновения взаимоблокировок
- •7.2. Моделирование взаимоблокировок
- •7.3. Обнаружение взаимоблокировок Обнаружение взаимоблокировок при наличии одного ресурса каждого типа
- •Обнаружение взаимоблокировок при наличии нескольких ресурсов каждого типа
- •7.4. Избежание взаимоблокировок Безопасные и небезопасные состояния
- •Алгоритм банкира для одного вида ресурса
- •Алгоритм банкира для нескольких видов ресурсов
- •Вопросы для самоконтроля
- •Раздел 3. Взаимодействие процессов Тема 8. Проблема взаимного исключения и способы ее решения
- •8.1. Основные понятия
- •8.2. Аппаратные способы достижения взаимного исключения Запрещение прерываний
- •Специальные команды, выполняющиеся атомарно
- •8.3. Программные способы достижения взаимного исключения Переменные блокировки.
- •Алгоритм Деккера
- •Алгоритм Петерсона
- •Вопросы для самоконтроля
- •Тема 9. Примитивы синхронизации
- •9.1. Семафоры Определение семафора
- •Применение семафоров
- •9.2. Мьютексы
- •9.3. Мониторы
- •Структура монитора
- •Вопросы для самоконтроля
- •Тема 10. Классические проблемы межпроцессного взаимодействия
- •10.1. Проблема производителя и потребителя
- •10.2. Задача о читателях и писателях
- •10.3. Задача об обедающих философах
- •10.4. Задача о спящем парикмахере
- •10.5. Задача о железнодорожном перегоне
- •Вопросы для самоконтроля
- •Тема 11. Межпроцессное взаимодействие в ос unix
- •11.1. Неименованные каналы
- •Синхронизирующие свойства неименованного канала
- •Системные вызовы для работы с неименованными каналами
- •Шаги в установлении связи через неименованный канал
- •Ограничения неименованных каналов
- •11.2. Именованные каналы
- •Использование именованных каналов
- •Синхронизирующие свойства именованных каналов
- •Системные вызовы для работы с именованными каналами
- •11.3. Очереди сообщений
- •11.4. Разделяемая память
- •Вопросы для самоконтроля
- •Тема 12. Передача сообщений
- •12.1. Характеристика систем передачи сообщений
- •12.2. Модель клиент-сервер
- •Вопросы для самоконтроля
- •Тема 13. Api сокетов ос unix
- •13.1. Межпроцессное взаимодействие при помощи сокетов
- •13.2. Системные вызовы работы с сокетами в ос unix Структура адреса сокета
- •Получить дескриптор сокета (создать сокет)
- •Указать адрес локальной оконечной точки
- •Перевод сокета в пассивный режим
- •Принять соединение с сокетом
- •Установить соединение с сервером.
- •Чтение данных из сокета и запись данных в сокет
- •Операции клиента и сервера
- •14.2. Критерии краткосрочного планирования.
- •14.3. Стратегии краткосрочного планирования. Первым поступил – первым обслужен
- •Кратчайшая задача – первая
- •Наименьшее оставшееся время выполнения
- •Циклическое планирование
- •Приоритетное планирование
- •Вопросы для самоконтроля
- •Раздел 5. Управление памятью Тема 15. Технологии распределения памяти
- •15.1. Фиксированное распределение
- •15.2. Динамическое распределение
- •15.3. Система двойников
- •15.4. Простая страничная организация
- •15.5. Простая сегментная организация
- •Вопросы для самоконтроля
- •Тема 16. Виртуальная память
- •16.1. Предпосылки для организации виртуальной памяти
- •16.2. Страничная организация виртуальной памяти
- •Структура таблицы страниц
- •16.3. Сегментация
- •16.4. Комбинация сегментации и страничной организации
- •16.5. Алгоритмы управления виртуальной памятью
- •Стратегия выборки
- •Стратегия размещения.
- •Стратегия замещения
- •Вопросы для самоконтроля
- •Раздел 6. Ввод-вывод и файловая система Тема 17. Ввод-вывод
- •17.1. Принципы программного обеспечения ввода-вывода
- •Способы осуществления ввода-вывода
- •17.2. Программные уровни ввода-вывода
- •Обработчики прерываний
- •Драйверы устройств
- •Независимое от устройств программное обеспечение ввода-вывода
- •Программное обеспечение ввода-вывода пространства пользователя
- •Вопросы для самоконтроля
- •Тема 18. Физическая организация файловой системы
- •18.1. Цели и задачи файловой системы
- •18.2. Устройство диска
- •18.3. Физическая организация и адресация файла
- •Вопросы для самоконтроля
- •Тема 19. Логическая организация файловой системы
- •19.1. Типы файлов
- •19.2. Иерархическая структура файловой системы
- •Имена файлов
- •Монтирование
- •19.3. Атрибуты файлов
- •Вопросы для самоконтроля
- •Литература
- •Перечень сокращений
16.4. Комбинация сегментации и страничной организации
И страничная организация, и сегментация имеют свои достоинства. Страничная организация, прозрачная для программиста, устраняет внешнюю фрагментацию и таким образом обеспечивает эффективное использование ОП. Кроме того, поскольку перемещаемые в ОП и из нее блоки имеют фиксированный, одинаковый размер, облегчается создание эффективных алгоритмов управления памятью. Сегментация, являясь видимой для программиста, имеет перечисленные в предыдущем разделе достоинства. Некоторые ВС используют достоинства обоих методов.
В такой системе адресное пространство пользователя разбивается на ряд сегментов по усмотрению программиста. Каждый сегмент, в свою очередь, разбивается на ряд страниц фиксированного размера, соответствующего размеру кадра ОП. Если размер сегмента меньше размера страницы, он занимает страницу целиком. С точки зрения программиста, логический адрес в этом случае состоит из номера сегмента и смещения в нем. С позиции ОС смещение в сегменте следует рассматривать как номер страницы определенного сегмента и смещение в ней.
16.5. Алгоритмы управления виртуальной памятью
Алгоритмы, или стратегия, операционной системы, связанные с управлением виртуальной памятью, делятся на следующие группы.
Стратегия выборки
Стратегия выборки определяет, когда страница должна быть передана в ОП. Два основных варианта – по требованию и предварительно.
При выборке по требованию страница передается в ОП только тогда, когда выполняется обращение к ячейке памяти, расположенной на этой странице. В случае предварительной выборки загружается не только страница, вызвавшая прерывание обращения. Если страницы процесса расположены во вторичной памяти последовательно, то гораздо более эффективной будет загрузка в ОП нескольких последовательных страниц за один раз, чем загрузка этих же страниц по одной в течение некоторого промежутка времени.
Стратегия размещения.
Стратегия размещения определяет, где именно в физической памяти будут располагаться части процесса. В случае "чистой" сегментации стратегия размещения использует алгоритмы первого подходящего, очередного подходящего и другие, рассмотренные в разделе 14.2. Однако для систем, использующих только страничную организацию или страничную организацию в сочетании с сегментацией, стратегия размещения обычно не так важна, поскольку аппаратная трансляция адреса и аппаратное обращение к памяти одинаково результативны при любых сочетаниях страница-кадр.
Стратегия замещения
Стратегия замещения отвечает за выбор страниц в ОП для замещения их загружаемыми из вторичной памяти страницами. Стратегия включает ряд взаимосвязанных вопросов:
какое количество кадров должно быть выделено каждому активному процессу;
должно ли множество страниц, которые потенциально могут быть замещены загружаемыми страницами, ограничиваться одним процессом или в качестве кандидатов на замещение могут рассматриваться все кадры ОП;
какие именно страницы из рассматриваемого множества следует выбрать для замещения.
Первые для вопроса относятся к управлению резидентным множеством. Ниже рассматривается третий вопрос.
Когда все кадры ОП заняты и нам требуется разместить новую страницу, стратегия замещения определяет, какая из находящихся в настоящее время в ОП страниц должна быть выгружена, чтобы освободить кадр для загружаемой страницы. Все стратегии направлены на то, чтобы выгрузить страницу, обращений к которой в ближайшем будущем не последует. В соответствии с принципом локализации часто наблюдается сильная корреляция между множеством страниц, к которым в последнее время были обращения, и множеством страниц, к которым будут обращения в ближайшее время. Большинство стратегий пытаются определить будущее поведение программы на основе ее прошлого поведения. При рассмотрении разных стратегий следует учитывать, что чем более совершенный и интеллектуальный алгоритм использует стратегия, тем выше будут накладные расходы при его реализации.
Оптимальный алгоритм состоит в выборе для замещения той страницы, обращение к которой будет через наибольший промежуток времени по сравнению со всеми остальными страницами. Этот алгоритм приводит к минимальному количеству прерываний из-за отсутствия страницы. Понятно, что реализовать такой алгоритм невозможно, поскольку для этого системе требуется знать все будущие события. Однако этот алгоритм является стандартом, с которым сравниваются реальные алгоритмы.
Стратегия дольше всех неиспользовавшегося элемента замещает в памяти ту страницу, обращений к которой не было дольше, чем к другим. Согласно принципу локализации можно ожидать, что эта страница не будет использоваться и в ближайшем будущем. Эта стратегия близка к оптимальной. Основная проблема заключается в сложности ее реализации.
Стратегия "первым вошел – первым вышел" рассматривает кадры страниц процесса как циклический буфер, с циклическим же удалением страниц из него. Это одна из простейших в реализации стратегий замещения, которая замещает страницу, находящуюся в ОП дольше других. Однако далеко не всегда эта страница редко используется.
Часовая стратегия является компромиссом между стратегией дольше всех неиспользовавшегося элемента (близкой к оптимальной, но сложной в реализации) и стратегией "первым вошел – первым вышел" (простой в реализации, но далекой от оптимальной).
В простейшей схеме часовой стратегии с каждым кадром связывается один дополнительный бит, известный как бит использования. Когда страница впервые загружается в кадр, бит использования устанавливается равным 1. При последующих обращениях к странице этот бит также устанавливается равным 1. При работе алгоритма замещения множество кадров рассматривается как циклический буфер, с которым связан указатель. При замещении страницы указатель перемещается к следующему кадру в буфере. Когда наступает время замещения страницы, ОС сканирует буфер для поиска кадра, бит использования которого равен 0. Всякий раз, когда в процессе поиска встречается кадр с битом использования, равным 1, он сбрасывается в 0. Первый же встреченный кадр с нулевым битом использования выбирается для замещения. Если все кадры имеют бит использования, равный 1, указатель совершает полный круг и возвращается к начальному положению, заменяя страницу в этом кадре.
На рис. 16.2 приведен пример использования описанных выше четырех стратегий для фиксированного размера резидентного множества, состоящего из трех кадров. Выполнение процесса приводит к обращениям к пяти различным страницам в следующем порядке:
2 3 2 1 5 2 4 5 3 2 5 2
Прерывания обращения к странице обозначены на рисунке буквами F. Для часового алгоритма звездочка рядом с номером страницы означает, что бит использования соответствующей страницы равен 1, а стрелка показывает текущее положение указателя.
