→ Ос управление памятью. Распределение памяти. Классификация методов распределения памяти

Ос управление памятью. Распределение памяти. Классификация методов распределения памяти

Принципы управления памятью

Одной из основных функций операционной системы является эффективное управление памятью. Оперативная память, или основная память, или память с произвольным доступом (Random Access Memory, RAM) является достаточно дорогостоящим ресурсом. Время доступа к оперативной памяти составляет всего несколько циклов процессора, поэтому работа с данными, находящимся в памяти, обеспечивает максимальную производительность. К сожалению, данный ресурс, как правило, ограничен. В большей степени это справедливо для многозадачной операционной системы общего назначения, каковой является UNIX. Поэтому данные, которые не могут быть размещены в оперативной памяти, располагаются на вторичных устройствах хранения, или во вторичной памяти, роль которой обычно выполняют дисковые накопители. Время доступа ко вторичной памяти па несколько порядков превышает время доступа к оперативной памяти и требует активного содействия операционной системы. Подсистема управления памятью UNIX отвечает за справедливое и эффективное распределение разделяемого ресурса оперативной памяти между процессами и за обмен данными между оперативной и вторичной памятью. Часть операций производится аппаратно устройством управления памятью (Memory Management Unit, MMU) процессора под управлением операционной системы, чем достигается требуемое быстродействие.

Примитивное управление памятью значительно уменьшает функциональность операционной системы. Такие системы, как правило, позволяют загрузить в заранее определенное место в оперативной памяти единственную задачу и передать ей управление. При этом задача получает в свое распоряжение все ресурсы компьютера (разделяя их, разумеется, с операционной системой), а адреса, используемые задачей, являются физическими адресами оперативной памяти. Такой способ запуска и выполнения одной программы безусловно является наиболее быстрым и включает минимальные накладные расходы.

Этот подход часто используется в специализированных микропроцессорных системах, однако практически неприменим в операционных системах общего назначения, какой является UNIX. Можно сформулировать ряд возможностей, которые должна обеспечивать подсистема управления памятью современной многозадачной операционной системы:

Выполнение задач, размер которых превышает размер оперативной памяти.

Выполнение частично загруженных в память задач для минимизации времени их запуска.

Размещение нескольких задач в памяти одновременно для повышения эффективности использования процессора.

Размещение задачи в произвольном месте оперативной памяти.

Размещение задачи в нескольких различных частях оперативной памяти.

Совместное использование несколькими задачами одних и тех же областей памяти. Например, несколько процессов, выполняющих одну и ту же программу, могут совместно использовать сегмент кода.

Все эти возможности реализованы в современных версиях UNIX с помощью т.н. виртуальной памяти , о которой пойдет речь в следующем подразделе. Виртуальная память не является "бесплатным приложением", повышая накладные расходы операционной системы: структуры данных управления памятью размещаются в оперативной памяти, уменьшая ее размер; управление виртуальной памятью процесса может требовать ресурсоемких операций ввода/вывода; для системы со средней загрузкой около 7% процессорного времени приходится на подсистему управления памятью. Поэтому от эффективности реализации и работы этой подсистемы во многом зависит производительность операционной системы в целом.

Из книги Внутреннее устройство Microsoft Windows (гл. 5-7) автора Руссинович Марк

ГЛABA 7 Управление памятью B этой главе вы узнаете, как реализована виртуальная память в Microsoft Windows и как осуществляется управление той частью виртуальной памяти, которая находится в физической. Мы также опишем внутреннюю структуру диспетчера памяти и его компоненты, в том

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

ГЛАВА 9. АЛГОРИТМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ Алгоритм планирования использования процессорного времени, рассмотренный в предыдущей главе, в сильной степени зависит от выбранной стратегии управления памятью. Процесс может выполняться, если он хотя бы частично присутствует в

Из книги Руководство по стандартной библиотеке шаблонов (STL) автора Ли Менг

Примитивы управления памятью (Memory Handling Primitives) Чтобы получать типичный указатель на неинициализированный буфер памяти данного размера, определена следующая функция:template ‹class T›inline T* allocate(ptrdiff_t n, Т*); // n ›= 0Размер (в байтах) распределённого буфера - не меньше n*sizeof(T).Для

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

(3.21) Как ускорить работу с памятью? Можно регулировать несколько значений реестра для ускорения работы подсистемы памяти W2k. Но будьте осторожны, так как неправильные значения могу привести к неработоспособности системы. Вы можете изменить некоторые значения реестра в

Из книги Linux-сервер своими руками автора

18.1.3. Управление памятью Управление памятью осуществляется с помощью параметра mem: mem=Определяет объем памяти, установленной в компьютере.Например: mem=16384K или mem=16M.Иногда нужно указать объем ОЗУ, отличный от того, который имеется на самом деле. Например, у вас чипсет Intel 810 с

Из книги WinXP FAQ (Часто задаваемые вопросы по ОС Windows XP) автора Шашков Алексей

3.10. Как ускорить работу с памятью? Можно регулировать несколько значений реестра для ускорения работы подсистемы памяти XP. Но будьте осторожны, так как неправильные значения могу привести к неработоспособности системы. Вы можете изменить некоторые значения реестра в

Из книги Идиомы и стили С++ автора Makhmutov Albert

Шаг 18 - Управление памятью. Больше нет возможности обходить эту тему. Это слишком важно. Долго не хотел браться за нее, но она сама взялась за меня.В управлении памятью одна из самых больших проблем (для меня) состоит в том,что у авторов книг по C++ в этом месте случается как бы

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Шаг 19 - Управление памятью. Продолжение 1. Бог: "Я стер всякую жизнь. Впочем, я ничего не уничтожил. Я просто воссоединил в Себе частицы Себя. У меня на планете было множество типов с безумными глазами, которые болтали насчет слияния со Мной. Вот они и слились." Кармоди: "Им это

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Проблема управления памятью в ОО-модели Подводя итог предшествующего анализа, определим оригиналы и соответственно достижимые объекты:Определение: начальные, достижимые и недостижимые объектыВ каждый момент времени выполнения системы множество оригиналов

Из книги Внедрение SAP R/3: Руководство для менеджеров и инженеров автора Кале Вивек

Автоматическое управление памятью Ни один из рассмотренных подходов не является полностью удовлетворительным. Общее решение проблемы управления памятью предполагает серьезную работу на уровне реализации

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Архитектура системы управления памятью в Win32 и Win64 Win32 (в данном случае различия между Win32 и Win64 становятся существенными) - это API 32-разрядных ОС семейства Windows. "32-разрядность" проявляет себя при адресации памяти тем, что указатели (LPSTR, LPDWORD и так далее) являются 4-байтовыми

Из книги Операционная система UNIX автора Робачевский Андрей М.

Обзор методов управления памятью Обо всех деталях отображения виртуальных адресов на физические адреса (virtual to physical memory mapping), механизмах страничной подкачки (page swapping) и замещения страниц по запросу (demand paging) и прочих моментах заботится ОС. Эти вопросы подробно обсуждаются

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Политика и принципы управления проектом Политика и принципы управления проектом должны быть окончательно определены и донесены до всех участников проекта как можно раньше.Стратегия проектаКак уже упоминалось в разделе «Информация как новый ресурс» в главе 1, внедрение

Из книги автора

