
- •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Структура файловой системы на диске
- •Контрольные вопросы Литература
44Двухуровневая структура каталога
Главным недостатком одноуровневой организации является путаница между именами файлов нескольких пользователей. Стандартным приемом устранения этого недостатка является создание отдельного каталога для каждого пользователя.
При двухуровневой организации каждый пользователь имеет свой собственный каталог (user file directory – UFD). Все они имеют похожую структуру, но содержат файлы только одного пользователя.
Когда пользователь входит в систему, в главном системном каталоге (master file directory – MFD) разыскивается точка входа в каталог пользователя (по имени пользователя или соответствующему ему номеру). Пользовательские каталоги могут создаваться и удаляться по мере необходимости.
Рисунок 13.35 - Двухуровневая структура каталога
Двухуровневая структура каталога надежно решает проблему коллизий имен, но создает некоторые неудобства. Такая структура надежно изолирует одного пользователя от другого, но именно это мешает осуществлять взаимодействие для решения общих задач и доступ к файлам других пользователей. Некоторые ОС просто запрещают такой доступ. Если доступ к файлам других пользователей допускается, то необходимо иметь возможность именовать файлы из других каталогов. Чтобы такое имя было уникальным, оно должно включать как имя файла, так и имя каталога. Двухуровневый каталог можно рассматривать как дерево глубины 2. Корнем является главный системный каталог, его потомками – каталоги пользователей, файлы являются листьями. Путь доступа определяется как путь в дереве от корня к листу и состоит из имени каталога и имени файла.
Каждая операционная система имеет свой собственный синтаксис указания пути.
Например:
MS DOS c:\user3\test
VMS u:[sst.jdeck] login.com; 1
где u - имя (минидиска), sst - имя каталога, login.com – имя файла, jdeck – имя подкаталога, 1 - номер версии.
Двухуровневая организация не решает проблему большого количества файлов одного пользователя.
45 Древовидная структура каталога
Древовидная структура является обобщением двухуровневой структурой до дерева произвольной длины и позволяет пользователям создать свои собственные подкаталоги (см. рис. 13.4)
В дереве имеется корневой каталог. Каждый файл имеет уникальный путь доступа (путевое имя), который представляет собой путь от корня, через все подкаталоги к необходимому файлу.
Рисунок 13.36 - Древовидная структура каталога
Каждый каталог (подкаталог) содержит множество файлов и/или подкаталог. Каталог также является файлом, который обрабатывается операционной системой специальным образом. Все каталоги имеют одинаковый внутренний формат. Достаточно одного бита в учетной записи для определения того, файл это или каталог. Например (0 – файл, 1 – каталог). Специальные системные вызовы позволяют создавать и удалять каталоги.
Обычно у каждого пользователя есть текущий каталог. Текущий каталог содержит большинство файлов, интересующих пользователя в данный момент. Если необходимый файл находится не в текущем каталоге, то пользователь должен задать путь доступа или сменить текущий каталог на каталог, содержащий данный файл. Для смены текущего каталога используется соответствующий системный вызов.
Древовидная структура директории позволяет легко организовать совместный доступ к файлам нескольких пользователей с помощью задания соответствующих путей доступа. Пути доступа бывают двух типов: абсолютный (полный) путь доступа и относительный путь доступа. Абсолютный путь доступа начинается от корня, содержит имя необходимого файла и включает имена всех подкаталогов на пути к этому файлу. Относительный путь определяет путь от текущего каталога.
Удаление каталогов требует специальной политики. Если каталог пуст, то его можно безболезненно удалять. В противном случае возможны два подхода. В некоторых системах, например, MS DOS, запрещено удалять непустые каталоги. Чтобы удалить каталог, пользователь должен предварительно удалить все файлы и подкаталоги. Если подкаталогов много, то эта процедура весьма затруднительна. Альтернативный подход предусматривает наличие специальной опции, которая разрешает удалять каталог, все его файлы и все подкаталоги. Этот подход используется, например, в ОС UNIX. Такая политика более опасна, так как каталог удаляется одной командой.