- •Основы построения операционных систем
- •Введение
- •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.6. Манипулирование файловой структурой
Средства манипулирования файловой структурой обеспечивают изменение конфигурации файловой структуры, в частности, создание файлов, удаление файлов и изменение взаимосвязей между ними, а также изменение содержимого файлов.
С файлом можно производить манипуляции как с единым целым при помощи таких операторов, как
- открыть (open) - подготавливает файл к обращениям;
- закрыть (close) - запрещает дальнейшее обращение к файлу, пока он не будет вновь открыт;
- создать (create) - обеспечивает формирование нового файла;
- уничтожить (destroy) - разрушает файл;
- копировать (copy) - создает еще один экземпляр существующего файла с новым именем;
- переименовать (rename) - изменяет имя файла;
- вывести (list) - обеспечивает распечатку листинга или воспроизведение содержимого файла на экране.
Манипуляции с индивидуальными элементами данных в рамках файла можно производить при помощи таких операторов, как
- прочитать (read)- обеспечивает ввод элемента данных из файла в процесс;
- записать (write) - обеспечивает вывод элемента данных из процесса в файл;
- обновить (update) - обеспечивает модификацию существующего элемента данных;
- вставить (insert) - обеспечивает добавление нового элемента данных;
- исключить (delete) - обеспечивает исключение элемента данных из файла.
Все операции над файлами доступны через прерывания верхнего уровня.
Поскольку любой каталог (за исключением корневого) можно рассматривать как специальный файл, то все манипуляции, производимые над файлами, можно выполнять и над каталогами.
3. Управление памятью
Оперативная память, или по крайней мере исполняемая память, - это ресурс, без которого невозможно исполнение программы. Фактически в каждый конкретный момент времени все ячейки памяти, за исключением всего нескольких из них, не используются, а служат для хранения информации для последующего обращения. Однако значение активных ячеек настолько велико, что вряд ли найдется программа, создание которой не упростилось бы, а скорость исполнения не увеличилась при увеличении объема используемой оперативной памяти. Программы, ожидающие выделения оперативной памяти, обычно хранятся во внешней памяти. Зачастую реализуются дисциплины, позволяющие использовать внешнюю память как расширение оперативной, создавая тем самым видимость того, что объем оперативной памяти больше фактически существующего. Наличие такого виртуального ресурса существенно облегчает программирование, избавляя пользователя от учета фактически доступной памяти. Как будет показано в п.3.3, это часто обеспечивает более эффективное использование фактических ресурсов, но, как правило, за счет снижения скорости исполнения.
Часть оперативной памяти должна быть занята ядром операционной системы - множеством управляющих программ, которые должны постоянно присутствовать в оперативной памяти и обеспечивать функционирование всей системы без неоправданных задержек.
В данном разделе сначала будут рассмотрены такие стратегии управления памятью, при которых каждой работе выделяются непрерывные области оперативной памяти, а затем стратегии, при которых работе выделяется несколько, не обязательно смежных областей, в сумме удовлетворяющих их требованиям на объем памяти. Для каждой из стратегии дополнительно исследуется ситуация, когда внешняя память рассматривается как расширение оперативной памяти. В заключение исследуются методы учета доступной памяти, которые могут быть использованы как при распределении оперативной памяти между программами, так и при внутрипрограммном использовании памяти.