23.2.2. Функции для работы с памятью Функции для работы с памятью библиотеки Glib выполняют те же действия, что и соответствующие им функции языка С. Вот их прототипы:gpointer g_malloc(gulong size);gpointer g_realloc(gpointer mem, gulong size);void g_free(gpointer

Из книги автора

Управление памятью процесса Можно сказать, что каждый процесс в операционной системе UNIX выполняется на собственной виртуальной вычислительной машине, где все ресурсы принадлежат исключительно данному процессу. Подсистема управления памятью обеспечивает такую

Транскрипт

2 Управление памятью в операционных системах.

3 Физическое ОЗУ (Random Access Memory, RAM) Физическое ОЗУ (Random Access Memory, RAM) представляет собой компонент, который "разделён" на некоторое количество ячеек, которые могут хранить в себе комбинации битов. Ячейки отличаются друг от друга номером, который ОЗУ воспринимает с "шины адреса", а связь содержимого ячейки с внешним миром осуществляется посредством "шины данных". Цикл памяти Процессор, устанавливает адрес M на "шину адреса" и ставит на "шину управления сигнал "чтение". ОЗУ выставляет содержимое своей ячейки с таким номером на "шину данных" и ставит на шину управления сигнал "готово". Процессор воспринимает состояние шины данных и убирает сигнал "читать". Запись в ОЗУ процессор ставит на шину данных число, подлежащее записи, на шину адреса номер записываемой ячейки, а на шину управления сигнал "запись". ОЗУ воспринимает состояние шины данных и сохраняет его в ячейке с номером M.

4 Память и отображения, виртуальное адресное пространство Логическое(символьное имя) Виртуальное адресное пространство Виртуальный адрес Система программирования Операционная система Физическая память компьютера Ячейка оперативной памяти (физический адрес)

5 Память и отображения, виртуальное адресное пространство Общая схема двухэтапного отображения адресов с позиции соотношения объемов упомянутых адресных пространств можно отметить наличие следующих трех ситуаций: объем виртуального адресного пространства программы Vv меньше объема физической памяти Vp (Vv < Vp); объем виртуального адресного пространства программы Vv равен объему физической памяти Vp (Vv = Vp); объем виртуального адресного пространства программы V^ больше объема физической памяти Vp (Vv > Vp). Выделим основные концепции организации и управления виртуальной памятью. Суть концепции виртуальной памяти заключается в том, что адреса, к которым обращается выполняющийся процесс, отделяются от адресов, реально существующих в первичной (физической) памяти. Те адреса, на которые делает ссылки выполняющийся процесс, называются виртуальными, а те адреса, которые существуют в первичной памяти, называются реальным адресами. Диапазон виртуальных адресов, к которым может обращаться выполняющийся процесс, называется пространством виртуальных адресов V этого процесса. Диапазон реальных адресов, существующих в конкретной машине, называется пространством реальных адресов R этого компьютера.

6 Память и отображения, виртуальное адресное пространство Общая схема двухэтапного отображения адресов с позиции соотношения объемов упомянутых адресных пространств можно отметить наличие следующих трех. Для установления соответствия между виртуальными и реальными адресами разработаны различные способы. Чаще всего используется так называемый механизм динамического преобразования адресов (DAT), который обеспечивает преобразование виртуальных адресов в реальные во время выполнения процесса. Виртуальная память. Механизм отображения адресов Реальная память { Смежные ячейки виртуальной памяти.

7 Память и отображения, виртуальное адресное пространство Кроме преобразования виртуальных адресов в реальные, перед системой с виртуальной памятью стоит еще одна задача выгружать на диск часть содержимого памяти, когда она переполняется. При этом ОС определяет, какие данные можно удалить из основной памяти и поместить на временное хранение в файл на жестком диске, который называется файлом подкачки

8 Простое непрерывное распределение и распределение с перекрытием Общие принципы управления памятью в однопрограммных операционных системах Простое непрерывное распределение это самая простая схема, согласно которой вся память условно может быть разделена на три области: область, занимаемая операционной системой; область, в которой размещается исполняемая задача; незанятая ничем (свободная) область памяти. Програм мный можуль Програм мный можуль ЯДРО ОС Програм мный можуль ЗАДАЧА

9 Распределение оперативной памяти в MS DOS MS DOS это однопрограммная операционная система для персонального компьютера типа IBM PC. Cистема MS DOS предназначена для выполнения только одного вычислительного процесса. В состав MS DOS входят следующие основные компоненты: Подсистема BIOS (Base Input Output System базовая подсистема вводавывода), включающая в себя помимо программы POST (Power On Self Test самотестирование при включении компьютера) программные модули обработки прерываний, с помощью которых можно управлять основными контроллерами на материнской плате компьютера и устройствами вводавывода. Модуль расширения BIOS файл IO.SYS Основной, или базовый, модуль обработки прерываний DOS файл MSDOS.SYS. Командный процессор (интерпретатор команд) файл C0MMAND.COM. Утилиты и драйверы, расширяющие возможности системы Программа загрузки MS DOS загрузочная запись (Boot Record, BR), расположенная на дискете или на жестком диске

10 Распределение оперативной памяти в MS DOS Распределение памяти в ней построено по схеме простого непрерывного распределения. Система поддерживает механизм распределения памяти с перекрытием (оверлейные структуры). Память в соответствии с архитектурой IBM PC условно может быть разбита на следующие три части. В самых младших адресах памяти (первые 1024 ячейки) размещается таблица векторов прерывания. Вторая часть памяти отводится для программных модулей самой системы MS DOS и для программ пользователя. Наконец, третья часть адресного пространства отведена для постоянных запоминающих устройств и функционирования некоторых устройств ввода вывода. Эта область памяти получила название UMA (Upper Memory Area область памяти, адрес которой выше основной). В младших адресах основной памяти размещается то, что можно условно назвать ядром этой операционной системы системные переменные, основные программные модули, блоки данных для буферизации операций ввода вывода. Перечень устанавливаемых драйверов определяется специальным конфигурационным файлом CONFIG.SYS. После загрузки расширения BIOS файла IO.SYS последний (загрузив модуль MSDOS.SYS) считывает файл CONFIG.SYS и уже в соответствии с ним подгружает в память необходимые драйверы.

11 Распределение оперативной памяти в MS DOS Широкое распространение получили две основные спецификации: XMS (Extended Memory Specification) и EMS (Expanded Memory Specification). Последние годы система MS DOS практически перестала применяться. Теперь ее используют в основном для запуска некоторых утилит, с помощью которых подготавливают дисковые устройства, или для установки других операционных систем. И поскольку основным утилитам, необходимым для обслуживания персонального компьютера, спецификации EMS и XMS, как правило, не нужны, мы не будем здесь их рассматривать. Для того чтобы предоставить больше памяти программам пользователя, в MS DOS применено то же решение, что и во многих других простейших операционных системах, командный процессор COMMAND.COM состоит из двух частей: Первая часть является резидентной и размещается в области ядра, вторая часть транзитная и размещается в области старших адресов раздела памяти, выделяемой для программ пользователя. И если программа пользователя перекрывает собой область, в которой была расположена транзитная часть командного процессора, то последний при необходимости восстанавливает в памяти свою транзитную часть, поскольку после выполнения программы она возвращает управление резидентной части COMMAND.COM.

12 Распределение памяти статическими и динамическими разделами Для организации мультипрограммного и/или мультизадачного режима необходимо обеспечить одновременное расположение в оперативной памяти нескольких задач (целиком или частями). Память задаче может выделяться одним сплошным участком (в этом случае говорят о методах неразрывного распределения памяти) или несколькими порциями, которые могут быть размещены в разных областях памяти (тогда говорят о методах разрывного распределения). Разбиение памяти на несколько непрерывных (неразрывных) разделов может быть фиксированным (статическим) либо динамическим (то есть процесс выделения нового раздела памяти происходит непосредственно при появлении новой задачи). Разделы с фиксированными границами Разделы с подвижными границами

13 Разделы с фиксированными границами Разбиение всего объема оперативной памяти на несколько разделов может осуществляться единовременно (то есть в процессе генерации варианта операционной системы, который потом и эксплуатируется) или по мере необходимости оператором системы. Ядро операционной системы Раздел 0 Транзитная область ОС Задача А Раздел 1 Неиспользуемая область Задача Б Неиспользуемая область Задача В Неиспользуемая область Раздел 2 Раздел 3

14 Разделы с подвижными границами Чтобы избавиться от фрагментации, можно попробовать размещать в оперативной памяти задачи плотно, одну за другой, выделяя ровно столько памяти, сколько задача требует. При освобождении раздела диспетчер памяти пытается объединить освобождающийся раздел с одним из свободных участков, если таковой является смежным. При этом список свободных участков памяти может быть упорядочен либо по адресам, либо по объему. Выделение памяти под новый раздел может осуществляться одним из трех основных способов: первый подходящий участок; самый подходящий участок; самый неподходящий участок. Как ни странно, самым эффективным способом, как правило, является последний, по которому для нового раздела выделяется «самый неподходящий» фрагмент свободной памяти. Для этой дисциплины список свободных областей упорядочивается по убыванию объема свободного фрагмента. Применяется этот способ, например, при разработке операционной системы для современных цифровых АТС, которая использует 16 разрядные микропроцессоры Intel.

15 Сегментная, страничная и сегментно страничная организация памяти Сегментный способ организации виртуальной памяти Методы распределения памяти, при которых задаче уже может не предоставляться сплошная (непрерывная) область памяти, называют разрывными. Первым среди разрывных методов распределения памяти был сегментный. Для этого метода программу необходимо разбивать на части и уже каждой такой части выделять физическую память. Естественным способом разбиения программы на части является разбиение ее на логические элементы так называемые сегменты. Физически имя (или порядковый номер) сегмента будет соответствовать некоторому адресу, с которого этот сегмент начинается при его размещении в памяти, и смещение должно прибавляться к этому базовому адресу. Преобразование имени сегмента в его порядковый номер осуществит система программирования. Для каждого сегмента система программирования указывает его объем. Виртуальный адрес для этого способа будет состоять из двух полей номера сегмента и смещения относительно начала сегмента.

16 Сегментный способ организации виртуальной памяти Регистр таблицы сегментов (таблицы дескрипторов сегментов) Виртуальный адрес

17 Сегментный способ организации виртуальной памяти При поиске свободного места используется одна из вышеперечисленных дисциплин работы диспетчера памяти Если свободного фрагмента памяти достаточного объема нет, но, тем не менее, сумма этих свободных фрагментов превышает требования по памяти для нового сегмента, то в принципе может быть применено «уплотнение памяти» В идеальном случае размер сегмента должен быть достаточно малым, чтобы его можно было разместить в случайно освобождающихся фрагментах оперативной памяти, но достаточно большим, чтобы содержать логически законченную часть программы с тем, чтобы минимизировать межсегментные обращения. Для решения проблемы замещения (определения того сегмента, который должен быть либо перемещен во внешнюю память, либо просто замещен новым) используются следующие дисциплины: правило FIFO (First In First Out первый пришедший первым и выбывает); правило LRU (Least Recently Used дольше других неиспользуемый); правило LFU (Least Frequently Used реже других используемый); случайный (random) выбор сегмента.

18 Страничный способ организации виртуальной памяти

19 Страничный способ организации виртуальной памяти При страничном способе организации виртуальной памяти все фрагменты программы, на которые она разбивается, пользуются одинаковыми. Одинаковыми полагаются и единицы памяти, которые предоставляются для размещения фрагментов программы. Эти одинаковые части называют страницами и говорят, что оперативная память разбивается на физические страницы, а программа на виртуальные страницы. Часть виртуальных страниц задачи размещается в оперативной памяти, а часть во внешней. Обычно место во внешней памяти, в качестве которой в абсолютном большинстве случаев выступают накопители на магнитных дисках называют файлом подкачки или страничным файлом (paging file). Иногда этот файл называют swap файлом, тем самым подчеркивая, что записи этого файла страницы замещают друг друга в оперативной памяти. Разбиение всей оперативной памяти на страницы одинаковой величины, причем кратной степени двойки, приводит к тому, что вместо одномерного адресного пространства памяти можно говорить о двухмерном. Физический адрес определяется парой (Рр, i), а виртуальный адрес парой (Рv, i), где Рv номер виртуальной страницы, Рр номер физической страницы, i индекс ячейки внутри страницы. Отображение, осуществляемое системой во время исполнения, сводится к отображению Рv в Рр и приписыванию к полученному значению битов адреса, задаваемых величиной i.

20 Страничный способ организации виртуальной памяти


Глава 3. Управление памятью в операционных системах Оперативная память это важнейший ресурс любой вычислительной системы, поскольку без нее (как, впрочем, и без центрального процессора) невозможно выполнение

Модуль 4. УПРАВЛЕНИЕ ПАМЯТЬЮ 1. Функции ОС по управлению памятью в мультипрограммной системе (несколько ответов) 1) отслеживание свободной и занятой памяти 2) выделение памяти процессам и ее освобождение

1 Тема 2. Лекция 3-4 Время центрального процессора и оперативная память являются основными ресурсами в случае реализации мультипрограммных вычислений. Оперативная память это важнейший ресурс любой вычислительной

Операционные системы Лекция 6 Управление памятью. Страничная организация 6.1 Основные понятия Менеджер памяти - часть операционной системы, отвечающая за управление памятью. Основные методы распределения

Модуль 5. ВВОД-ВЫВОД И ФАЙЛОВАЯ СИСТЕМА 1. Файл это (несколько ответов) 1) множество данных, объединенных некоторой логической связью 2) совокупность информации, записанная под индивидуальным именем на

Р.С. Ниязова, А.К. Сексенбаева Аппаратные средства реализации механизма виртуальной памяти (Евразийский национальный университет им Л.Н.Гумилева, г. Астана) В этой статье дано описание аппаратных средств

Операционные системы Лекция 2 Архитектура ЭВМ, архитектура ОС 1 Основные понятия Системные вызовы (system calls) Прерывание (hardware interrupt) Исключительная ситуация (exception) Файловая система (file

Управление памятью. Занятие 8. План занятия. 1. Функции ОС по управлению памятью. 2. Типы адресов. 3. Алгоритмы распределения реальной памяти. 3.1. Распределение памяти фиксированными разделами 3.2. Распределение

14. Вопросы для самопроверки (Управление памятью) Question 1 Укажите правильные названия указанных на рисунке элементов Б) смещение А) виртуальный адрес В) физический адрес Question 2 Укажите правильные

Модуль 6. АРХИТЕКТУРА ОПЕРАЦИОННЫХ СИСТЕМ 1. Ядро операционной системы это программные модули операционной системы, которые постоянно находятся 1) в оперативной памяти с целью эффективной организации вычислительного

Основы архитектуры ЭВМ: общая шина ЦП ОЗУ ПЗУ Контроллер шины Контроллер видео Контроллер НЖМД Контроллер USB... Шина (Bus) Стандартизованный интерфейс подсоединения устройств Стандартизация по электричеству:

8.1 Основные понятия сегментации памяти Рассмотрим пример, когда программа использует одно адресное пространство. программа использует одно адресное пространство Недостатки такой системы: Один участок

Операционные системы Операционная система это пакет программ, которые обеспечивают управление ресурсами компьютера, загрузку прикладных программ и диалог с пользователем. Программное обеспечение Прикладное

35. Алгоритмы распределения памяти. Свопинг и виртуальная память. Разделяемые сегменты памяти. Кэширование данных. Управление памятью Память является важнейшим ресурсом, требующим тщательного управления

Казахстанский филиал МГУ им. М.В. Ломоносова Операционные системы лекции 7, 8 - Иерархия памяти в вычислительной системе - Расслоение ОП - Виртуальная память - Способы организации виртуальной памяти 2.11.2010

