
- •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Структура файловой системы на диске
- •Контрольные вопросы Литература
14 Некоторые аспекты Реализации файловой системы 156
14.1 Общая структура файловой системы 156
14.2 Методы выделения дискового пространства 157
51 Выделение непрерывной последовательностью блоков 157
52 Связный список 159
53 Таблица отображения файлов 160
54 Индексные узлы 160
14.3 Управление свободным и занятым дисковым пространством 162
55 Учет при помощи организации битового вектора 162
56 Учет при помощи организации связного списка 162
57 Размер блока 163
58 Структура файловой системы на диске 163
Контрольные вопросы 165
Литература 166 введение
Учебная дисциплина «Операционные системы» принадлежит к циклу подготовки бакалавров по направлению «Прикладная математика».
Курс «Операционные системы» ориентирован на изучение концептуального базиса и методов управления ресурсами компьютера. Целью курса является изучение основных методов, которые используются при управлении ресурсами в разных операционных системах. Задачей курса является получение как теоретических знаний, так и практических навыков, достаточных для проектирования и программирования системного программного обеспечения современных компьютеров, а также теоретических знаний и практических навыков, необходимых для эксплуатации операционных систем.
Знание основ организации операционных систем и принципов их функционирования позволяет использовать компьютеры более эффективно. Глубокое изучение операционных систем позволяет применить эти знания, прежде всего, при создании программного обеспечения.
Знание основных принципов организации вычислительных процессов, понимание проблем, которые при этом возникают, и методов их решения позволяют обдуманно подходить к использованию компьютера, предусматривать и предотвращать нежелательные явления.
Понятие операционной системы
Операционная система (ОС) - это организованная совокупность программ и данных, которая выполняет функции посредника между пользователями и компьютером. ОС служит двум целям: во-первых, сделать компьютерную систему удобной для использования, и, во-вторых, эффективно использовать аппаратные средства компьютера.
Операционная система является программным обеспечением, которое управляет аппаратурой. Аппаратура должна поддерживать соответствующие механизмы для поддержки корректной работы компьютерной системы и предотвращения искажения работы пользовательских программ под влиянием других операций системы.
ОС является важнейшей частью любой компьютерной системы. Компьютерная система может быть представлена в виде четырех компонент (рис. 1.1):
аппаратуры;
операционной системы;
прикладных программ (приложений);
пользователей.
Рисунок 1.1 – Абстрактный взгляд на компоненты компьютерной системы
Аппаратура (центральный процессор, запоминающие устройства, устройства ввода-вывода) обеспечивает основные вычислительные ресурсы. Прикладные программы, например, компиляторы, системы управления базами данных (СУБД), WEB-браузеры, игры и коммерческие программы, определяют, как эти ресурсы будут использованы для решения проблем пользователей. Пользователями могут быть не только люди, но и механизмы и машины (промышленные роботы), технологические процессы (автоматизированные системы управления технологическими процессами) и другие компьютеры.
Попросту говоря, пользователь - это тот, кто имеет программу, которая должна выполняться на данной системе. Эта программа может обладать самыми разнообразными свойствами. Ее потребности в процессорном времени, объеме памяти и периферийных устройствах могут варьироваться в диапазоне от незначительной доли ресурсов до всей машины целиком. В дальнейшем мы будем считать, что пользователь – это некто, желающий проделать какую-то вычислительную работу, и что эта работа соответствует возможностям системы.
С точки зрения пользователя операционная система выполняет функцию расширенной машины, в которой легче программировать и легче работать, чем непосредственно с аппаратным обеспечением.
Концепция, рассматривающая операционную систему, прежде всего как удобный интерфейс пользователя, это взгляд сверху вниз. Альтернативный взгляд снизу вверх дает представление об ОС как о механизме, присутствующем в компьютерной системе для управления всеми ее частями.
Часто ОС рассматривают как систему распределения ресурсов. В компьютерной системе имеется много ресурсов (аппаратных и программных), которые могут потребоваться при решении задач. ОС выступает как распорядитель этих ресурсов и предоставляет их программам и пользователям для решения их задач. Для достижения отмеченных целей операционная система должна контролировать ресурс компьютера и распределять его между прикладными программами. Поэтому часто операционную систему рассматривают как систему распределения ресурсов (resourse allocator).
Таким образом, в современных компьютерах прикладные программы (прикладные программисты) освобождены от непосредственного взаимодействия (программирования) компьютерных ресурсов.
ОС является управляющей программой. Управляющая программа контролирует выполнение программ пользователей для предотвращения ошибок и неправильного использования компьютера. В особенности это касается работы с устройствами ввода-вывода.
ОС реализует множество различных функций, в том числе:
определяет так называемый интерфейс пользователя;
обеспечивает разделение аппаратных ресурсов между пользователями;
дает возможность работать с общими данными в режиме коллективного пользования;
планирует доступ пользователя к общим ресурсам;
обеспечивает эффективное выполнение операций ввода-вывода;
осуществляет восстановление информации и вычислительного процесса в случае ошибок.
Операционные системы могут различаться особенностями реализации внутренних алгоритмов управления основными ресурсами компьютера (процессорами, памятью, устройствами), особенностями использованных методов проектирования, типами аппаратных платформ, областями использования и многими другими свойствами.
Любая ОС должна удовлетворять определенным эксплуатационным требованиям. В частности система должна обладать следующими качествами:
Надежностью. Система должна быть, по меньшей мере, так надежна, как аппаратура, на которой она работает. В случае ошибки в программном или аппаратном оборудовании система должна обнаружить ошибку и либо попытаться исправить положение, либо, по крайней мере, попытаться свести к минимуму ущерб, нанесенный этой ошибкой пользователям.
Защитой. Система должна защищать пользователей от воздействия чужих ошибок и от попыток злонамеренного вмешательства.
Эффективностью. Обычно ОС представляет собой сложную программу, которая использует значительную часть аппаратных ресурсов для своих собственных нужд. Ресурсы, которые потребляет ОС, не попадают в распоряжение пользователей. Следовательно, сама система должна быть как можно более экономной. Кроме того, система должна управлять ресурсами пользователей так, чтобы свести к минимуму время простоя, или, другими словами, добиться максимальной загруженности ресурса.
Предсказуемостью. Требования, которые пользователь может предъявить к системе, в большинстве случаев непредсказуемы. В то же время пользователь предпочитает, чтобы обслуживание не сильно менялось в течение продолжительного времени.
Удобством. Поскольку ОС пользователям навязывают, она должна быть гибкой и удобной для пользования.