Управление внешней памятью в ос windows управление базовыми и динамическими дисками

Обновлено: 07.07.2024

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

В ранних ОС управление памятью сводилось просто к загрузке программы и ее данных из некоторого внешнего накопителя (перфоленты, магнитной ленты или магнитного диска) в ОЗУ . При этом память разделялась между программой и ОС. На рис. 6.3 показаны три варианта такой схемы. Первая модель раньше применялась на мэйнфреймах и мини-компьютерах. Вторая схема сейчас используется на некоторых карманных компьютерах и встроенных системах, третья модель была характерна для ранних персональных компьютеров с MS-DOS .

 Варианты распределения памяти

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

Функциями ОС по управлению памятью в мультипрограммных системах являются:

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

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

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

Типы адресов

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

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

Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Диапазон адресов виртуального пространства у всех процессов один и тот же и определяется разрядностью адреса процессора (для Pentium адресное пространство составляет объем, равный 2 32 байт , с диапазоном адресов от 0000.000016 до FFFF.FFFF16).

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

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

6.3. Распределение памяти

Существует ряд базовых вопросов управления памятью, которые в различных ОС решаются по -разному. Например, следует ли назначать каждому процессу одну непрерывную область физической памяти или можно выделять память участками? Должны ли сегменты программы, загруженные в память , находиться на одном месте в течение всего периода выполнения процесса или их можно время от времени сдвигать? Что делать, если сегменты программы не помещаются в имеющуюся память ? Как сократить затраты ресурсов системы на управление памятью ? Имеется и ряд других не менее интересных проблем управления памятью [5, 10, 13, 17].

Ниже приводится классификация методов распределения памяти, в которой выделено два класса методов – с перемещением сегментов процессов между ОП и ВП (диском) и без перемещения, т.е. без привлечения внешней памяти (рис. 6.5). Данная классификация учитывает только основные признаки методов. Для каждого метода может быть использовано несколько различных алгоритмов его реализации.

Классификация методов распределения памяти


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

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

Варианты фиксированного распределения памяти


Рис. 6.6. Варианты фиксированного распределения памяти

При использовании разделов с одинаковым размером имеются две проблемы.

  1. Программа может быть слишком велика для размещения в разделе. В этом случае программист должен разрабатывать программу, использующую оверлеи, чтобы в любой момент времени требовался только один раздел памяти. Когда требуется модуль, отсутствующий в данный момент в ОП, пользовательская программа должна сама его загрузить в раздел памяти программы. Таким образом, в данном случае управление памятью во многом возлагается на программиста.
  2. Использование ОП крайне неэффективно. Любая программа, независимо от ее размера, занимает раздел целиком. При этом могут оставаться неиспользованные участки памяти большого размера. Этот феномен появления неиспользованной памяти называется внутренней фрагментацией (internal fragmentation).

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

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

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

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

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

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

Для преодоления сложностей, связанных с фиксированным распределением, был разработан альтернативный подход, известный как динамическое распределение. В свое время этот подход был применен фирмой IBM в операционной системе для мэйнфреймов в OS/MVT ( мультипрограммирование с переменным числом задач – Multiprogramming With a Variable number of Tasks). Позже этот же подход к распределению памяти использован в ОС ЕС ЭВМ [12] .

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

Вариант использования памяти

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

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

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

  1. Перемещение всех занятых участков в сторону старших или младших адресов при каждом завершении процесса или для вновь создаваемого процесса в случае отсутствия раздела достаточного размера.
  2. Коррекция таблиц свободных и занятых областей.
  3. Изменение адресов команд и данных, к которым обращаются процессы при их перемещении в памяти, за счет использования относительной адресации .
  4. Аппаратная поддержка процесса динамического преобразования относительных адресов в абсолютные адреса основной памяти.
  5. Защита памяти, выделяемой процессу, от взаимного влияния других процессов.

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

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

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

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

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

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