Лекция 31 Программное обеспечение САПР Программное обеспечение САПР (ПО) представляет собой совокупность программ, необходимых для обработки исходной информации по проектным алгоритмам, управления вычислительным

ОПЕРАЦИОННЫЕ СИСТЕМЫ И СРЕДЫ, ФАЙЛОВАЯ СИСТЕМА, ПРОГРАММЫ-ОБОЛОЧКИ ОПЕРАЦИОННЫЕ СИСТЕМЫ Cреди десятков тысяч системных программ особое место занимают операционные системы, которые обеспечивают управление

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ» МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ ОБУЧАЮЩИХСЯ ПО ОСВОЕНИЮ ДИСЦИПЛИНЫ ДИСКОВАЯ

Операционные системы и оболочки Лекция 6 Память Управление виртуальной памятью Одинцов Игорь Олегович [email protected] весна 2007 1 2 Иерархия классов памяти Для изучения мы в первую очередь выделим

Содержание Предисловие...5 1. Основы микропроцессорной техники... 7 1.1. Персональный компьютер общие сведения... 7 1.2. Цифровая информация... 12 1.3. Основы архитектуры микропроцессорных систем... 13

12.1. Ввод-вывод по опросу готовности устройства Готовность или неготовность внешнего устройства к вводу-выводу проверяется в регистре состояния внешнего устройства Для программно-управляемого ввода/вывода

Модуль 7. ИСТОРИЯ РАЗВИТИЯ ОПЕРАЦИОННЫХ СИСТЕМ И ЭВОЛЮЦИЯ ИХ ФУНКЦИОНАЛЬНЫХ ХАРАКТЕРИСТИК 1. Операционная система, которая не допускает одновременного запуска нескольких программ 1) Unix 3) MS DOS 4) Linux

* Вопросы: 1. Память без использования абстракций 2. Абстракция памяти: адресные пространства 3. Абстракция памяти: свопинг 4. Абстракция памяти: управление свободной памятью 5. Виртуальная память 6. Подкачка.

Аннотация программы дисциплины «Операционные системы» 1. Цели освоения дисциплины Целями освоения дисциплины «Операционные системы» являются: формирование у студентов базовых знаний, умений и навыков по

Примерный вариант экзаменационного билета по информатике Уровень А (за каждый правильный ответ засчитывается 2 балла) Кодирование данных в ЭВМ 1. Десятичному числу 63389 10 соответствует шестнадцатеричное

Лекция 0x17 25 апреля История развития x86 4004 ноябрь 1971. 4-битный микропроцессор. Первый в мире коммерчески доступный однокристальный микропроцессор. 8008 апрель 1972. 8080 апрель 1974. 8-битные процессоры.

Организация компьютера (Hardware) Лекция 3. Часть 2. Информатика Гаврилов А.В. НГТУ, кафедра АППМ 1 Содержание Основы компьютерной архитектуры Компьютер фон Неймана Аппарат прерываний Внешние устройства

Система управления вводом-выводом Виды работ вычислительной системы Обработка информации Операции по осуществлению ввода-вывода информации Общие сведения об архитектуре компьютера. Шины Шины данных Адресные

Практическая работа 8 Управление виртуальной памятью, настройка файла подкачки Цель работы: научиться осуществлять настройку файла подкачки. План выполнения работы. 1. Ознакомьтесь с теоретическим материалом

Состояние процессов Предположим, что программа была заранее собрана в некий единый самодостаточный объект, называемый загрузочным модулем. В ряде ОС программа собирается в момент загрузки из большого числа

Лекция 4 Тема "СOM, EXE-программы" Загрузка и выполнение программ в DOS При загрузке программ в оперативную память DOS (дисковая операционная система) инициализирует как минимум три сегментных регистра:

Управление виртуальной памятью Подкачка по требованию 1 Подкачка по требованию Опр. Подкачка по требованию (demand paging) метод подкачки, при котором страницы по одной загружаются в оперативную память,

Лекция 7 Управление устройствами (часть 2) Структура подсистемы ввода-вывода 2 Общая схема управления устройствами ввода-вывода Системные вызовы ввода-вывода Системные сервисы ввода-вывода Высокоуровневые

40 2430 1005 Утвержден РУСБ.468266.003-УД Инв. подл. Подп. и дата Взам. инв. Инв. дубл. Подп. и дата ИНДИКАТОР ДИАГНОСТИКИ АПМДЗ кодов Листов 10 2011 ВВЕДЕНИЕ Настоящий документ является описанием кодов

Министерство образования Российской Федерации Восточно-Сибирский государственный технологический университет ТАБЛИЦА ВЕКТОРОВ ПРЕРЫВАНИЙ Методические указания к выполнению лабораторной работы по дисциплине

Управление ресурсами: процессор, память, устройства Рассматриваются аппаратные средства, с помощью которых обеспечивается управление ресурсами в операционной системе. Диспетчер памяти в архитектуре PDP

Оперативная память Стратегии управления памятью 1 Иерархическая организация памяти 2 Стратегии управления памятью Стратегии загрузки Стратегии размещения Стратегии замены 3 Стратегия загрузки Опр. Стратегия

СИСТЕМНОЕ И ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Лекция 2: Управление задачами и памятью Управление задачами Управление задачами Основные функции ОС: создание и удаление задач планирование и диспетчеризация

Виртуальная память Управление памятью объединяет три задачи Динамическое распределение памяти. Отображение виртуальных адресов программы на физические адреса. Реализация защиты памяти. Принцип виртуальной

Аппаратная поддержка управлением памятью Страничная память Физическая и логическая память представляются состоящими из блоков одинакового размера, называемых страницы (page) для логической памяти, кадры

Модуль 2. Архитектура компьютера 1. Совокупность устройств, предназначенных для автоматической или автоматизированной обработки информации это: 1) информационная система 2) информационные технологии 3)

ЛАБОРАТОРНАЯ РАБОТА 4 «ЭЛЕМЕНТЫ ОПТИМИЗАЦИИ ОС WINDOWS» Управление виртуальной памятью. Настройка файла подкачки ОС Windows использует не только оперативную память для своей работы. Чтобы немного разгрузить

Процессы и потоки Понятия «процесс» и «поток» Процесс (задача) - программа, находящаяся в режиме выполнения. Потоќ выполне ния (thread нить) наименьшая часть программы, исполнение которой может быть назначено

