
- •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Структура файловой системы на диске
- •Контрольные вопросы Литература
Типы файлов
Одним из важнейших моментов в проектировании файловых систем, а значит и ОС в целом, является решение вопроса о том, как операционная система распознает и поддерживает типы файлов. Если ОС распознает тип файла, то она может манипулировать им соответствующим образом.
Обычным подходом к реализации распознавания типа файлов является включение этого типа в имя файла. Имя файла считается состоящим из двух частей: собственно имени и расширения. Расширение обычно отделяется точкой.
Например, в MS DOS имя может состоять из восьми букв, расширение из трех. Система использует расширение для определения типа файла и типов операций, которые с ним можно производить. Например, файлы с расширениями com, exe или bat могут быть исполнены. MS DOS распознает только несколько расширений, но приложения могут использовать расширения для распознавания типов файлов.
Аналогичный подход используется и в Windows, с той разницей, что ограничения на длину имени и расширения менее жесткие.
Рассмотрим теперь ОС Apple Macintosh. В этой системе каждый файл имеет тип, например «text» или «appl». Каждый файл имеет также атрибут создателя, содержащий имя программы, создавшей этот файл. Этот атрибут устанавливается при выполнении системного вызова create и поддерживается системой. Когда пользователь открывает файл двойным щелчком мыши, соответствующая программа, например, word, активизируется для обработки этого файла.
ОС UNIX не поддерживает подобные средства. Хотя эта ОС и позволяет записывать так называемое магическое число в начало файлов для правильного определения типа файла, не все файлы имеют это число, и поэтому система не может базироваться на таком подходе. ОС UNIX также позволяет файлу иметь расширение, но эти расширения, именуемые суффиксами, не влияют на работу ОС, а позволяют пользователю упорядочивать информацию. Тем не менее, отдельные прикладные программы, например компилятор языка С, могут в своей работе использовать суффиксы, но это решение принимается исключительно разработчиками программы.
Структура файлов
Типы файлов могут быть использованы ОС для автоматического определения их структуры. Например, ОС может требовать, чтобы исполняемый файл имел определенную структуру, так как она определяет, каким образом следует загружать файл в память, и где расположена первая исполняемая команда. Некоторые ОС распространяют эту идею на множество системно поддерживаемых файловых структур с множеством операций, поддерживающих манипулирование этими структурами. Например, ОС WMS для DEC.
Такой подход имеет и недостатки. Главным из них является то, что результирующий размер ОС чересчур велик, она становится слишком громоздкой. Если система поддерживает несколько типов структур, то она должна содержать обслуживающий код для каждой структуры. Кроме того, каждый файл должен быть определяемым как относящийся к одной из этих структур. Проблемы возникнут, если приложениям потребуется структурировать информацию другим способом. Например, если система поддерживает только текстовые и исполняемые файлы, трудности возникнут даже, если мы захотим всего лишь шифровать информацию. Некоторые ОС поддерживают минимальное число файловых структур, например, UNIX, MS DOS, Windows и др.
ОС UNIX рассматривает файл как последовательность байтов. Они никак не интерпретируются операционной системой, а только приложениями. Эта схема делает систему максимально гибкой и компактной. Каждое приложение должно содержать код, интерпретирующий файл в соответствии с необходимой структурой. Однако все ОС должны поддерживать как минимум одну структуру – исполняемый файл, чтобы система могла загружать и выполнять программы.
Другим примером ОС с минимальным числом файловых структур является MAC OS, которая ожидает, что все файлы содержат две части: ветвь ресурсов (resource fork) и ветвь данных (data fork). Первая содержит информацию об интересах пользователя. Например, она хранит метки всех кнопок, используемых программой. Поскольку объекты в этой ветви MAC OS позволяет редактировать, то перевести программу на другой язык очень просто. Вторая ветвь содержит текст программ и данные – традиционное содержимое файлов.