- •Раздел 1 Основы теории операционных систем
- •Раздел 2 Машинно-зависимые свойства операционный систем
- •Раздел 3 Машинно-независимые свойства операционных систем
- •Раздел 1 основы теории ос
- •Общие сведения об операционных системах
- •Архитектура ос
- •Распределенная обработка в сетевых ос
- •Сетевые службы.
- •Раздел 2 машинно – зависимые компоненты ос
- •Архитектурные особенности модели микропроцессорной системы
- •Обработка прерываний
- •Планирование процессов
- •Обслуживание ввода-вывода
- •Управление реальной памятью
- •Управление виртуальной памятью
- •Раздел 3 машинно-независимые свойства операционных систем
- •Работа с файлами
- •Планирование заданий
- •Синхронизация процессов и потоков
- •Защищённость и отказоустойчивость ос
Управление реальной памятью
Функции ОС по управлению памятью
Функциями ОС по управлению памятью в мультипрограммной системе являются:
отслеживание свободной и занятой памяти;
выделение памяти процессам и освобождение памяти по завершении процессов;
вытеснение кодов и данных процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
настройка адресов программы на конкретную область физической памяти.
Алгоритмы распределения памяти
Распределение памяти с разделами фиксированного размера. Суть этого метода состоит в том, что память разбивается на несколько областей фиксированной величины, то есть на разделы. Такое разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки.
Новый процесс, поступивший на выполнение, помешается либо в общую очередь, либо в очередь к некоторому размеру. Эта схема представлена на рисунке 2.12, а и б.
Подсистема управления памятью в этом случае выполняет следующие задачи:
сравнивает объем памяти с размерами свободных разделов и выбирает подходящий раздел;
осуществляет загрузку программы в один из разделов и настройку адресов.
Достоинство этого метода – простота реализации.
Недостаток – жесткость. Так как в каждом разделе может выполняться только один процесс, то уровень мультипрограммирования заранее ограничен числом разделов. Независимо от размера программы она будет занимать весь раздел.
Рисунок 2.12, а – Распределение памяти фиксированными разделами с общей очередью.
Рисунок 2.12, б - Распределение памяти фиксированными разделами с отдельными очередями.
Такой способ управления памятью применялся в ранних мультипрограммных ОС. Сейчас применяется в системах реального времени благодаря небольшим затратам на реализацию.
В случае распределения памяти с разделами переменного размера память машины не делится заранее на разделы. В произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рисунке 2.13 показано состояние памяти в различные моменты времени при использовании динамического распределения. Так, в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 процессами, причем процесс П4, завершаясь, покидает память. На освободившееся от процесса П4 место загружается процесс П6, поступивший в момент t3.
Функции операционной системы для реализации данного метода управления памятью:
ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти;
при создании нового процесса — анализ требований к памяти, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения кодов и данных нового процесса;
загрузка программы в выделенный ей раздел и корректировка таблиц свободных и занятых областей. Способ предполагает, что настройка адресов может быть проведена единовременно во время загрузки;
после завершения процесса корректировка таблиц свободных и занятых областей.
Рисунок 2.13 – Распределение памяти переменными разделами.
Данный метод обладает гораздо большей гибкостью, но с этим у него есть серьезный недостаток – фрагментация памяти. Фрагментация — это наличие большого числа несмежных участков свободной памяти очень маленького размера (фрагментов).
Распределение памяти переменными разделами лежит в основе популярной в 60-70 годах ОС OS/360.
Распределения памяти перемещаемого раздела. Одним из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших или младших адресов, так, чтобы вся свободная память образовала единую свободную область, как показано на рисунке 2.14. В данном случае ОС должна время от времени копировать содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется сжатием.
Сжатие может выполняться:
при каждом завершении процесса, тогда требуется меньше вычислительной работы при корректировке таблиц свободных и занятых областей;
когда для вновь создаваемого процесса нет свободного раздела достаточного размера, тогда реже выполняется процедура сжатия.
Рисунок 2.14 – Распределение памяти перемещаемыми разделами.