в этом разделе термин " том " используется для обозначения понятия раздела диска, отформатированного с помощью допустимой файловой системы, наиболее часто используемой файловой системой NTFS, которая используется операционной системой Windows для хранения файлов. Том имеет имя пути Win32, может быть перечислено функциями финдфирстволуме и финднекстволуме , и обычно ему назначена буква диска, например C:. Дополнительные сведения о томах и файловых системах см. в разделе файловые системы.

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

Базовые диски

Основные диски — это типы хранилищ, наиболее часто используемые с Windows. Термин базовый диск относится к диску, содержащему разделы, такие как основные разделы и логические диски, которые, в свою очередь, обычно форматируются с помощью файловой системы и становятся томом для хранилища файлов. Базовые диски предоставляют простое решение для хранения данных, которое может соответствовать удобному массиву сценариев изменения требований к хранилищу. Базовые диски также поддерживают кластеризованные диски, институты гибких и аппаратных инженеров (IEEE) 1394 и съемные носители с универсальной последовательной шиной (USB). для обеспечения обратной совместимости базовые диски обычно используют тот же стиль разделов основной загрузочной записи (MBR), что и диски, используемые операционной системой Microsoft MS-DOS, и все версии Windows но также могут поддерживать разделы таблицы разделов gpt в системах, поддерживающих эту возможность. Дополнительные сведения о стилях разделов MBR и GPT см. в разделе стили разделов .

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

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

  • Создание и удаление основных и дополнительных разделов.
  • Создание и удаление логических дисков в расширенном разделе.
  • Отформатируйте раздел и пометьте его как активный.

Динамические диски

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

Динамические диски предоставляют функции, которые не являются базовыми дисками, например возможность создания томов, охватывающих несколько дисков (составные и чередующиеся тома), а также возможность создания отказоустойчивых томов (томов с зеркальным отображением и тома RAID 5). Как и базовые диски, динамические диски могут использовать стили разделов MBR или GPT в системах, поддерживающих оба. Все тома на динамических дисках называются динамическими томами. Динамические диски обеспечивают большую гибкость в управлении томами, так как они используют базу данных для мониторинга сведений о динамических томах на диске и о других динамических дисках компьютера. Так как каждый динамический диск в компьютере хранит реплику базы данных динамического диска, например, поврежденная база данных динамического диска может восстановить один динамический диск с помощью базы данных на другом динамическом диске. Расположение базы данных определяется стилем раздела диска. В MBR-разделах база данных хранится за последние 1 мегабайт (МБ) диска. В разделах GPT база данных содержится в зарезервированной (скрытой) секции размером 1 МБ.

Динамические диски — это отдельные формы управления томами, которые позволяют томам иметь несмежные экстенты на одном или нескольких физических дисках. Динамические диски и тома зависят от диспетчера логических дисков (LDM) и службы виртуальных дисков (VDS) и связанных с ними функций. Эти функции позволяют выполнять такие задачи, как преобразование базовых дисков в динамические диски и создание отказоустойчивых томов. Чтобы обеспечить использование динамических дисков, поддержка томов с несколькими разделами была удалена с базовых дисков и теперь поддерживается исключительно на динамических дисках.

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

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

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

Независимо от того, использует ли динамические диски в системе стиль разделов MBR или GPT, можно создать до 2 000 динамических томов в системе, хотя рекомендуемое число динамических томов — 32 или меньше. Дополнительные сведения и другие рекомендации по использованию динамических дисков и томов см. в разделе динамические диски и тома.

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

Ниже перечислены операции, общие для базовых и динамических дисков.

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

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

Стили разделов

Стили секций, иногда называемые схемами секционирования, являются термином, указывающим на конкретную базовую структуру структуры диска и то, как на самом деле упорядочивается секционирование, каковы возможности, а также ограничения. для загрузки Windows для реализации BIOS на компьютерах с архитектурой x86 и x64 требуется базовый диск, который должен содержать по крайней мере один раздел основной загрузочной записи (MBR), помеченный как активный, где содержатся сведения о Windows операционной системе (но не обязательно всей установке операционной системы) и о том, где хранятся сведения о секциях на диске. Эти сведения помещаются в отдельные места, и эти два расположения могут размещаться в отдельных разделах или в одном разделе. Все остальные физические диски могут быть настроены в качестве различных сочетаний двух доступных стилей разделов, описанных в следующих разделах. Дополнительные сведения о других типах систем см. в разделе о стилях разделовTechNet.

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

