![](/user_photo/2706_HbeT2.jpg)
- •Средства синхронизации и взаимодействия процессов
- •Способы реализации взаимного исключения
- •Управление памятью
- •Типы адресов
- •Алгоритмы распределения памяти
- •I) Методы без использования внешней памяти Однозадачная система без подкачки на диск
- •Распределение памяти с фиксированными разделами
- •Распределение памяти динамическими разделами
- •Распределение памяти перемещаемыми разделами
- •II) Методы с использованием внешней памяти Свопинг и виртуальная память
- •Кэширование данных
- •Способы отображения оперативной памяти на кэш
- •Управление вводОм-выводом в операционных системах
- •Задачи ос по управлению файлами и устройствами
- •Организация параллельной работы устройств ввода-вывода и процессора
- •Согласование скоростей обмена и кэширование данных
- •Разделение устройств и данных между процессами
- •Удобный логический интерфейс
- •Поддержка широкого спектра драйверов
- •Динамическая загрузка и выгрузка драйверов
- •Поддержка нескольких файловых систем
- •Поддержка синхронных и асинхронных операций ввода-вывода
- •Многослойная модель подсистемы ввода-вывода
- •Менеджеры ввода-вывода
- •Многоуровневые драйверы
- •Специальные файлы
- •Файловая система
- •Имена файлов
- •Типы файлов
- •Атрибуты файлов
- •Иерархическая структура файловой системы
- •Общая модель файловой системы
- •Классификация файловых систем
- •Наиболее распространенные файловые системы
Управление памятью
Оперативная память является важнейшим ресурсом вычислительной системы, требующим тщательного управления со стороны операционной системы. Особая роль памяти объясняется тем, что процессор может выполнять инструкции программы только в том случае, если они находятся в памяти.
Функции операционной системы по управлению памятью:
1) Отслеживание свободной и занятой памяти
2) Выделение памяти процессам и освобождение памяти при завершении процессов
3) Вытеснение кодов и данных процессов из оперативной памяти на диск и обратная операция
4) Настройка адресов программы на конкретную область физической памяти
Типы адресов
На разных этапах жизненного цикла программы для представления переменных и кодов требуются 3 типа адресов:
1) Символьные имена. Присваиваются пользователем при написании программ (например, имена переменных)
2) Виртуальные адреса (математические или логические). Генерируются транслятором, переводящим программу на машинный язык.
Поскольку заранее неизвестно, в какой блок оперативной памяти будет загружаться программа, то начальным адресом программы принимается нулевой адрес.
3) Физические адреса. Это номера ячеек оперативной памяти, где в действительности расположены переменные и команды.
Виртуальное адресное пространство – это совокупность виртуальных адресов процесса. Диапазон возможных адресов у всех процессов является одним и тем же и задается границами 0000000016 и FFFFFFFF16. Каждый процесс имеет свое виртуальное адресное пространство.
Существует 2 способа преобразования виртуальных адресов в физические:
1) замена виртуальных адресов на физические выполняется один раз для каждого процесса во время начальной загрузки программы в память:
Используется перемещающий загрузчик, который на основании имеющейся информации о начальном адресе свободной физической памяти (куда будет загружаться процесс), а также информации об адресно-зависимых элементах программы, выполняет загрузку программы, совмещая ее с заменой виртуальных адресов физическими.
Недостаток: при необходимости переместить процесс в другой участок оперативной памяти, необходима его выгрузка и повторная загрузка.
2) программа загружается в память в неизмененном виде:
Операционная система запоминает смещение фактического расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Это смещение запоминается как константа в операционной системе.
Преимущество: способ является более гибким, т.к. допускает перемещение процесса по памяти.
Недостаток: увеличиваются затраты на постоянный пересчет адресов
Необходимо различать:
1)
максимально возможное виртуальное
адресное пространство процесса.
Определяется архитектурой компьютера
и разрядностью его схем адресации (32
или 64-битная).
Например,
32-разрядный процессор
232 =
4 Гбайт.
2) назначенное (выделенное) процессу виртуальное адресное пространство. Представляет собой набор виртуальных адресов, действительно нужных процессу для работы.
Виртуальное адресное пространство делится на 2 непрерывные части: системную и пользовательскую (например, Windows NT- по 2 Гбайт на обе части). Системная часть является общей для всех процессов, в ней размещаются коды и данные операционной системы.
В настоящее время часто возникает ситуация, когда объем виртуального адресного пространства превышает доступный объем оперативной памяти. В таком случае операционная система для хранения данных виртуального адресного пространства, не помещающихся в оперативную память, использует внешнюю память (жесткий диск). На этом принципе основана виртуальная память. Это наиболее эффективный способ управления памятью. В настоящее время виртуальная память в современных операционных системах вытеснила методы распределения памяти фиксированными, динамическими или перемещаемыми разделами.