Операционные системы Лекция 9 Устройства и программное обеспечение ввода-вывода 9.1 Принципы аппаратуры ввода-вывода 9.1.1 Устройства ввода-вывода Устройства делят на две категории (некоторые не попадают

Тема 13. Операционная система. Файловая система. Программы, организующие работу устройств и не связанные со спецификой решаемой задачи, вошли в состав комплекса программ, названного операционной системой.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ

1 Организация памяти Windows Используется виртуальная адресация такой способ управления памятью, при котором адресуемая памяти ПК делится между процессами и прозрачно отображается на доступные области

Глава 4 Программно-технические системы реализации информационных процессов Компьютер универсальная 17 техническая система обработки информации Появление компьютеров полностью изменило все существовавшие

Оверлейная модель Swap-файл Образ прикладной программы Организация памяти Диск Оверлей4 Оверлей3 Оверлей2 Оверлей1 Базовый блок Программист разбивает программу на оверлеи (например, вызов процедуры - из

ЛЕКЦИЯ 4-5. Тема: «Структура и функционирование памяти и устройств ввода-вывода вычислительных систем» 3.1 Функции памяти. Память микропроцессорной системы выполняет функцию временного или постоянного

Кэширование данных при трансляции Идентификаторы контекста процесса (PCID) Буфер быстрого преобразования адреса (Translation Lookaside Buffer, TLB) Кэши структур страничной трансляции 28 Process-Context

Организация компьютера (Hardware) Лекция 3 Информатика Гаврилов А.В. НГТУ, кафедра АППМ 1 Содержание Основы компьютерной архитектуры Компьютер фон Неймана Аппарат прерываний Внешние устройства Виртуальная

Оборудование компьютера и прочее «железо» Оборудование компьютера Оборудованием (аппаратным обеспечением) персонального компьютера (ПК) называют внутренние физические компоненты компьютера и периферийные

Программное управление-основа автоматизации вычислительного процесса Москва 2016 2 УЧЕБНЫЙ ВОПРОС 1. Алгоритм и его особенности. УЧЕБНЫЙ ВОПРОС 2. Команда машинной программы и её характеристики. УЧЕБНЫЙ

Вопрос 21 Страничное преобразование адреса Преобразование адреса Преобразование логического адреса в физический осуществляется в два этапа Сегментное преобразование вычисляет линейный адрес на основе логического.

Место дисциплины в структуре образовательной программы Дисциплина Операционные системы является обязательной дисциплиной вариативной части ОПОП по направлению подготовки 09.03.02 Информационные системы

План урока Память и еѐ виды Оперативная память и еѐ виды Характеристика ОП 1. Тип, 2. Частота, 3. Информационная емкость. Память для хранения информации: входных и выходных данных, промежуточных результатов

ПРЕРЫВАНИЯ Операционную систему можно рассматривать как программу, управляемую прерываниями Работа каждого устройства Центральный процессор, память и внешние устройства могут функционировать параллельно.

Операционная система Операционная система это самая главная программа Операционная система комплекс программ, обеспечивающих взаимодействие всех аппаратных и программных частей компьютера между собой и

Модуль 3. УПРАВЛЕНИЕ ПРОЦЕССАМИ 1. Распределяет процессорное время между несколькими одновременно существующими в системе процессами, а также занимается созданием и уничтожением процессов, обеспечивает

9.1 Принципы аппаратуры ввода-вывода 9.1.1 Устройства ввода-вывода Устройства делят на две категории (некоторые не попадают ни в одну): блочные устройства - информация считывается и записывается по блокам,

Автор: Устинова Лариса Алексеевна, учитель информатики МБОУ «Средняя общеобразовательная школа 26» г. Новокузнецк, Кемеровской области E-mail: [email protected] знакомство с процедурой первоначальной

Оглавление 1. Введение... 3 2. История вопроса и наши подходы... 3 2.1. Первые режимы организации памяти... 3 2.2. Дальнейшее развитие методов организации... 3 2.3. Классификация методов управления памятью...

Теоретические вопросы 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Опишите аппаратную архитектуру Фон-Нейманна, ее принципы, сильные и слабые стороны. Опишите аппаратную архитектуру x86, режимы работы процессора в ней,

5. Организация виртуальной памяти Целью организации виртуальной памяти (ВП) является обеспечение процесса оперативной памятью практически неограниченного объёма (на практике очень большого) с добавлением

    Решение первой задачи состоит в установке операционной системой ограничений для определенных типов программного обеспечения и отдельных приложений.

    В качестве примера представим себе неимоверно слабый компьютер с оперативной памятью в 1 мегабайт, который примем за 1000 килобайт, чтобы избежать сложных расчетов, которые никак не помогут нам понять суть рассматриваемого вопроса. В процессе загрузки, операционная система этого воображаемого компьютера «откусывает» столько памяти, сколько нужно ей. Операционная система имеет приоритет перед другими программами. Представим себе, что операционной системе, чтобы загрузиться, нужно всего 300 килобайт памяти.

    Вообразите оперативную память в качестве ванны, на дно которой погрузилась операционная система и начала загружать различные драйверы, необходимые для управления аппаратной частью компьютера. Драйверам, необходимым рассматриваемому компьютеру, нужно 200 килобайт оперативной памяти. После того, как загружено все, без чего компьютер не станет корректно работать, процессам приложений осталось еще 500 килобайт оперативной памяти.

    Когда в память начинают загружаться приложения, каждое из них занимает в ОЗУ определенное количество блоков, размер которого назначается операционной системой. Если размер блока 2 килобайта, каждый процесс занимает участок памяти, размер которого кратен двум килобайтам. То есть сколько-то раз по 2 килобайта. Приложения загружаются в эти блоки фиксированного размера. Каждый блок начинается и заканчивается словом-ограничителем, длиной от 4 до 8 байт. Блоки и ограничители исключают ситуацию, при которой одно приложение могло бы наложиться в памяти на другое. Ведь для того, чтобы случилось такое наложение порой достаточно ошибиться одним или двумя битами. Но что же делать, когда отведенное под приложения 500-килобайтное пространство оперативной памяти заполнено?

    Большинство современных компьютеров устроены так, чтобы можно было нарастить их оперативную память, поставив в соответствующий разъем материнской платы дополнительную планку. К примеру, если оперативная память компьютера один гигабайт, ее можно увеличить до двух. Это наилучшее, но достаточно дорогое и не всегда поддерживаемое конфигурацией компьютера, решение. Компьютерным специалистам известно, что большая часть информации приложения, хранимая в оперативной памяти, не используется в каждый конкретный момент времени.

    Процессор имеет доступ лишь к одному участку памяти в момент времени. Таким образом, большая часть доступного объема ОЗУ не используется. Пространство жесткого диска значительно дешевле оперативной памяти, поэтому перемещение информации из ОЗУ на диск способно существенно (и главное — бесплатно) «расширить» оперативную память. Данное решение называется технологией виртуальной памяти, и о нем мы уже .

    Жесткий диск является одним из многочисленных типов памяти, которыми управляет операционная система. Его пространство стоит недорого, на нем можно хранить большие объемы информации. Но жесткий диск является медленным хранилищем информации, занимая весьма низкую ступень в .

    Операционная система поддерживает баланс между нуждами многочисленных процессов. Для этого она использует различные типы памяти, перемещая между ними данные таким образом, как того требует текущая ситуация. Данные перемещаются блоками (которые иначе называют страницами).

    Продолжение следует…

    По материалам computer.howstuffworks.com

Память является важнейшим ресурсом, требующим тщательного управления со стороны операционной системы. Распределению подлежит вся оперативная память, не занятая операционной системой. Обычно ОС располагается в самых младших адресах, однако может занимать и старшие адреса. Функциями ОС по управлению памятью являются: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, вытеснение процессов из оперативной памяти на диск (когда размеры основной памяти не достаточны для размещения в ней всех процессов) и возвращение их в оперативную память (когда в ней освобождается место), а также настройка адресов программы на конкретную область физической памяти.

Для идентификации команд и переменных используются символьные имена (метки), виртуальные адреса и физические адреса.

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

Виртуальные адреса вырабатывает транслятор, переводящий программу на машинный язык. Так как во время трансляции в общем случае неизвестно, в какое место оперативной памяти будет загружен процесс, то транслятор присваивает командам и переменным виртуальные (условные) адреса, обычно считая по умолчанию, что процесс будет размещен, начиная с нулевого адреса. Совокупность виртуальных адресов процесса называется виртуальным адресным пространством . Каждый процесс имеет собственное виртуальное адресное пространство. Максимальный размер виртуального адресного пространства ограничивается разрядностью адреса, присущей данной архитектуре ВМ, и, как правило, не совпадает с объемом физической памяти, имеющимся в машине.

Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены команды и переменные. Переход от виртуальных адресов к физическим может осуществляться двумя способами.

В первом случае замену виртуальных адресов на физические делает специальная системная программа – перемещающий загрузчик . Перемещающий загрузчик на основании имеющихся у него исходных данных о начальном адресе физической памяти, в которую предстоит загружать процесс, и предоставленной транслятором информации об адресно-зависимых константах программы, выполняет загрузку процесса, совмещая ее с заменой виртуальных адресов физическими.

Второй способ заключается в том, что процесс загружается в память в неизмененном виде в виртуальных адресах, при этом операционная система фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения процесса при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Второй способ является более гибким, он допускает перемещение процесса во время выполнения, в то время как перемещающий загрузчик жестко привязывает процесс к первоначально выделенному участку памяти. Вместе с тем использование перемещающего загрузчика уменьшает накладные расходы, так как преобразование каждого виртуального адреса происходит только один раз во время загрузки, а во втором случае – каждый раз при обращении по данному адресу.


В некоторых случаях (обычно в специализированных системах), когда заранее точно известно, в какой области оперативной памяти будет выполняться процесс, транслятор выдает исполняемый код сразу в физических адресах.

Все методы управления памятью могут быть разделены на два класса: методы, которые используют перемещение процессов между оперативной памятью и диском, и методы, которые не делают этого. Начнем с последнего, более простого класса методов.

Самым простым способом управления оперативной памятью является разделение ее на несколько разделов фиксированной величины . Это может быть выполнено вручную администратором во время старта системы или во время ее генерации. Очередной процесс, поступивший на выполнение, помещается либо в общую очередь, либо в очередь к некоторому разделу. Подсистема управления памятью в этом случае выполняет следующие задачи:

1) выбирает свободный раздел, размер которого достаточен для размещения поступившего на выполнение процесса;

2) осуществляет загрузку процесса и настройку адресов.

При очевидном преимуществе – простоте реализации – данный метод имеет существенный недостаток, которым является его «жесткость». Так как в каждом разделе может размещаться только один процесс, то степень «многозадачности» заранее ограничена числом разделов не зависимо от того, какой размер требуется процессам. Другим существенным недостатком является то, что в предлагае­мой схеме очень часто может наблюдаться так называемая фрагментация памяти , то есть потери части памяти разделов вследствие того, что процессы не полностью занимают выделенные им разделы. Например, если процессу требуется небольшой объем, но ему выделяется целый раздел, то оставшаяся память этого раздела не будет использоваться (то есть в этом разделе останется неиспользуе­мый фрагмент памяти). Снижение же степени фрагментации па­мяти за счет уменьшения размеров разделов может на определенном этапе привести к тому, что в малые разделы не смогут быть за­гружены процессы, для которых требуются более объемные разделы. Кроме того, недостат­ком рассматриваемого способа управления оперативной памятью является и то, что если даже весь объем оперативной памяти машины позволяет разместить некоторый процесс, требующий большого объема, наличие фик­сированного разбиения памяти на разделы не позволит сделать это, так как требуемый объем может превосходить по размеру отдельные (пусть и очень большие), но фиксированные разделы памяти.

В случае распределения памяти разделами переменной величины память ВМ не делится заранее на разделы. Сначала вся оперативная память свободна. Каждому вновь поступившему процессу выделяется необходимая память. Если достаточный объем памяти отсутствует, то процесс не принимается на выполнение и стоит в очереди. После завершения процесса память освобождается, и на это место может быть загружен другой процесс. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера.

Задачами операционной системы при реализации данного метода управления памятью являются следующие:

1) ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти;

2) при поступлении нового процесса – анализ запроса, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения поступившего процесса;

4) после завершения процесса – корректировка таблиц свободных и занятых областей.

Выбор раздела для вновь поступившего процесса может осуществляться по разным правилам, таким, например, как «первый попавшийся раздел достаточного размера», или «раздел, имеющий наименьший достаточный размер», или «раздел, имеющий наибольший достаточный размер». Все эти правила имеют свои преимущества и недостатки.

По сравнению с методом распределения памяти фиксированными разделами метод распределения памяти разделами переменной величины обладает гораздо большей гибкостью, но ему также присуща фрагментация памяти. Это связано с образованием через определенный промежуток времени функционирования системы некоторого числа несмежных участков свободной памяти (фрагментов), образовавшихся в результате выгрузки выполнившихся процессов, и загрузки на их место новых процессов, требующих меньшие объемы памяти. При этом может возникнуть ситуация, при которой ни для одного из вновь поступающих процессов не будет иметься достаточного участка памяти, хотя суммарный объем фрагментов может составить значительную величину, намного превышающую требуемый процессу объем памяти.

Одним из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших либо в сторону младших адресов, так, чтобы вся свободная память образовывала единую свободную область. В дополнение к функциям, которые выполняет ОС при распределении памяти переменными разделами, в данном случае она должна еще время от времени копировать содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется «сжатием» . Сжатие может выполняться либо при каждом завершении процесса, либо только тогда, когда для вновь поступившего процесса нет свободного раздела достаточного размера. В первом случае требуется меньше вычислительной работы при корректировке таблиц, а во втором – реже выполняется процедура сжатия. Так как процессы перемещаются по оперативной памяти в ходе своего выполнения, то преобразование адресов из виртуальной формы в физическую должно выполняться динамическим способом. Хотя процедура сжатия и приводит к более эффективному использованию памяти, она может потребовать значительного времени, что часто является тем недостатком, который преобладает над преимуществами данного метода.

Развитие методов организации вычислительного процесса привело к появлению метода, использующего так называемую виртуальная память. В общем случае виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим некими свойствами, которыми он в действительности не обладает. Так, например, пользователю может быть предоставлена виртуальная оперативная память, размер которой превосходит всю имеющуюся в системе реальную оперативную память. Пользователь пишет программы так, как будто в его распоряжении имеется однородная оперативная память большого объема, но в действительности для реализации программы предоставляются несколько разнородных запоминающих устройств, включая дисковые устройства.

Таким образом, виртуальная память – это совокупность программно-аппаратных средств, позволяющих пользователям писать программы, которые для своей реализации требуют такие объемы памяти, которые превосходят реально существующие объемы оперативной памяти ВМ. Для этого виртуальная память решает следующие задачи:

1) размещает процессы в запоминающих устройствах разного типа, например, часть – в оперативной памяти, а часть – на диске;

2) перемещает процессы по мере необходимости между запоминающими устройствами разного типа, например, подгружает процесс или его часть с диска в оперативную память;

3) преобразует виртуальные адреса в физические.

Все эти действия выполняются автоматически, без участия программиста, то есть механизм виртуальной памяти является прозрачным по отношению к пользователю.

Наиболее распространенными способами реализации виртуальной памяти является страничное, сегментное и странично-сегментное распределение памяти, а также свопинг .

При страничном распределении памяти виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера. Эти части называют виртуальными страницами. В общем случае размер виртуального адресного пространства не является кратным размеру страницы, поэтому последняя страница каждого процесса дополняется фиктивной областью. Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками). Размер страницы обычно выбирается равным степени числа 2, например: 512, 1024 и т.д. Это позволяет упростить механизм преобразования адресов.

При загрузке процесса часть его виртуальных страниц помещается в оперативную память, а остальные – на диск. Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. При загрузке операционная система создает для каждого процесса информационную структуру – таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск. Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак невыгружаемости (выгрузка некоторых страниц может быть запрещена), признак обращения к странице (используется для подсчета числа обращений за определенный период времени) и другие данные, формируемые и используемые механизмом виртуальной памяти.

При активизации очередного процесса в специальный регистр процессора загружается адрес таблицы страниц данного процесса. При каждом обращении к памяти происходит чтение из таблицы страниц информации о виртуальной странице, к которой произошло обращение. Если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит так называемое страничное прерывание. Выполняющийся процесс переводится в состояние ожидания, и активизируется другой процесс из очереди готовых. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается загрузить ее в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то решается вопрос, какую страницу следует выгрузить из оперативной памяти.