основная загрузочная запись (MBR).

все компьютеры с архитектурой x86 и x64, на которых работает Windows, могут использовать стиль разделов, известный как основная загрузочная запись (MBR). Стиль раздела MBR содержит таблицу разделов, в которой содержатся сведения о том, где находятся секции на диске. поскольку MBR является единственным стилем разделов, доступным на компьютерах на базе процессоров x86 до Windows Server 2003 с пакетом обновления 1 (SP1), нет необходимости выбирать этот стиль. Он используется автоматически.

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

три основных раздела и один дополнительный раздел на базовом диске с использованием MBR

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

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

таблица разделов GUID.

в системах, где работает Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версий, в дополнение к стилю раздела MBR можно использовать стиль разделов, известный как таблица разделов guid(gpt). Базовый диск, использующий стиль разделов GPT, может иметь до 128 основных разделов, в то время как динамические диски будут иметь один раздел LDM с разделением MBR. Поскольку базовые диски, использующие секционирование GPT, не ограничивают вас четырьмя секциями, создавать расширенные разделы или логические диски не требуется.

Стиль раздела GPT также имеет следующие свойства.

  • Допускает разделы размером более 2 терабайт.
  • Добавлена надежность репликации и циклической проверки избыточности (CRC) таблицы Partition.
  • Поддержка дополнительных идентификаторов GUID типа раздела, определенных производителями оборудования (OEM), независимыми поставщиками программного обеспечения и другими операционными системами.

Схема секционирования GPT для базового диска показана на следующем рисунке.

макет GPT

Защитная область MBR существует в разметке разделов GPT для обеспечения обратной совместимости с служебными программами управления дисками, работающими с MBR. Заголовок GPT определяет диапазон адресов логических блоков, которые можно использовать в записях секций. Заголовок GPT также определяет расположение на диске, его GUID и контрольную сумму 32-битной циклической проверки избыточности (CRC32), которая используется для проверки целостности заголовка GPT. Каждая запись раздела GUID начинается с GUID типа секции. Идентификатор GUID типа секции 16 байт, АНАЛОГИЧный идентификатору системы в таблице разделов диска MBR, определяет тип данных, содержащихся в секции, и определяет способ использования раздела, например, если это базовый диск или динамический диск. Обратите внимание, что каждая запись раздела GUID имеет резервную копию.

Структура динамических дисковых разделов GPT похожа на этот базовый пример диска, но, как уже упоминалось ранее, у него есть только одна запись раздела LDM, а не 1-n основных разделов, как разрешено на базовых дисках. Кроме того, существует скрытая Секция базы данных LDM с соответствующей записью раздела GUID . Дополнительные сведения о LDM см. в разделе динамические диски .

Определение типа диска

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

Менеджер памяти - часть операционной системы, отвечающая за управление памятью.

Основные методы распределения памяти:

Без использования внешней памяти (например: HDD)

С использованием внешней памяти

6.2 Методы без использования внешней памяти

6.2.1 Однозадачная система без подкачки на диск

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

Схемы разделения памяти:

Схемы разделения памяти

Третий вариант используется в MS-DOS. Та часть, которая находится в ПЗУ, часто называется BIOS.

6.2.2 Распределение памяти с фиксированными разделами.

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

Системы могут иметь:

общую очередь ко всем разделам

к каждому разделу отдельную очередь

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

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

Алгоритмы планирования в случае одной очереди:

выбирается задача, которая максимально займет раздел

Также может быть смешанная система.

6.2.3 Распределение памяти динамическими разделами

В такой системе сначала память свободна, потом идет динамическое распределение памяти.

Распределение памяти динамическими разделами.

Перемещаемые разделы

Это один из методов борьбы с фрагментацией. Но на него уходит много времени.

