- •Самостійна робота 1
- •1 План самостійної роботи
- •2 Основные теоретические сведения
- •2.1 Эволюция операционных систем
- •2.2 Назначение и функции операционной системы
- •2.3 Архитектура операционной системы
- •2.4 Процессы и потоки
- •2.5 Управление памятью
- •3 Вопросы и задания для самопроверки
- •3.1 Вопросы и задания для самопроверки к подтеме «Эволюция операционных систем»
- •2.6 Аппаратная поддержка мультипрограммирования (на примере процессора Pentium)
- •3.2 Вопросы и задания для самопроверки к подтеме «Назначение и функции операционной системы»
- •3.3 Вопросы и задания для самопроверки к подтеме «Архитектура операционной системы»
- •3.4 Вопросы и задания для самопроверки к подтеме «Процессы и потоки»
- •3.5 Вопросы и задания для самопроверки к подтеме «Управление памятью»
- •3.6 Вопросы и задания для самопроверки к подтеме «Аппаратная поддержка мультипрограммирования (на примере процесора Pentium)»
2.5 Управление памятью
Оперативная память является важнейшим ресурсом вычислительной системы, требующим тщательного управления со стороны мультипрограммной операционной системы.
Особая роль памяти объясняется тем, что процессор может выполнять инструкции программы только в том случае, если они находятся в памяти.
Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.
Функциями ОС по управлению памятью в мультипрограммной системе являются:
‒ отслеживание наличия свободной и занятой памяти;
‒ выделение памяти процессам и освобождение памяти при завершении процессов;
‒ вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти недостаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
‒ настройка адресов программы на конкретную область физической памяти;
‒ защита памяти процессов от взаимного вмешательства.
На разных этапах жизненного цикла программы, для представления переменных и кодов требуется три типа адресов:
‒ символьные (имена, используемые программистом);
‒ виртуальные (условные числа, вырабатываемые компилятором);
‒ физические (адреса фактического размещения в оперативной памяти).
Совокупность виртуальных адресов процесса называется виртуальным адресным пространством.
Диапазон возможных адресов виртуального пространства у всех процессов является одним и тем же.
Виртуальное адресное пространство может быть плоским (линейным) или структурированным.
Необходимо различать:
‒ максимально возможное виртуальное адресное пространство процесса, которое определяется только разрядностью виртуального адреса и архитектурой компьютера;
‒ назначенное (выделенное) процессу виртуальное адресное пространство, состоящее из набора виртуальных адресов, действительно нужных процессу для работы.
Виртуальное адресное пространство процесса делится на две непрерывные части:
‒ системную (является общей для всех процессов, в ней размещаются коды и данные операционной системы);
‒ пользовательскую.
Наиболее эффективным методом управления памятью является использование виртуальной памяти.
Этот подход вытеснил в современных ОС методы распределения памяти фиксированными, динамическими или перемещаемыми разделами.
Механизм виртуальной памяти использует дисковую память для временного хранения не помещающихся в оперативную память данных и кодов выполняемых процессов ОС.
В настоящее время, все множество реализаций виртуальной памяти может быть представлено тремя классами:
‒ страничная;
‒ сегментная;
‒ сегментно-страничная.
Страничная виртуальная память организует перемещение данных между памятью и диском страницами ‒ частями виртуального адресного пространства фиксированного и сравнительно небольшого размера:
‒ достоинства ‒ высокая скорость обмена, низкий уровень фрагментации;
‒ недостатки ‒ сложно организовать защиту данных, разделенных на части механически).
Сегментная виртуальная память предусматривает перемещение данных сегментами ‒ частями виртуального адресного пространства произвольного размера, полученными с учетом смыслового значения данных:
‒ достоинства ‒ осмысленность сегментов упрощает их защиту;
‒ недостатки ‒ медленное преобразование адреса, высокий уровень фрагментации.
Сегментно-страничная виртуальная память сочетает достоинства обоих предыдущих подходов.
Сегменты виртуальной памяти могут быть разделяемыми между несколькими процессами.
Разделяемые сегменты применяют:
‒ для экономии физической памяти (когда несколько пользователей работают с одним кодовым сегментом приложения);
‒ в качестве средства обмена данными между процессами.
Кэширование данных является универсальным методом ускорения доступа к данным, основанным на комбинации двух типов памяти, отличающихся:
‒ временем доступа;
‒ объемом;
‒ стоимостью хранения данных.
Наиболее часто используемая в данный период информация динамически копируется из медленной, но большой памяти в быструю, но маленькую память.
Универсальность концепции кэширования подтверждают примеры ее использования в самых различных технологиях и продуктах: в процессорах (для сокращения среднего времени доступа к оперативной памяти), в подсистеме ввода-вывода (для ускорения доступа к информации, хранящейся на диске), в Интернете при разрешении символьных DNS-имен, в протоколе ARP, в работе браузера и т.п.
Неотъемлемым свойством кэш-памяти является ее прозрачность для программ и пользователей.
При кэшировании данных из оперативной памяти, широко используются две основных схемы отображения:
1) случайное (элемент оперативной памяти, вместе со своим адресом, размещается в произвольном месте кэш-памяти);
2) детерминированное (элемент оперативной памяти всегда отображается на одно и то же место ‒ в строке, которая имеет свой номер и предназначена для хранения записи об одном элементе данных).