В данной ситуации может быть использовано много разных критериев выбора, наиболее популярные из них – «первая попавшаяся страница» или «страница, к которой в последнее время было меньше всего обращений».

В некоторых системах используется понятие рабочего множества страниц. Рабочее множество определяется для каждого процесса и представляет собой перечень наиболее часто используемых страниц, которые должны постоянно находиться в оперативной памяти и поэтому не подлежат выгрузке.

После того, как выбрана страница, которая должна покинуть оперативную память, анализируется ее признак модификации (по таблице страниц). Если выталкиваемая страница с момента загрузки была модифицирована, то ее новая версия должна быть переписана на диск. Если нет, то она может быть просто уничтожена, то есть соответствующая физическая страница объявляется свободной.

При каждом обращении к оперативной памяти с помощью аппаратных средств выполняются следующие действия:

1) на основании начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие разряды виртуального адреса) и длины записи в таблице страниц (системная константа) определяется адрес нужной записи в таблице;

2) из этой записи извлекается номер физической страницы;

3) к номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса).

Использование в последнем пункте того факта, что размер страницы равен степени числа 2, позволяет применить операцию конкатенации (присоединения) вместо более длительной операции сложения, что уменьшает время получения физического адреса, а, следовательно, повышает производительность системы.

На производительность системы со страничной организацией памяти влияют затраты времени, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. При часто возникающих страничных прерываниях система может тратить большую часть времени впустую. Чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы. Кроме того, увеличение размера страницы уменьшает размер таблицы страниц, а значит, уменьшает затраты памяти. С другой стороны, если страница велика, следовательно, велика и фиктивная область в последней виртуальной странице каждого процесса. В среднем на каждом процессе теряется половина объема страницы, что в сумме при большой странице может составить существенную величину. Время преобразования виртуального адреса в физический в значительной степени определяется временем доступа к таблице страниц. В связи с этим таблицу страниц стремятся размещать в «быстрых» запоминающих устройствах. Это может быть, например, набор специальных регистров или память, использующая для уменьшения времени доступа ассоциативный поиск и кэширование данных.

Страничное распределение памяти может быть реализовано в упрощенном варианте без выгрузки страниц на диск. В этом случае все виртуальные страницы всех процессов постоянно находятся в оперативной памяти. Такой вариант страничной организации хотя и не предоставляет пользователю виртуальной памяти, но почти исключает фрагментацию за счет того, что, во-первых, программа может загружаться в несмежные области, а, во-вторых, при загрузке виртуальных страниц никогда не образуется остатков.

При сегментном распределение памяти виртуальное адресное пространство процесса делится на сегменты, размер которых определяется программистом с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п. Иногда сегментация выполняется по умолчанию компилятором. При загрузке процесса часть сегментов помещается в оперативную память (при этом для каждого из этих сегментов операционная система подыскивает подходящий участок свободной памяти), а часть сегментов размещается в дисковой памяти. Сегменты одного процесса могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре.

Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту.

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное преобразование адреса по сравнению со страничной организацией памяти.

Странично-сегментное распределение памяти представляет собой комбинацию страничного и сегментного распределения памяти и, вследствие этого, сочетает в себе достоинства обоих подходов. Виртуальное пространство процесса делится на сегменты, а каждый сегмент в свою очередь делится на виртуальные страницы, которые нумеруются в пределах сегмента. Оперативная память делится на физические страницы. Загрузка процесса выполняется операционной системой постранично, при этом часть страниц размещается в оперативной памяти, а часть на диске. Для каждого сегмента создается своя таблица страниц, структура которой полностью совпадает со структурой таблицы страниц, используемой при страничном распределении. Для каждого процесса создается таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. Адрес таблицы сегментов загружается в специальный регистр процессора, когда активизируется соответствующий процесс.

Разновидностью виртуальной памяти является так называемый свопинг (swapping). В соответствии с методом свопинга некоторые процессы (обычно находящиеся в состоянии ожидания) временно выгружаются на диск. Планировщик операционной системы не исключает их из своего рассмотрения, и при наступлении условий активизации некоторого процесса, находящегося в области свопинга на диске, этот процесс перемещается в оперативную память. Если свободного места в оперативной памяти не хватает, то выгружается другой процесс.

При свопинге, в отличие от рассмотренных ранее методов реализации виртуальной памяти, процесс перемещается между памятью и диском целиком, то есть в течение некоторого времени процесс может полностью отсутствовать в оперативной памяти. Существуют различные алгоритмы выбора процессов на загрузку и выгрузку, а также различные способы выделения оперативной и дисковой памяти загружаемому процессу.

Рассмотрим иерархию запоминающих устройств (ЗУ) и принцип кэширования информации .

Память ВМ представляет собой иерархию ЗУ, включающую внутренние регистры процессора, различные типы сверхоперативной, оперативной и постоянной памяти, внешнюю память на магнитных дисках и других типах устройств. Разные типы ЗУ отличаются средним временем доступа и стоимостью хранения данных в расчете на один бит.

Кэширование информации –это способ организации совместного функционирования двух типов ЗУ, отличающихся временем доступа и стоимостью хранения данных, который позволяет уменьшить среднее время доступа к данным за счет динамического копирования наиболее часто используемой информации из относительно более «медленного» ЗУ в более «быстрое» ЗУ. Кэш-памятью обычно называют одно из таких взаимодействующих устройств, а именно «быстрое» ЗУ. Оно стоит дороже и, как правило, имеет сравнительно небольшой объем. Таким образом кэширование представляет собой некоторое компромиссное решение проблемы стоимости и быстродействия памяти. Важно, что механизм кэш-памяти является прозрачным для пользователя, то есть пользователь не должен сообщать никаких сведений об интенсивности использования информации и никак не должен участвовать в перемещении информации из ЗУ одного типа в ЗУ другого типа. Все это делается автоматически системными средствами.

Представим частный случай использования кэш-памяти для уменьшения среднего времени доступа к данным, хранящимся в оперативной памяти. Для этого между процессором и оперативной памятью помещается «быстрое» ЗУ – кэш-память. Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных. Каждая запись об элементе данных включает в себя адрес, который этот элемент данных имеет в оперативной памяти, и управляющую информацию: признак модификации и признак обращения к данным за некоторый последний период времени.

В системах, оснащенных кэш-памятью, каждый запрос к оперативной памяти выполняется в соответствии со следующим алгоритмом:

1) просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные данные в кэш-памяти (кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому – значению поля «адрес в оперативной памяти», взятому из запроса);

2) если данные обнаруживаются в кэш-памяти, то они считываются из нее, и результат передается в процессор;

3) если нужных данных нет, то они вместе со своим адресом копируются из оперативной памяти в кэш-память, и результат выполнения запроса передается в процессор.

При копировании данных может оказаться, что в кэш-памяти нет свободного места, тогда для вытеснения из кэш-памяти выбираются данные, к которым в последний период было меньше всего обращений. Если вытесняемые данные были модифицированы за время нахождения в кэш-памяти, то они переписываются в оперативную память. Если же эти данные не были модифицированы, то их место в кэш-памяти объявляется свободным.

На практике в кэш-память считывается не один элемент данных, к которому произошло обращение, а целый блок данных. Это увеличивает вероятность так называемого «попадания в кэш», то есть нахождения нужных данных в кэш-памяти. В реальных системах вероятность попадания в кэш составляет примерно 0,9.

Высокое значение вероятности нахождения данных в кэш-памяти связано с наличием у данных объективных свойств: пространственной и временной локальности.

Под пространственной локальностью данных в кэш-памяти понимается такой случай, когда произошло обращение по некоторому адресу и с высокой степенью вероятности в ближайшее время произойдет обращение к соседним адресам.

Под временной локальностью данных в кэш-памяти понимается случай большой вероятности обращения по этому же адресу в ближайшее время.

Все предыдущие рассуждения справедливы и для других пар запоминающих устройств, например, для оперативной памяти и внешней памяти. В этом случае уменьшается среднее время доступа к данным, расположенным, например, на магнитном диске, а роль кэш-памяти выполняет буфер в оперативной памяти.

Лекция 8. Управление памятью в ОС

4.4.3. Стратегии размещения

4.1. Понятие об организации и управлении физической памятью в операционных системах

Организация и управление основной (первичной, физической, реальной) памятью вычислительной машины - один из важнейших факторов, определяющих построение операционных систем. В англоязычной технической литературе память обозначается синонимами memory и storage.

В операционных системах различают два вида памяти: основная (первичная) и внешняя (вторичная).

Основная память (main storage) - оперативная память центрального процессора или ее часть, представляющее собой единое пространство памяти.

Внешняя память (external storage) - память, данные в которой доступны центральному процессору посредством операций ввода-вывода.

Для непосредственного выполнения программ или обращения к данным необходимо, чтобы они размещались в основной памяти. Внешняя память имеет, как правило, гораздо большую емкость, чем основная, стоит дешевле и позволяет хранить данные и программы, которые должны быть наготове для обработки.

Кроме основной и внешней памяти в современных ЭВМ существует дополнительная быстродействующая память, называемая кэш-памятью .

Все три перечисленных вида памяти образуют иерархию памяти вычислительной машины (см. рис.4.1).

Операционным системам с несколькими уровнями иерархии памяти свойственна высокая интенсивность челночных обменов программами и данными между физическими устройствами памяти различных уровней. Такие обмены отнимают системные ресурсы (например, время центрального процессора), которые можно было бы использовать более продуктивно.

Основная память представляет собой один из самых дорогостоящих ресурсов. Главной задачей при разработке ОС считается оптимальное использование основной памяти на основе рациональной организации и управления ею.

Под организацией памяти понимается то, каким образом представляется и как используется основная память.

В операционных системах применяются следующие виды представления основной памяти:

  • фиксированными блоками равного размера;
  • фиксированными разделами неодинакового размера;
  • динамическими разделами, размеры которых изменяются в ходе работы вычислительной системы.

Использование основной памяти может осуществляться следующими способами:

  • размещение в памяти единовременно только одной программы пользователей;
  • размещение в памяти одновременно нескольких программ пользователей;
  • размещение программ пользователей в конкретном заранее заданном разделе основной памяти;
  • размещение каждой программы пользователя в одном непрерывном (односвязном) пространстве основной памяти;
  • размещение программы пользователя в несмежных областях оперативной памяти (при этом ОС осуществляет разбиение размещаемых там программ на отдельные блоки и обеспечивает связь этих блоков между собой).

В операционных системах может применяться любая комбинация перечисленных видов представления и способов использования основной памяти ЭВМ.

Независимо от того, какая схема организации памяти принята для конкретной ОС, необходимо решить, какие стратегии следует применять для достижения оптимальных характеристик.

Стратегии управления памятью определяют, как будет работать память с конкретной схемой организации при различных подходах к решению следующих вопросов:

· когда следует поместить новую программу в память;

· в какое место основной памяти будет размещаться очередная программа;

· как разместить очередную программу в памяти (с минимизацией потерь памяти или с максимизацией скорости размещения);

· какую из находящихся в памяти программ следует вывести из памяти, если необходимо обязательно разместить новую программу, а память уже заполнена.

В существующих ОС реализованы стратегии управления, по-разному отвечающие на перечисленные выше вопросы, что в немалой степени обусловлено имеющимися в распоряжении разработчиков аппаратурными и программными средствами.