Рост разделов

Иногда процессу может понадобиться больше памяти, чем предполагалось изначально.

Настройка адресов и защита памяти

В предыдущих примерах мы можем увидеть две основные проблемы.

Настройка адресов или перемещение программ в памяти

Защита адресного пространства каждой программы

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

Базовый (указывает начало адресного пространства программы)

Предельный (указывает конец адресного пространства программы)

6.3 Методы с использованием внешней памяти (свопинг и виртуальная память)

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

Основные способы использования диска:

Свопинг (подкачка) - процесс целиком загружается в память для работы

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

6.3.1 Свопинг (подкачка)

При нехватке памяти процессы могут быть выгружены на диск.

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

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

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

Этот метод был основным для UNIX до версии 3BSD.

Управление памятью с помощью битовых массивов

Вся память разбивается на блоки (например, по 32бита), массив содержит 1 или 0 (занят или незанят).

Чтобы процессу в 32Кбита занять память, нужно набрать последовательность из 1000 свободных блоков.

Такой алгоритм займет много времени.

битовые массивы и списки

Управление памятью с помощью связных списков

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

Запись в списке указывает на:

занят (P) или незанят (H) фрагмент

адрес начала фрагмента

Четыре комбинации соседей для завершения процесса X

Алгоритмы выделения блока памяти:

первый подходящий участок.

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

самый подходящий участок (медленнее, но лучше использует память).

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

6.3.2 Виртуальная память

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

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

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

Страничная организация памяти

Страничные блоки - единицы физической памяти.

Х - обозначает не отображаемую страницу в физической памяти.

Страничное прерывание - происходит, если процесс обратился к странице, которая не загружена в ОЗУ (т.е. Х). Процессор передается другому процессу, и параллельно страница загружается в память.

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

Таблица может быть размещена:

в аппаратных регистрах (преимущество: более высокое быстродействие, недостаток - стоимость)

Типичная запись в таблице страниц

Присутствие/отсутствие - загружена или незагружена в память

Защита - виды доступа, например, чтение/запись.

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

Обращение - было ли обращение к странице, если нет, то это лучший кандидат на освобождение памяти.

Информация о адресе страницы когда она хранится на диске, в таблице не размещается.

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

Страничная организация памяти используется, и в UNIX, и в Windows.

Хранение страничной памяти на диске

Статическая область свопинга

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

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

Этот механизм наиболее простой.

Статический и динамический методы организации свопинга.

Динамическая область свопинга

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

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

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

Из этого руководства по операционной системе вы узнаете:

Зачем использовать управление памятью?

Вот причины использования управления памятью:

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

Методы управления памятью

Вот некоторые наиболее важные методы управления памятью:

Одно смежное распределение

Это самый простой метод управления памятью. В этом методе все типы памяти компьютера, за исключением небольшой части, зарезервированной для ОС, доступны для одного приложения. Например, операционная система MS-DOS выделяет память таким образом. Встроенная система также работает в одном приложении.

Разделенное Распределение

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

Управление постраничной памятью

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

Управление сегментированной памятью

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

Что такое обмен?


Преимущества обмена

Вот основные преимущества / плюсы обмена:

  • Он предлагает более высокую степень мультипрограммирования.
  • Позволяет динамическое перемещение. Например, если используется привязка адреса во время выполнения, то процессы можно менять в разных местах. Иначе в случае привязки времени компиляции и загрузки процессы должны быть перемещены в одно и то же место.
  • Это помогает лучше использовать память.
  • Минимальная потеря процессорного времени при завершении, поэтому его можно легко применить к методу планирования на основе приоритетов для повышения его производительности.

Что такое распределение памяти?

Здесь основная память делится на два типа разделов

Распределение разделов

Ниже приведены различные схемы распределения разделов:

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

Что такое пейджинг?

Что такое фрагментация?

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

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

Два типа методов фрагментации:

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

Что такое сегментация?

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

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

Что такое динамическая загрузка?

Что такое динамическое связывание?

Читайте также: