
- •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Структура файловой системы на диске
- •Контрольные вопросы Литература
Операции над файлами
Файл можно рассматривать как абстрактный тип данных. Чтобы его определить должным образом, необходимо продумать операции, которые можно проделывать с файлами. Операционные системы предоставляют шесть базовых операций, которые выполняются с помощью соответствующих системных вызовов:
Создание файла (creating a file). Для создания файла требуется выполнение двух шагов:
в файловой системе должно быть найдено свободное пространство для нового файла;
в соответствующем каталоге создается точка входа (регистрационная запись) для нового файла. Она должна содержать имя файла и информацию о расположении файла в файловой системе.
Запись файла (writing a file). Для записи файла системному вызову передаются имя файла и информация, записываемая в файл. Получив имя файла, система просматривает каталог, чтобы узнать расположение файла. Система может поддерживать специальный указатель записи, чтобы сохранять позицию, в которую нужно будет писать при следующей записи.
Чтение из файла (reading a file). Для чтения файла используется системный вызов, параметрами которого являются имя файла и указатель на место в основной памяти, куда должна быть помещена прочитанная из файла информация. Действует этот системный вызов аналогично предыдущему. Система может поддерживать специальный указатель чтения. Поскольку, вообще говоря, операции чтения и записи могут чередоваться, большинство систем поддерживает текущий указатель позиции в файле (current file position pointer).
Позиционирование (reposition within a file). Текущий указатель устанавливается в соответствии с полученным значением. Эта операция не требует выполнения ввода-вывода
Удаление файла (deleting a file). Подразумевает не «стирание» информации, хранящейся в файле, освобождение пространства, занимаемое данным файлом, для дальнейшего использования другими файлами и уничтожение соответствующей записи в каталоге.
Усечение файла (truncate). Иногда необходимо, оставив неизмененными атрибуты файла, удалить его содержимое. Вместо того, чтобы удалять файл и создавать его заново, можно просто установить его длину, равной нулю.
Эти шесть операций образуют минимальный набор операций, требующихся для работы с файлами. Могут быть предусмотрены и другие операции, например, переименование файла (renaming a file) или добавление информации в конец существующего файла (append). Как правило, они могут быть реализованы в виде комбинации выражены через базовые операции. Например, операция копирования (copy) может быть выполнена путем создания нового файла и последующей записи в него содержимого существующего файла.
Нужно также иметь операции, которые позволяют получать значения атрибутов файла и переустанавливать их.
Большинство операций с файлами, как мы видели, включает поиск в каталоге точки входа, ассоциированной с файлом. Чтобы избежать одинаковых действий, большинство ОС предусматривают операцию открытия файла (opening a file). Для этого операционная система поддерживает таблицу, содержащую информацию об открытых файлах. Такая таблица называется таблицей открытых файлов (open – file table). Открытие файла сводится к занесению данных о нем в таблицу и возврату номера строки (индекса) в таблице. Другие файловые операции используют этот индекс и, в результате, не производится никакого поиска. Когда файл больше не нужен, процесс может его закрыть, в этом случае запись из таблицы будет удалена.
Некоторые системы неявно открывают файл при первой ссылке на нее. В большинстве операционных систем требуется явное выполнение операции открытия файла до первого доступа к данным при помощи соответствующего системного вызова (open). Этот системный вызов ищет в каталоге соответствующую точку входа, копирует ее в таблицу открытых файлов, добавляя информацию о правах доступа. Обычно cистемный вызов open возвращает указатель на точку входа в таблицу открытых файлов. Этот указатель (дескриптор файла) используется в операциях ввода-вывода, сокращая их выполнение и упрощая интерфейс.
Реализация системных вызовов открытия и закрытия файлов (open и close) в многопользовательских системах (типа UNIX), более сложна. В таких системах разрешен одновременный доступ к файлам нескольким пользователям. Обычно ОС используют два уровня внутренних таблиц: таблицу открытых файлов для каждого процесса и общесистемную таблицу открытых файлов. Первая таблица содержит информацию об использовании файлов процессом. Здесь, например, находится текущий указатель. Каждая строка этой таблицы ссылается на общесистемную таблицу открытых файлов. Здесь хранится информация о расположении файла на диске, даты доступа и размер файла. Обычно общесистемная таблица содержит еще и счетчик ссылок на файл. При открытии файла счетчик увеличивается, при закрытии уменьшается. Если счетчик равен нулю, то запись в общесистемной таблице уничтожается.