Стратегии управления памятью делятся на следующие категории:

· стратегии выборки;

· стратегии размещения;

· стратегии замещения.

В свою очередь стратегии выборки разделяют на две подкатегории:

· стратегии выборки по запросу (по требованию);

· стратегии упреждающей выборки.

Стратегии выборки ставят своей целью определить, когда следует “втолкнуть” очередную программу (или блок программы) или данные в основную память.

Стратегии размещения ставят своей целью определить, в какое место основной памяти следует размещать поступающую программу. Наиболее распространенными являются стратегии размещения, реализующие принципы занятия “первого подходящего”, “наиболее подходящего” и “наименее подходящего” по размерам свободного участка памяти.

Стратегии замещения ставят своей целью определить, какой блок программы или данных следует вывести (“вытолкнуть”) из основной памяти, чтобы освободить место для размещения вновь поступающих программ или данных.

При реализации стратегий размещения операционные системы часто учитывают требования связного распределения памяти для программ и данных.

Связное распределение памяти - такое распределение основной памяти ЭВМ, при котором каждая программа занимает один непрерывный (связный) блок ячеек памяти.

Несвязное распределение памяти - такое распределение основной памяти ЭВМ, при котором программа пользователя разбивается на ряд блоков (сегментов, страниц), которые могут размещаться в основной памяти в участках, не обязательно соседствующих друг с другом (в несмежных участках). В этом случае обеспечивается более эффективное использование пространства основной памяти.

Эффективность той или иной стратегии размещения можно оценить с помощью коэффициента использования памяти h

(4.1)

где V п - объем памяти, занимаемый программами пользователя; V оп - полный объем основной памяти; V ос - объем памяти, занимаемый операционной системой; V о - объем памяти, доступный для распределения.

4.2. Методы связного распределения основной памяти

4.2.1. Связное распределение памяти для одного пользователя

Связное распределение памяти для одного пользователя, называемое также одиночным непрерывным распределением, применяется в ЭВМ, работающих в пакетном однопрограммном режиме под управлением простейшей ОС.

Вся основная часть ЭВМ, не занятая программами операционной системы, выделяется программе единственного на данном отрезке времени пользователя. Размер программы в этом случае ограничивается размером доступной основной памяти, однако существует возможность выполнения программ, размер которых превышает размер основной памяти, используя механизм оверлеев.

Организация памяти при связном распределении для одного пользователя показана на рис. 4.2.

Коэффициент использования памяти для рассматриваемого случая вычисляется по формуле

h с1 =V п /V o , (4.2)

где V п - размер программы пользователя; V о - объем доступной для распределения основной памяти ЭВМ.

Функциями ОС в данном случае являются:

· выделение программе необходимого пространства памяти;

· защита памяти;

· освобождение памяти.

Функция выделения памяти сводится к предоставлению программе всей доступной памяти ЭВМ.

Защита памяти в однопрограммных системах заключается в установке защиты областей памяти, занятых операционной системой, от воздействия программ пользователя. Эта функция реализуется при помощи одного регистра границы , встроенного в центральный процессор. Регистр границы содержит либо старший адрес команды, относящийся к операционной системе, либо младший адрес доступной программе основной памяти (адрес начала программы). Если программа пользователя пытается войти в область операционной системы, то вырабатывается прерывание по защите памяти, и программа аварийно завершается.

4.2.2. Связное распределение памяти при мультипрограммной обработке

При мультипрограммной обработке в памяти компьютера размещается сразу несколько заданий. Распределение памяти между заданиями в этом случае может быть выполнено следующими способами:

· распределение фиксированными разделами;

· распределение переменными разделами;

· распределение со свопингом.

Распределение фиксированными разделами имеет две модификации:

а) с загрузкой программ в абсолютных адресах;

б) с загрузкой перемещаемых модулей.

При загрузке перемещаемых модулей вся оперативная память машины разбивается на некоторое количество разделов фиксированного размера. Размеры разделов могут не совпадать. В каждом разделе может быть размещено только одно задание.

В случае загрузки программ в абсолютных адресах при их подготовке указывается начальный адрес загрузки программ, совпадающий с начальным адресом раздела, в котором эта программа будет выполняться.

В случае загрузки перемещаемых модулей раздел, в котором будет размещено задание, либо автоматически определяется операционной системой в соответствии с реализованной в нем стратегией выбора раздела (“первый подходящий”, “самый подходящий”, “самый неподходящий”), либо указывается операционной системе специальными командами языка управления заданиями.

В обоих случаях задание монопольно владеет всем объемом оперативной памяти раздела, в который оно было помещено операционной системой.

Коэффициенты использования памяти при распределении с фиксированными разделами вычисляется по формулам:

(4.3)

(4.4)

где h СMi - коэффициент использования памяти i-го раздела; V Оi - размер i-го раздела; V Пi - длина программы, помещенной в i-ый раздел; N Ф - количество разделов; V О - общий объем оперативной памяти, доступной для распределения.

Основным недостатком распределения памяти фиксированными разделами является неэффективное использование ресурсов вычислительной системы из-за возможного появления длинных очередей заданий, ожидающих освобождения конкретного раздела в то время, как остальные разделы пусты. Подобная ситуация изображена на рис. 4.3. Задания, ожидающие освобождения раздела С, могли бы разместиться и в разделах А или В, однако операционная система не позволяет им это сделать, т.к. в управляющей информации указан конкретный раздел, в котором эти задания должны выполняться - раздел С.

Способ распределения памяти фиксированными разделами используется в операционных системах ОС ЕС и IBM/360 в режиме MFT, в котором загрузка программ выполняется перемещаемыми модулями.

Защита памяти при распределении фиксированными разделами выполняется аналогично защите памяти для одного пользователя, только теперь необходимо наличие нескольких граничных регистров - по два регистра на каждый раздел. В одном из граничных регистров указывается нижняя граница раздела, а во втором - его верхняя граница. Если программа пользователя пытается обратиться к данным, расположенным вне области адресов данного раздела, то вырабатывается прерывание по защите памяти.

В мультипрограммных системах с фиксированными разделами наблюдается явление фрагментации памяти.

Фрагментация памяти - появление в памяти вычислительной машины чередования занятых и незанятых (свободных) участков оперативной памяти.

При распределении фиксированными разделами появление фрагментации обусловлено тем, что либо задания пользователей не полностью занимают выделенные им разделы, либо часть разделов остается незанятой.

На рис.4.4. показано проявление фрагментации оперативной памяти.

Уровень фрагментации можно оценить коэффициентом фрагментации K ф, вычисляемый по формуле

(4.5)

Где V дi - размер i-ой “дыры”, т.е. i-го участка свободной памяти, ограниченного программами пользователей; N Д - количество “дыр”, т.е. участков свободной памяти, лежащих между программами пользователей; V o - объем оперативной памяти, доступной для распределения.

Фрагментация памяти представляет собой нарушение односвязности пространства свободной памяти ЭВМ, что приводит к снижению эффективности использования памяти как одного из основных ресурсов вычислительной машины.

Распределение памяти переменными разделами предназначено для повышения эффективности использования оперативной памяти ЭВМ. Суть способа распределения памяти переменными разделами состоит в том, что заданиям, когда они поступают, выделяется такой объем памяти, который им требуется, т.е. размер раздела оперативной памяти, выделяемой каждому заданию, в точности соответствует размеру этого задания. Поэтому “перерасхода” памяти, как это происходит при распределении фиксированными разделами, в данном способе не наблюдается.

Имеется две модификации способа распределения переменными разделами:

· распределение переменными неперемещаемыми разделами;

· распределение переменными перемещаемыми разделами.

При распределении памяти переменными неперемещаемыми разделами (динамическими разделами) операционная система создает две таблицы: таблицу учета распределенных областей памяти и таблицу учета свободных областей памяти (“дыр”).

При поступлении очередного задания память для него отводится на этапе долгосрочного планирования, причем выделение памяти осуществляется по информации из таблицы учета “дыр” в соответствии с принятой в ОС стратегией размещения (“первый подходящий”, “самый подходящий”. “самый неподходящий”). При успешном распределении ОС корректирует обе таблицы - распределенных и свободных областей.

После окончания какого-либо задания занимаемый им участок памяти освобождается, и операционная система корректирует таблицу распределенных областей, вычеркивая из нее информацию о закончившемся задании, а также заносит в таблицу свободных областей данные о вновь появившейся “дыре”.

Рассмотрим следующий пример. Пусть начальное распределение памяти переменными разделами выполнено так, как показано в табл.4.1, 4.2 и на рис. 4.5а. После размещения заданий А, В, С и Д осталась свободная область такого размера, что ни одна из программ, продолжающих стоять в очереди, в эту область не помещается.

Таблица 4.1. Таблица распределенных областей

Номер раздела,

ключ защиты

Имя раздела

Размер

Адрес

Состояние

100К

200К

100К

400К

100К

50К

150К

350К

450К

850К

Распределен

Распределен

Распределен

Распределен

Распределен

Таблица 4.2. Таблица свободных областей

Номер свободной

области

Размер

Адрес

Состояние

100К

950К

Доступна

Предположим, что через некоторое время закончились задания А и С (см. рис.4.5б). Таблицы областей приобретают вид, показанный в табл. 4.3 и 4.4.

Таблица 4.3. Таблица распределенных областей: закончилось задание А

Номер раздела,

ключ защиты

Имя раздела

Размер

Адрес

Состояние

200К

400К

100К

150К

450К

850К

Пусто

Распределен

Пусто

Распределен

Распределен

Таблица 4.4. Таблица свободных областей: закончилось задание А

Номер свободной

области

Размер

Адрес

Состояние

100К

100К

100К

100К

350К

950К

Доступна

Доступна

Доступна



Можно видеть, что несмотря на наличие 274К свободной памяти, достаточной для размещения задания Е, стоящего первым в очереди, ОС не имеет возможности это сделать, т.к. свободная память разбита на два фрагмента по 100К каждый, в которых разместить программы, стоящие в очереди, невозможно. Этот пример иллюстрирует главный недостаток способа распределения переменными неперемещаемыми разделами - склонность к фрагментации основной памяти, что снижает эффективность работы вычислительной системы.

При распределении памяти переменными перемещаемыми разделами операционная система осуществляет действия, называемые уплотнением памяти, состоящими в перемещении всех занятых участков к одному или другому краю основной памяти. Благодаря этому вместо большого количества небольших “дыр”, образующихся при использовании распределения переменными неперемещаемыми разделами, формируется единый (связный) участок свободной памяти. На рис.4.5в показан результат уплотнения, когда находящиеся в основной памяти программы В, Д и Е перемещены на свободные участки после окончания работы программ А и С. Свободная память теперь представляет собой непрерывную область размером 274К, в которую ОС может поместить стоящее в очереди задание F. Этот процесс называют также дефрагментацией памяти.

Дефрагментация памяти, применяемая при распределении перемещаемыми разделами, имеет свои недостатки:

  • требуются дополнительные затраты времени;
  • во время уплотнения памяти система должна прекращать (приостанавливать) все другие работы, что зачастую может оказаться неприемлемым;
  • необходимость перемещения заданий в памяти требует хранения значительного объема информации, связанной с размещением программ в памяти, что увеличивает требования к памяти со стороны ОС;
  • при интенсивном потоке коротких программ может возникнуть необходимость частой дефрагментации памяти, так что затачиваемые на эти цели системные ресурсы могут оказаться неоправданными получаемой выгодой.

