- •Основы построения операционных систем
- •Введение
- •1. Основные аспекты операционных систем
- •1.1. Программные системы
- •1.2. Ресурсы вычислительных систем
- •1.3. Функции операционных систем
- •1.3.1. Упрощение доступа к компьютеру
- •1.3.2. Повышение эффективности использования ресурсов
- •1.4. Классификация операционных систем
- •2. Управление файлами
- •2.1. Файлы
- •2.1.1. Имя файла
- •2.1.2. Типы файлов
- •2.1.3. Атрибуты файла
- •2.2. Функции системы управления файлами
- •2.3. Способы организации файлов
- •2.3.1. Последовательное размещение
- •2.3.2. Размещение с помощью сцепленных блоков
- •2.3.3. Организация файлов на основе таблиц размещения
- •2.3.4. Размещение с использованием таблицы индексов
- •2.3.5. Индексно-последовательное размещение
- •2.3.6. Библиотечная структура данных
- •2.4. Методы доступа к содержимому файлов
- •2.4.1. Последовательный доступ
- •2.4.2. Прямой доступ
- •2.4.3. Другие методы доступа
- •2.5. Способы организации файловой структуры
- •2.6. Манипулирование файловой структурой
- •3. Управление памятью
- •3.1. Простое непрерывное распределение
- •3.2. Распределение с несколькими непрерывными разделами
- •3.2.1. Мультипрограммирование и разбиение на разделы
- •3.2.2. Разделы с фиксированными границами
- •3.2.3. Разделы с подвижными границами
- •3.2.4. Своппинг
- •3.3. Организация виртуальной памяти
- •3.3.1. Основные концепции виртуальной памяти
- •3.3.2. Страничная организация памяти
- •3.3.3. Сегментная организация памяти
- •3.3.4. Сегментно-страничная организация памяти
- •3.4. Управление виртуальной памятью
- •3.4.1. Алгоритмы выталкивания страниц
- •3.4.2. Подкачка страниц по запросу
- •3.4.3. Подкачка страниц с опережением
- •3.4.4. Освобождение страниц
- •3.4.5. Размер страниц
- •4. Управление процессами
- •4.1. Концепции процесса
- •4.1.1. Понятие последовательного процесса
- •4.1.2. Состояния процесса
- •4.1.3. Блок управления процессом
- •4.1.4. Планирование процессов
- •4.1.5. Обработка прерываний
- •4.2. Синхронизация параллельных процессов
- •4.2.1. Параллельная обработка
- •4.2.2. Взаимное исключение
- •4.2.3. Алгоритм Деккера
- •4.2.4. Аппаратная реализация взаимного исключения
- •4.2.5. Семафоры
- •4.2.6. Мониторы
- •4.2.7. Передача сообщений
- •4.3. Тупиковые ситуации
- •4.3.1. Условия возникновения дедлоков
- •4.3.2. Основные направления исследований по проблеме тупиков
- •4.3.3. Предотвращение тупиков
- •4.3.4. Обход дедлоков
- •4.3.5. Алгоритм банкира
- •4.3.6. Распознавание дедлоков
- •4.3.7. Восстановление после тупиков
- •5. Управление процессором
- •5.1. Диспетчеризация процессов
- •5.2. Приоритеты
- •5.3. Алгоритмы диспетчеризации с одной очередью
- •5.3.1. Алгоритм fcfs (первый пришедший обслуживается первым)
- •5.3.2. Алгоритм spn (кратчайший процесс - следующий)
- •5.3.3. Алгоритм srt (по наименьшему остающемуся времени)
- •5.3.4. Алгоритм hrrn (по наибольшему относительному времени ответа)
- •5.3.5. Алгоритм циклической диспетчеризации rr
- •5.3.6. Сравнение алгоритмов диспетчеризации с одной очередью
- •5.4. Многоуровневые очереди с обратными связями
- •6. Управление устройствами
- •6.1. Общая организация ввода-вывода
- •6.2. Методы управления периферийными устройствами
- •6.3. Действия по вводу-выводу
- •6.3.1. Буферизация : прочитать и записать
- •6.3.2. Блокирование : получить и поместить
- •6.3.3. Подготовка : открыть и закрыть
- •6.4. Управление магнитными дисками
- •6.4.1. Физическая структура магнитного диска
- •6.4.2. Физическая структура формата данных дискеты
- •6.4.3. Логическая структура магнитного диска
- •6.4.4. Планирование работы с магнитными дисками
- •Заключение
- •Список используемых источников
- •Оглавление
2.3.5. Индексно-последовательное размещение
При индексно-последовательной организации файла (рис.2.7) поиск элементов файла проводится с помощью двух методов: в прямом порядке (с помощью ключей) и последовательном (определяемом порядком ключей). Каж-
Рис. 2.7.
дая логическая запись, входящая в файл с данной структурой, содержит ключ -некоторый индивидуальный отличительный признак. Все записи в файле упорядочиваются по значению ключей. В файл с такой с такой организацией можно выделить группы записей, ключи которых расположены подряд в файле. Эти группы хранятся в некоторой локальной области внешней памяти, например, в пределах одной дорожки на диске. Для более быстрого поиска таких групп строят специальную структуру - блок индексов. Каждый элемент индексного блока описывает отдельную группу записей. Чаще всего индекс содержит значение максимального (в текущий момент времени) ключа в группе и указатель на начальную запись в группе.
Для поиска записи с некоторым ключом необходимо сначала обратиться к индексу и определить группу записей, в диапазон значений ключей которой входит искомый ключ. По индексу находят начало первой записи требуемой группы, а затем, обращаясь к самой группе, последовательным анализом ключей в каждой записи находят требуемую запись. При такой организации файла время поиска записи будет меньше, чем в случае, если бы файл имел последовательную структуру.
Основная проблема, которая присуща работе с файлами с индексно-последовательной организацией, - проблема добавления новых записей во время работы с файлом. Это связано с тем, что взаимное расположение записей в файле требует их упорядоченности по ключам. Чтобы решить эту проблему, вводят области переполнения, куда будут заноситься записи, добавляемые в файл, и которые нельзя разместить в основной области из-за отсутствия в ней места. Из основной области устанавливаются ссылки (в соответствии с логическим порядком ключей) на требуемые элементы области переполнения.
Наиболее эффективная реализация индексно-последовательного размещения предложена в операционной системе UNIX. Каждый файл в системе имеет дескриптор (рис.2.8), называемый i - вершиной, в составе которого хранится список, содержащий адреса 13 блоков на диске. Список используется для адресации к тем блокам, которые входят в состав файла. Используется как прямая, так и косвенная адресация. Первые десять элементов списка непосредственно указывают на десять блоков, в которых могут размещаться данные файла. Поскольку размер блока здесь составляет 512 байтов, то напрямую можно адресовать файлы размером до 5120 байтов. Если размеры файла превышают 5120 байтов, используются последующие три элемента списка. Одиннадцатый элемент списка содержит адрес блока косвенной адресации первого уровня, хранящего адреса еще 128 блоков, которые могут принадлежать файлу. Если длина файла превышает 70656 (138 ´ 512) байтов, то двенадцатый адрес указывает на блок косвенной адресации второго уровня, который содержит список из 128 адресов блоков косвенной адресации первого уровня. Этим обеспечивается доступ еще к 16384 (128 ´ 128) блокам. Если длина файла превышает8459264 (16522 ´ 512) байтов, то с помощью тринадцатого элемента в списке дескриптора файла производится обращение к блоку косвенной адресации третьего уровня, содержащего адреса 128 блоков косвенной адресации второго уровня. Тем самым обеспечивается доступ к внешней памяти объемом свыше одного гигабайта.
Рис. 2.8