- •Основы построения операционных систем
- •Введение
- •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. Планирование работы с магнитными дисками
- •Заключение
- •Список используемых источников
- •Оглавление
3.2.4. Своппинг
Рассматривая внешнюю память как расширение оперативной, можно повысить эффективность использования последней как в случае простого распределения, так и в случае распределения с несколькими разделами. Тогда при перемещении процесса из одного раздела в другой его можно не копировать непосредственно, а записывать сначала во внешнюю память. Такое действие называется откачкой, а соответствующая загрузка процесса из внешней памяти в оперативную называется подкачкой, которая обычно требует специальных аппаратных средств настройки. Совокупность действия по откачке и подкачке составляет своппинг (swopping - перекачку), при этом можно считать, что либо один процесс меняет разделы, либо один раздел используется несколькими процессами. Для организации своппинга необходима не только внешняя память для хранения неактивных процессов, но также требуется планировщик памяти, который следит за тем, где какой процесс находится.
Своппинг полезен тем, что он позволяет заново распределять память для процесса, не запуская его с самого начала. Такое повторное распределение ранее выделенных и еще находящихся в использовании ресурсов называется перераспределением. Потребность в перераспределении памяти может возникать по нескольким причинам. Главной из них является то, что появляется возможность выполнять больше малоактивных процессов, чем может одновременно разместиться в памяти. Такая ситуация возникает в том случае, когда пользователи, сидящие за терминалами, тратят много времени на обдумывание и формулирование запроса, для выполнения которого требуются миллисекунды. Второй причиной является то, что перераспределение позволяет освободить память, занимаемую процессом, который требует вмешательства оператора (например, установки магнитной ленты или диска). Третьей причиной является то, что оно позволяет более эффективно использовать другие ресурсы, отличные от оперативной памяти. Например, если в памяти ЭВМ присутствует несколько чисто вычислительных процессов, и система ввода-вывода оказалась незагруженной, то появление процесса с большим объемом операций ввода-вывода может служить оправданием для откачки какого-либо вычислительного процесса и освобождения места для вновь поступившего, поскольку при этом увеличивается производительность системы в целом. Еще одной причиной, требующей своппинга, является освобождение памяти для процесса с более высоким приоритетом. При своппинге могут возникнуть те же самые проблемы, что и при перемещении разделов, т. е. установка значений адресов в регистрах, незавершенные операции ввода-вывода, незакончившиеся подпрограммы, вспомогательные задачи и т. п.
Организация частного случая своппинга возможна и при отсутствии специальных аппаратных средств настройки, когда процесс подкачивается в тот же самый раздел, из которого он был откачана. Такую подкачку может выполнить абсолютный загрузчик.
Потребность в своппинге можно уменьшить, если все пользователи могут совместно использовать одну копию программы. Каждый из них, конечно, будет иметь свою собственную область данных, но общие затраты памяти при этом значительно снизятся; т.к. в своппинге будут участвовать только области данных пользователя. Такой способ широко применяется в многопользовательских интерактивных системах.