Распределение памяти со свопингом (от англ. swapping - подкачка) характеризуется тем, что в отличие от рассмотренных ранее способов распределения программы пользователей не остаются в основной памяти до момента их завершения. В простейшей системе со свопингом в каждый момент времени только одно задание пользователя находится в основной памяти и занимает ее до тех пор, пока оно может выполняться, а затем освобождает как память, так и центральный процессор для следующего задания. Таким образом, вся память целиком на короткий период выделяется одному заданию, затем в некоторый момент времени это задание выводится (выталкивается, т.е. осуществляется “откачка”), а очередное задание вводится (вталкивается, т.е. осуществляется “подкачка”). В обычном случае каждое задание, еще до своего завершения, будет много раз перекачиваться из внешней памяти в основную и обратно.

Для обеспечения свопинга во внешней памяти ОС создает один или несколько файлов подкачки, где хранятся образы оперативной памяти находящихся в работе заданий пользователей. Способ распределения памяти со свопингом применяется в простейших ОС, работающих в режиме разделения времени.

4.2.3. Стратегии размещения информации в памяти

Стратегии размещения информации в памяти предназначены для того, чтобы определить, в какое место основной памяти следует помещать поступающие программы и данные при распределении памяти неперемещаемыми разделами. Наиболее часто применяются следующие стратегии:

  • размещение с выбором первого подходящего (стратегия “первый подходящий”):
  • размещение с выбором наиболее подходящего (стратегия “самый подходящий”);
  • алгоритм с выбором наименее подходящего (стратегия “самый неподходящий”).

Стратегия “первый подходящий” состоит в выполнении следующих шагов:

  • возрастания адресов ;
  • поместить информацию в первый встретившийся участок основной памяти размером не менее требуемого.

Стратегия “самый подходящий” реализует следующую последовательность действий:

  • упорядочить таблицу свободных областей в порядке возрастания размеров свободных областей:

Стратегия “самый неподходящий” выполняет следующие действия:

  • упорядочить таблицу свободных областей в порядке убывания размеров областей;
  • поместить информацию в первый встретившийся участок свободной памяти размером не менее требуемого.

Строгих доказательств преимущества той или иной стратегии перед остальными не существует, так что их применение в операционных системах основано на интуитивных аргументах разработчиков ОС.

4.3. Организация виртуальной памяти

4.3.1. Основные концепции виртуальной памяти

Термин виртуальная память обычно ассоциируется с возможностью адресовать пространство памяти, гораздо большее, чем емкость первичной (реальной, физической) памяти конкретной вычислительной машины. Концепция виртуальной памяти впервые была реализована в машине, созданной в 1960 г. в Манчестерском университете (Англия). Однако широкое распространение системы виртуальной памяти получили лишь в ЭВМ четвертого и последующих поколений.

Существует два наиболее известных способа реализации виртуальной памяти - страничная и сегментная. Применяется также их комбинация - странично-сегментная организация виртуальной памяти.

Все системы виртуальной памяти характеризуются тем, что адреса, формируемые выполняемыми программами, не обязательно совпадают с адресами первичной памяти. Виртуальные адреса, как правило, представляют гораздо большее множество адресов, чем имеется в первичной памяти.

Суть концепции виртуальной памяти заключается в том, что адреса, к которым обращается выполняющийся процесс, отделяются от адресов, реально существующих в первичной памяти.

Адреса, которые реально существуют в первичной памяти, называются реальными (физическими) адресами.

Диапазон виртуальных адресов, к которым может обращаться выполняющийся процесс, называется пространством виртуальных адресов V этого процесса.

Диапазон реальных адресов, существующих в конкретной вычислительной машине, называется пространством реальных адресов R этой ЭВМ.

Несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью. Для установления соответствия между виртуальными и реальными адресами разработаны механизмы динамического преобразования адресов ДПА (или ДАТ - от англ.Dynamics Adress Transformation), обеспечивающие преобразование виртуальных адресов в реальные во время выполнения процесса. Все подобные системы обладают общим свойством (см.рис.4.6) - смежные адреса виртуального адресного пространства процесса не обязательно будут смежными в реальной памяти.

Это свойство называют “искусственной смежностью”. Тем самым пользователь освобождается от необходимости рассматривать физическую память с ее уникальными характеристиками.

Виртуальная память строится, как правило, по двухуровневой схеме (см.рис.4.7).

Первый уровень - это реальная память, в которой находятся выполняемые процессы и в которой должны размещаться данные, к которым обращаются эти процессы.

Второй уровень - это внешняя память большой емкости, например, накопители на магнитных дисках, способные хранить программы и данные, которые не могут все сразу уместиться в реальной памяти из-за ограниченности ее объема. Память второго уровня называют вторичной или внешней.

В мультипрограммных режимах реальная память разделяется между многими процессами. Поскольку каждый процесс может иметь гораздо большее пространство виртуальных адресов, чем реальная память, то в текущий момент времени в реальной памяти имеется возможность держать лишь небольшую часть программных кодов и данных каждого процесса, причем даже эти небольшие части кодов и данных не обязательно будут размещаться сплошным массивом реальной памяти (свойство “искусственной смежности ”).

Механизм динамического преобразования адресов ведет учет того, какие ячейки виртуальной памяти в данный момент находятся в реальной памяти и где именно они размещаются. Это осуществляется с помощью таблиц отображения, ведущихся механизмом ДПА.

Информация, перемещаемая из виртуальной памяти в реальную, механизмом ДПА группируется в блоки , и система следит за тем, в каких местах реальной памяти размещаются различные блоки виртуальной памяти. Размер блока влияет на то, какую долю реальной памяти ДПА будет использовать непроизводительно, для своих целей.

Если блоки имеют одинаковый размер, то они называются страницами страничной. Если блоки могут быть различных размеров, то они называются сегментами , а соответствующая организация виртуальной памяти называется сегментной . В некоторых системах оба подхода комбинируются, т.е. сегменты реализуются как объекты переменных размеров, формируемые из страниц фиксированного размера. Такая организация виртуальной памяти называется либо сегментно-страничной, либо странично-сегментной.

Адреса в системе поблочного отображения являются двухкомпонентными (двумерными). Чтобы обратиться к конкретному элементу данных, программа указывает блок, в котором расположен этот элемент, и смещение элемента относительно начала блока (см.рис.4.8). Виртуальный адрес n указывает при помощи упорядоченной пары (b, d), где b- номер блока, в котором размещается соответствующий элемент данных, а d - смещение относительно начального адреса этого блока.

Преобразование адреса виртуальной памяти n =(b, d) в адрес реальной памяти r осуществляется следующим образом (см.рис.4.9). Каждый процесс имеет собственную таблицу отображения блоков, которую операционная система ведет в реальной памяти. Реальный адрес a этой таблицы загружается в специальный регистр центрального процессора, называемый регистром начального адреса таблицы отображения блоков процесса.


Таблицы отображения блоков содержат по одной строке для каждого блока процесса, причем эти блоки идут последовательно: сначала блок 0, затем блок 1 и т.д. Номер блока b суммируется с начальным адресом а таблицы, образуя реальный адрес строки таблицы для блока b. Найденная строка содержит реальный адрес b начала блока b в реальной памяти. К этому начальному адресу b прибавляется смещение d, так что образуется искомый реальный адрес r=b’+d.

Все методы поблочного отображения, применяемые в системах с сегментной, страничной и комбинированной странично-сегментной организациями, подобны схеме отображения, показанной на рис. 4.9, называемой схемой прямого отображения.

4.3.2. Страничная организация виртуальной памяти

Виртуальный адрес при чисто страничной организации памяти _ это упорядоченная пара (p, d), где p - номер страницы в виртуальной памяти, а d - смещение в рамках страницы p. Процесс может выполняться, если его текущая страница находится в первичной памяти. Страницы переписываются из внешней памяти в первичную и размещаются в ней в блоках, называемых страничными кадрами и имеющих точно такой же размер, как у поступающих страниц. Страничные кадры начинаются в реальной памяти с адресов, кратных фиксированному размеру страниц. Поступающая страница может быть помещена в любой свободный страничный кадр.

Для обеспечения работы механизма отображения страниц формируется таблица отображения страниц, каждая строка которой содержит информацию об отображаемой странице виртуальной памяти:

r - признак наличия страницы в первичной памяти (r=0 - страницы в первичной памяти нет; 1 - страница находится в первичной памяти):

S - адрес страницы во внешней памяти (при r=0):

p’ - номер страничного кадра в первичной памяти, где размещена виртуальная страница с номером p.

4.3.3. Сегментная организация виртуальной памяти

Виртуальный адрес при сегментной организации виртуальной памяти - это упорядоченная пара n = (s, d) , где s - номер сегмента виртуальной памяти, а d - смещение в рамках этого сегмента. Процесс может выполняться только в том случае, если его текущий сегмент находится в первичной памяти, Сегменты передаются из внешней памяти в первичную целиком. Все ячейки, относящиеся к сегменту, занимают смежные адреса первичной памяти. Для размещения поступающих из внешней памяти сегментов в свободные участки первичной памяти применяются те же стратегии размещения, как и при распределении переменными неперемещаемыми разделами - “первый подходящий”, “самый подходящий”, “самый неподходящий” (см.п.4.2.3). Динамическое преобразование виртуальных адресов в реальные адреса осуществляется в соответствии со схемой прямого отображения, приведенной на рис. 4.9.

4.3.4. Странично-сегментная организация виртуальной памяти

Системы со странично-сегментной организацией обладают достоинствами обоих способов реализации виртуальной памяти. Сегменты обычно содержат целое число страниц, причем не обязательно, чтобы все страницы сегмента находились в первичной памяти одновременно, а смежные страницы виртуальной памяти не обязательно должны оказаться смежными в первичной памяти. В системе со странично-сегментной организацией применяется трехкомпонентная (трехмерная) адресация. Виртуальный адрес n здесь определяется как упорядоченная тройка n =(s, p, d), где s - номер сегмента, p - номер страницы, а d - смещение в рамках страницы, где находится нужный элемент.

Операционная система для каждого процесса формирует, во-первых, одну таблицу сегментов процесса, и, во-вторых, таблицы страниц сегментов (по одной на каждый сегмент процесса).

Таблица сегментов процесса содержит в своих строках информацию о количестве страниц в сегменте и о начальных адресах s’ размещения таблиц страниц сегментов в первичной памяти ЭВМ.

Каждая страница таблиц сегмента содержит в своих строках информацию о начальном адресе p’ размещения в первичной памяти страничного кадра для данной страницы виртуальной памяти.

Динамическое преобразование виртуальных адресов в системах со странично-сегментной организацией отличается от преобразования по схеме наличием еще одного уровня вычисления адреса, как это показано на схеме рис.4.10, и появлением таблиц страниц для каждого сегмента процесса.

4.4. Управление виртуальной памятью

4.4.1. Стратегии управления виртуальной памятью

Стратегии управления виртуальной памятью, так же как и стратегии управления физической памятью, разделяются на три категории: стратегии вталкивания, стратегии размещения и стратегии выталкивания.

Целью стратегий вталкивания является определить, в какой момент следует переписать страницу или сегмент из вторичной памяти в первичную.

Целью стратегий размещения является определить, в какое место первичной памяти помещать поступающую страницу или сегмент.

Целью стратегий выталкивания является решить, какую страницу или сегмент следует удалить из первичной памяти, чтобы освободить место для помещения поступающей страницы или сегмента, если первичная память полностью занята.

