
- •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Структура файловой системы на диске
- •Контрольные вопросы Литература
Методы доступа
Для того чтобы воспользоваться информацией, хранимой в файле, необходимо поместить ее в оперативную память. Доступ к информации может быть осуществлен несколькими путями. Некоторые системы поддерживают один метод доступа. Другие системы, например IBM, поддерживают несколько методов доступа.
40Последовательный метод доступа
Последовательный (sequential) метод доступа является простейшим. Он основан на «ленточной» модели файла. Этот метод доступа является «естественным» для ряда приложений. Например, компиляторы и текстовые редакторы используют этот метод доступа.
С каждым файлом связывается указатель текущей позиции. Каждая операция доступа (чтение или запись) автоматически изменяет этот указатель в соответствии с объемом прочитанных или записанных данных. Дописывание может осуществляться в конец файла. В случае необходимости текущая позиция может быть установлена в начало файла (для ленточных устройств путем перемотки), некоторые системы позволяют пропускать несколько блоков без выполнения доступа как в прямом, так и в обратном направлении.
Последовательный метод доступа (см. рис. 13.1) основан на «ленточной» модели файла и применим как для устройств последовательного доступа, так и для устройств прямого доступа.
Рисунок 13.33 – Файл с последовательным доступом
41 Прямой метод доступа
При прямом (direct) методе файл представляет собой пронумерованный набор записей фиксированной длины, доступ к которым осуществляется в произвольном порядке. Этот метод базируется на «дисковой» модели доступа к данным. Прямой метод доступа к файлу аналогичен произвольному методу доступа к ячейке основной памяти.
Файлы с прямым доступом широко используются для непосредственного доступа к большим объемам информации. Зачастую прикладные системы баз данных основаны на этом методе доступа.
Для реализации прямого метода в операции доступа должен быть добавлен номер блока, к которому будет применяться эта операция.
Не все операционные системы поддерживают как последовательный, так и прямой методы доступа. Существуют системы, поддерживающие только один из этих методов. В некоторых системах требуется указывать метод доступа при создании файлов.
Последовательный метод доступа можно легко промоделировать с помощью прямого метода доступа. Пусть ср (current position) – переменная, хранящая значение указателя текущей позиции, тогда основные операции последовательного метода доступа моделируются прямым методом доступа следующим образом:
Последовательный метод |
Прямой метод |
Перемотка reset |
cp: = 0 ; |
Чтение read next |
read cp ; cp := cp + 1 ; |
Запись write next |
write cp ; cp : =cp + 1 ; |
42Другие методы доступа
Прямой метод доступа является основой для конструирования более сложных методов доступа. Эти методы включают построение индекса файла. Этот индекс, подобно разделу индекса в книге, содержит указатели на различные блоки. Чтобы найти запись в файле, сначала отыскивается необходимый индекс, а затем осуществляется доступ к необходимой записи по указателю, хранящемуся в индексе.
Пусть, например, некоторый файл хранит информацию некоторых продуктах и их ценах. Каждая запись содержит 10-разрядный универсальный код продукта и 6-разрядную цену. Таким образом, длина записи составляет 16 байтов. Если размер блока на диске равен 1024 байта, то в каждом блоке можно разместить 64 записи.
Пусть файл хранит сведения о 120000 товарах. Следовательно, он располагается примерно в 2000 блоках (2 миллиона байт). Если файл отсортирован по коду продукта, можно построить индекс, состоящий из значений кодов продукта в первой записи каждого блока. Такой индекс содержит 2000 записей по 10 байтов и может быть размещен в памяти. Чтобы найти цену конкретного продукта, нужно осуществить бинарный поиск в индексе, чтобы получить адрес блока, содержащего необходимую запись. Затем можно осуществить поиск записи в блоке.
В тех случаях, когда исходный файл очень велик, его индексный файл может быть также очень велик. В этом случае создают индексный файл второго уровня (индексный файл индексного файла).
Такой способ применен в индексно-последовательном методе доступа ISAM (Index Sequential Access Method), используемый в серии операционных систем для компьютеров фирмы IВМ (OS, VMS и др.).