Большинство стратегий управления виртуальной памятью базируется на концепции локальности, суть которой заключается в том, что распределение запросов процессов на обращение к памяти имеет, как правило, неравномерный характер с высокой степенью локальной концентрации.

Свойство локальности проявляется как во времени, так и в пространстве.

Локальность во времени означает, что к ячейкам памяти, к которым недавно производилось обращение, с большой вероятностью будет обращение в ближайшем будущем.

Локальность в пространстве означает, что обращения к памяти, как правило, концентрируются так, что в случае обращения к некоторой ячейке памяти с большой вероятностью можно ожидать обращение к близлежащим ячейкам.

Свойство локальности наблюдается не только в прикладных программах, но и в работе программ операционной системы. Свойство это скорее эмпирическое (наблюдаемое на практике), чем теоретически обоснованное. Локальность никак нельзя гарантировать, однако ее вероятность достаточно велика. Самым важным следствием локализации является то, что программа может эффективно работать, если в первичной памяти находится подмножество, включающее наиболее “популярные” ее страницы или сегменты.

Для оценивания эффективности стратегий управления памятью в операционных системах применяют показатель “пространство-время”, вычисляемый по формуле

S = VЧ T, (4.6)

где S - показатель “пространство-время”; V - объем первичной памяти, занимаемый процессом; T - длительность ожидания процессом подкачки необходимой страницы или сегмента.

Уменьшение значения показателя S за счет снижения периодов ожидания процессом нужных ему страниц или сегментов является важнейшей целью всех стратегий управления памятью.

4.4.2. Стратегии вталкивания (подкачки)

Для управления вталкиванием применяются следующие стратегии:

· вталкивание (подкачка) по запросу (по требованию);

· вталкивание (подкачка) с упреждением (опережением).

Вталкивание (подкачка) по запросу предполагает, что система ждет ссылки на страницу или сегмент от выполняющегося процесса и только после появления такой ссылки начинает переписывать данную страницу или сегмент в первичную память. Подкачка по запросу имеет положительные и отрицательные стороны.

К положительным сторонам относятся:

  • гарантировано, что в первичную память будут переписываться только те страницы (сегменты), которые необходимы для работы процесса;
  • накладные расходы на то, чтобы определить, какие страницы или сегменты следует передавать в первичную память, минимальны.

К недостаткам подкачки по запросу относится тот факт, что процесс в этом случае накапливает в первичной памяти требуемые ему страницы (сегменты) по одной. При появлении ссылки на каждую новую страницу (сегмент) процессу приходится ждать, когда эта страница (или сегмент) будет передана в первичную память. В зависимости от того, сколько страниц (сегментов) данного процесса уже находится в первичной памяти, эти периоды ожидания будут, как это следует из формулы (4.5), обходиться все более дорого, поскольку ожидающие процессы будут занимать все больший объем памяти.

Вталкивание (подкачка) с упреждением предполагает, что система пытается заблаговременно определить, к каким страницам или сегментам будет обращаться процесс. Если вероятность обращения высока и в первичной памяти имеется свободное место, то соответствующие страницы или сегменты будут переписываться в первичную память еще до того, как к ним будет явно производиться обращение. При правильном выборе страниц (сегментов) для упреждающей подкачки удается существенно сократить общее время выполнения данного процесса и уменьшить значение показателя “пространство-время”.

К недостаткам стратегии подкачки с упреждением можно отнести тот факт, что, согласно теории вычислимости, точно предсказать путь, по которому будет развиваться процесс, в общем случае невозможно. Поэтому вполне возможны ситуации, когда решения о выборе станиц (сегментов) для упреждающей подкачки будет в большинстве случаев приниматься неверно для одного или нескольких процессов, развивающихся в системе, что в свою очередь приведет к резкому снижению скорости работы этих процессов из-за увеличения времени ожидания необходимых им страниц или сегментов.

4.4.3. Стратегии размещения

В системах со страничной организацией виртуальной памяти решение о размещении вновь загружаемых страниц принимается достаточно просто: новая страница может быть помещена в любой свободный страничный кадр.

Для систем с сегментной организацией виртуальной памяти применяются такие же стратегии размещения, какие используются в системах распределения памяти переменными разделами (см. П.4.2), а именно:

· размещение с выбором первого подходящего свободного участка;

· размещение с выбором самого подходящего свободного участка;

· размещение с выбором наименее подходящего свободного участка.

Подробное описание действий для реализации перечисленных стратегий размещения приведено в п.4.2.3.

4.4.4. Стратегии выталкивания

В мультипрограммных системах вся первичная память бывает, как правило, занята. В этом случае программа управления памятью должна решать, какую страницу или какой сегмент следует удалить из первичной памяти, чтобы освободить место для поступающей страницы или сегмента. В настоящее время применяются следующие стратегии выталкивания (откачки) страниц (сегментов):

  • выталкивание случайных страниц или сегментов;
  • выталкивание первой пришедшей страницы или сегмента (FIFO);
  • выталкивание дольше всего не использовавшихся страниц или сегментов (LRU);
  • выталкивание наименее часто использовавшихся страниц или сегментов (LFU);
  • выталкивание не использовавшихся в последнее время страниц или сегментов (NUR).

Стратегия выталкивания случайных страниц или сегментов является наиболее простой в реализации, обладает малыми издержками и не является дискриминационной по отношению к каким-либо процессам, работающим в системе. В соответствии с этой стратегией любые страницы или сегменты, находящиеся в первичной памяти, могут быть выбраны для выталкивания с равной вероятностью, в том числе даже следующая страница или сегмент, к которым будет производиться обращение (и которые, естественно, удалять из памяти наиболее нецелесообразно). Поскольку подобная стратегия, по сути, рассчитана на “слепое” везение, в реальных системах она применяется редко.

Стратегия выталкивания первой пришедшей страницы или сегмента (FIFO-стратегия) реализует принцип “первый пришел - первый ушел”. В этом случае в момент поступления каждой страницы (сегмента) в первичную память ей (ему) присваивается метка времени. Когда появляется необходимость удалить из первичной памяти какую-либо страницу (сегмент), выбирается та страница (сегмент), у которой метка времени имеет наименьшее значение. Аргументом в пользу такой стратегии выталкивания является довод, что у данной страницы уже были возможности “использовать свой шанс”, и пора дать подобные возможности другой странице. Однако стратегия FIFO с большой вероятностью будет приводить к удалению из первичной памяти активно используемых страниц (сегментов), поскольку тот факт, что страница (сегмент) находится в первичной памяти в течение длительного времени, вполне может означать, что эта страница или сегмент постоянно находится в работе.

Стратегия выталкивания дольше всего не использовавшихся страниц или сегментов (LRU-стратегия) предусматривает, что для выталкивания следует выбирать те страницы (сегменты), которые не использовались дольше других. Стратегия LRU требует, чтобы при каждом обращении к страницам (сегментам) их метки времени обновлялись. Это может быть сопряжено с существенными издержками, поэтому LRU-стратегия, несмотря на свою привлекательность, в современных операционных системах реализуется достаточно редко. Кроме того, при реализации LRU-стратегии может быть так, что страница (сегмент), к которой дольше всего не было обращений, в действительности станет следующей используемой страницей (сегментом), если программа к этому моменту очередной раз пройдет большой цикл, охватывающий несколько страниц или сегментов.

Стратегия выталкивания реже всего используемых страниц или сегментов (LFU-стратегия) является одной из наиболее близких к рассмотренной выше LRU-стратегии. В соответствии с LFU-стратегией из первичной памяти выталкиваются наименее часто (наименее интенсивно) использовавшиеся к данному времени страницы или сегменты. Здесь контролируется интенсивность использования страниц (сегментов). Для этого каждой странице (сегменту) назначается счетчик, значение которого увеличивается на единицу при каждом обращении к данной странице (сегменту). LFU-стратегия, будучи интуитивно оправданной, имеет те же недостатки, что и стратегия LRU: во-первых, велика вероятность того, что из первичной памяти будут удалены страницы или сегменты, которые потребуются процессам при следующем обращении к памяти и, во-вторых, ее реализация может быть сопряжена со значительными затратами на организацию контроля интенсивности использования страниц или сегментов.

Стратегия выталкивания не использовавшихся в последнее время страниц или сегментов (NUR-стратегия) также является близкой к стратегии LRU и характеризуется относительно небольшими издержками на свою реализацию. Согласно NUR-стратегии из первичной памяти выталкиваются те страницы (сегменты), к которым не было обращений в последнее время. В соответствии со свойством локальности во времени (см.п.4.4.1) к страницам (сегментам), не использовавшимся в последнее время, вряд ли будет обращение в ближайшем будущем, так что их можно заменить на вновь поступающие страницы.

Поскольку желательно заменять те страницы (сегменты), которые в период нахождения в основной памяти не изменялись, реализация NUR-стратегии предусматривает введение двух аппаратных бит-признаков на страницу (сегмент):

· бит-признак b 0 обращения к странице (сегменту);

· бит-признак b 1 модификации страницы (сегмента).

Первоначально все b 0 и b 1 устанавливаются в 0. При обращении к странице (сегменту) соответствующий бит-признак b 0 устанавливается в 1. В случае изменения содержимого страницы (сегмента) соответствующий бит-признак b 1 устанавливается в 1. NUR-стратегия предусматривает существование четырех групп страниц (сегментов), показанных в табл. 4.5.

Таблица 4.5. Группы страниц (сегментов)

Группа

В первую очередь из первичной памяти выталкиваются страницы (сегменты), принадлежащие группам с меньшими номерами.

Учет времени, в течение которого к страницам (сегментам) не было обращений, осуществляется периодическим сбрасыванием в 0 всех битов-признаков, выполняемым операционной системой.

Практически любая стратегия выталкивания страниц (сегментов) не исключает опасности нерациональных решений. Это объясняется тем, операционная система не может точно прогнозировать будущее поведение любого из процессов, поступивших к ней на обработку.

Контрольные вопросы

1. Часто единственным достоинством виртуальной памяти называют возможность обеспечить для процесса объем виртуального адресного пространства, превышающий объем реальной памяти. Назовите другие достоинства виртуальной памяти.

2. В чем достоинства и недостатки преобразования виртуальных адресов в реальные во время выполнения программы? Какая часть работы по этому преобразованию выполняется аппаратным обеспечением, а какая - ОС?

3. Иногда считают, что виртуальная память может быть обеспечена только в системах с аппаратной поддержкой динамической трансляции адреса. Докажите, что это не так.

4. Почему при поиске свободной памяти стратегия "самый подходящий" оказывается хуже, чем "первый подходящий".

5. Сравните сегментную и страничную модели виртуальной памяти. Какая из них представляется Вам лучшей и почему?

6. Дополните приведенные в разделе 3.5. соображения по поводу выбора размера страницы.

7. Смоделируйте ситуацию применения дисциплины вытеснения FCFS, в которой увеличение числа реальных страниц приведет к увеличению числа страничных отказов.

8. Что такое кластерная подкачка страниц? Почему в современных ОС она становится все более популярной?

9. Каким образом ОС может определять, к каким страницам будут обращения в ближайшее время?

10. Большой размер виртуальной памяти процесса может приводить к тому, что даже таблица страниц не будет помещаться в реальной памяти. Какими путями решается эта проблема в современных ОС?

11. Каким образом снижение стоимости памяти влияет на дисциплины управления памятью?

12. Какие принципиальные изменения в концепции памяти может повлечь за собой увеличение разрядности адреса?

 

 

Это интересно: