11519

Распределение памяти в Windows

Лабораторная работа

Информатика, кибернетика и программирование

Практическая работа №11 Тема: Распределение памяти в Windows Цель работы: изучение распределения адресного пространства в ОС Windows 2000/XP Теоретические сведения В операционной системе используется плоская модель памяти. Все системные программные модули находятся в с...

Русский

2013-04-08

136 KB

41 чел.

Практическая работа №11

Тема: «Распределение памяти в Windows»

Цель работы: изучение распределения адресного пространства в ОС Windows 2000/XP

Теоретические сведения

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

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

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

Логическое распределение адресных пространств Windows NT

Прикладным программам выделяется 2 Гбайт локального (собственного) линейного (неструктурированного) адресного пространства от границы 64 Кбайт до 2 Гбайт (первые 64 Кбайт полностью недоступны). Прикладные программы изолированы друг от друга, хотя могут общаться через буфер обмена (clipboard), механизмы DDE (Dynamic Data Exchange -динамический обмен данными) и OLE (Object Linking and Embedding - связывание и внедрение объектов).

В верхней части каждой области прикладной программы размером по 2 Гбайт размещён код системных библиотек DLL кольца защиты 3, который перенаправляет вызовы в совершенно изолированное адресное пространство, где содержится уже собственно системный код. Этот системный код, выступающий как серверный процесс (server process), проверяет значения параметров, исполняет запрошенную функцию и пересылает результаты назад в адресное пространство прикладной программы. Хотя серверный процесс сам по себе остаётся процессом прикладного уровня, он полностью защищен от вызывающей его прикладной программы и изолирован от неё.

Между отметками 2 и 4 Гбайт расположены низкоуровневые системные компоненты Windows NT кольца защиты 0, в том числе ядро, планировщик потоков и диспетчер виртуальной памяти. Системные страницы в этой области наделены привилегиями супервизора, которые задаются физическими схемами колец защиты процессора. Это делает низкоуровневый системный код невидимым и недоступным по записи для программ прикладного уровня, но приводит к падению производительности из-за переходов между кольцами.

Для 16-разрядных прикладных Windows-программ операционные системы типа Windows NT реализуют сеансы Windows on Windows (WOW). В отличие от Windows 9x, системы Windows NT даёт возможность выполнять 16-разрядные Windows-программы индивидуально в собственных пространствах памяти или совместно в разделяемом адресном пространстве. Почти во всех случаях 16- и 32-разрядные прикладные Windows-программы могут свободно взаимодействовать, используя механизм OLE, независимо от того, выполняются они в отдельной или общей памяти. Собственные прикладные программы и сеансы WOW выполняются в режиме вытесняющей многозадачности, основанной на управлении отдельными потоками. Несколько 16-разрядных прикладных Windows-программ в одном сеансе WOW выполняются в соответствии с кооперативной моделью многозадачности. Windows NT может открыть в многозадачном режиме несколько сеансов DOS. Поскольку Windows NT имеет полностью 32-разрядную архитектуру, не существует теоретических ограничений на ресурсы компонентов GDI (Grafical Device Interface -графический интерфейс устройства) и User.

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

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

Процессами выделения памяти, её резервирования, освобождения и замещения страниц управляет диспетчер виртуальной памяти (Virtual Memory Manager, VMM) Windows NT. В своей работе этот компонент реализует сложную стратегию учёта требований к коду и данным процесса для минимизации обращений к диску, поскольку реализация виртуальной памяти часто приводит к большому количеству дисковых операций. Для взаимодействия между выполняющимися приложениями и между приложениями и кодом самой операционной системы используются соответствующие механизмы защиты памяти, поддерживаемые аппаратурой микропроцессора.

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

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

Диспетчер виртуальной памяти может быстро и относительно легко удовлетворить программные прерывания типа страничной ошибки (page fault). Аппаратные прерывания типа страничной ошибки приводят к необходимости подкачки нужных страниц (paging), что снижает производительность системы. В Windows NT для замещения страниц выбрана дисциплина FIFO.

Когда процесс использует код или данные, находящиеся в физической памяти, система резервирует место для этой страницы в файле подкачки Pagefile.sys на диске. Это делается с расчётом на то, что данные потребуется выгрузить на диск. Файл Pagefile.sys представляет собой зарезервированный блок дискового пространства, который используется для выгрузки страниц, помеченных как «грязные», для освобождения физической памяти. Этот файл может быть непрерывным или фрагментированным; он может быть расположен на системном диске или любом другом или даже на нескольких дисках. Размер этого страничного файла ограничивается объёмом данных, которые могут храниться во внешней памяти при использовании механизмов виртуальной памяти. По умолчанию размер файла подкачки в ОС Windows NT 4.0 устанавливается равным объёму физической памяти плюс 12 Мбайт. В системах Windows 2000/XP начальный размер страничного файла подкачки берётся равным полуторакратному объёму физической оперативной памяти. Проблема нехватки виртуальной памяти часто может быть решена за счёт увеличения размера файла подкачки. Файл подкачки может быть не один - система поддерживает 16 файлов подкачки, поэтому лучше создавать их несколько и разместить на быстрых жестких дисках.

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

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

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

Вся виртуальная память подразделяется на зарезервированную (reserved), выделенную (committed) и доступную (available).

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

Память выделена, если диспетчер виртуальной памяти резервирует для неё место в файле Pagefile.sys на тот случай, когда потребуется выгрузить содержимое памяти на диск. Объём выделенной памяти процесса характеризует фактически потребляемый им объём памяти. Выделенная память ограничивается размером файла подкачки. Предельный объём выделенной памяти в системе (commit limit) определяется тем, какой объём памяти можно выделить процессам без увеличения размеров файла подкачки. Если б системе достаточно дискового пространства, то файл подкачки может быть увеличен, тем самым будет расширен предельный объём выделенной памяти.

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

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

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

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

Если объем оперативной памяти компьютера не очень велик (по современным понятиям — не превосходит 512 Мбайт), а активны несколько приложений одновременно, разместить все данные в оперативной памяти не удается. В результате начинается энергичный обмен данным между файлом, представляющим виртуальную память («файлом подкачки»), и оперативной памятью. Почти каждое действие программы может потребовать обмена с диском, и в итоге эффективность работы компьютера заметно падает.

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

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

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

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

Освобождение пространства в оперативной памяти

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

Модуль RAM Optimizer активизируют щелчком на кнопке RAM Optimizer в окне программы TweakNow PowerPack. В открывшемся окне нажмите кнопку Enable RAM Optimizer (Включить оптимизацию памяти). На панели индикации появится значок, на котором показан текущий объем свободной оперативной памяти.

Базовые параметры программы задают на вкладке General (Общие) в окне RAM Optimizer. Этих параметров два: целевой объем свободной памяти (Target free RAM) и минимальный объем свободной памяти (Minimum free RAM). Необходимые значения выбираются при помощи движков.

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

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

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

Для дополнительной настройки программы выберите в окне RAM Optimizer вкладку Advanced (Дополнительно). Если флажок Start RAM Idle Automatically at Windows Startup (Запускать средство оптимизации памяти при старте Windows) установлен, модуль оптимизации памяти активируется при каждой загрузке системы.

Параметры режима периодической автоматической активации программы задают в строках Recover ... MB of RAM on startup after ... seconds (Освободить... Мбайт памяти через ... секунд после загрузки) и Free up... MB every... minutes if free RAM below... % (Освобождать... Мбайт памяти каждые ... минут, если свободно менее ... % памяти). В большинстве случаев для этих параметров следует оставить значения, заданные по умолчанию.

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

Если на компьютере используется подобная программа, установите флажок Disable CPU usage detection (Отключить определение загрузки процессора). Тогда модуль активируется независимо от степени загрузки процессора.

Вид значка на панели индикации настраивают на вкладке Tray Icon (Значок панели индикации). По умолчанию в значке отображается объем свободной оперативной памяти и индикатор, показывающий состояние программы: зеленый, когда программа пассивна, и желтый, когда выполняется очистка памяти. Выберите цвет надписи, наиболее подходящий к текущей цветовой схеме. Установка флажка Hide RAM Idle Tray icon (Скрыть значок панели индикации) отключает отображение значка.

Значок, отображаемый на панели индикации, позволяет выполнять ряд операций через его контекстное меню. Кроме доступа к общесистемным операциям (перезагрузка системы или очистка буфера обмена), это меню позволяет освободить заданный объем оперативной памяти с помощью команд Free up ... MB (Освободить ... Мбайт). Величину освобождаемого объема настраивают на вкладке Popup Menu (Контекстное меню), где задают нужные значения с помощью счетчиков.

Работой средства очистки памяти можно управлять с помощью клавиатурных команд. По умолчанию подобные клавиатурные комбинации не предусмотрены, но для их задания предназначена вкладка Others (Другие). Укажите символ, используемый для заданий клавиатурных комбинаций Free Up RAM (Максимально высвободить память) и Disable/enable RAM Idle (Отключить/включить модуль).

Создание специальных ярлыков

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

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

  1.  В окне программы TweakNow PowerPack щелкните на ссылке TweakNow Shortcut (Ярлык TweakNow) — откроется одноименное диалоговое окно.
  2.  В поле Application Name (Имя приложения) указывают имя запускаемого приложения. Этот текст используется как подпись под ярлыком.
  3.  В поле Application Path (Путь доступа) задайте команду запуска приложения. Сформировать эту команду помогает кнопка Browse (Обзор).
  4.  В поле Parameters (Параметры) введите параметры, командной строки, нужные при запуске программы. Не указывайте эти параметры в поле Application Path (Путь доступа).
  5.  В раскрывающемся списке Create shortcut in (Создать в папке) выберите папку, в которую следует поместить ярлык.
  6.  Если необходимо, выберите приоритет для запускаемой программы в поле Application Priority (Приоритет приложения). По умолчанию операционная система назначает всем программам один и тот же обычный приоритет.
  7.  С помощью движка Recover RAM (Освободить память) укажите объем оперативной памяти, который следует освободить перед запуском приложения.
  8.  Нажмите кнопку Create TweakNow Shortcut - ярлык с указанными параметрами будет создан в выбранной папке. При этом окно TweakNow Shortcut автоматически не закрывается — нажмите закрывающую кнопку.

Задание:

  1.  Изучить теоретический материал
  2.  Нарисовать схему логического распределения адресных пространств Windows 2000
  3.  Установить программу TweakNow PowerPack.
  4.  Изучить интерфейс программы TweakNow PowerPack
  5.  Оптимизировать работу оперативной памяти
  6.  Создать ярлык освобождающий оперативную память

Содержание отчета:

  1.  Название практической работы.
  2.  Цель работы.
  3.  Задание к работе.
  4.  Результаты выполнения работы.

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

  1.  Что такое виртуальная память?
  2.  Какие виды организации виртуальной памяти вам известны?
  3.  Как распределяется память в Windows?
  4.  Что такое файл подкачки? Когда он используется?

PAGE  1


 

А также другие работы, которые могут Вас заинтересовать

77328. IMPROVING THE DEVELOPMENT OF VISUALIZATION SOFTWARE 30.5 KB
  Visuliztion helps to interpret results of vrious stges of clcultions. However there is problem of developing of visuliztion tools exist. To explin tht let’s see which types of visuliztion tools re: Universl visuliztion systems cpble to disply visul objects of vrious clsses.
77330. Возможности оценки сложности параллельного программирования 71.5 KB
  Утверждение о том, что параллельное программирование сложно, стало общим местом в соответствующей специальной литературе еще с 80-ых годов XX века. Вместе с тем, необходимо разобраться, чем же оно сложно и как в этом плане соотносятся различные парадигмы параллельного программирования. Анализ сложности программирования полезен
77331. Веб-система визуализации, анализа и мониторинга работы программ 39.5 KB
  Визуализация процесса и параметров работы программ представляет известный интерес для разработчиков этих программ. В научном плане эти вопросы изучает область визуализация программного обеспечения которая особенно активно развивается на западе. Система предназначена для визуализации анализа и мониторинга работы программных комплексов включая и параллельные программы.
77332. EXECUTION TRACE VISUALIZATION FOR PARALLEL PROGRAMS 26.5 KB
  There re mny interesting systems bsed on execution trce visuliztion. In the report s the review of existing decisions s new pproches to development of execution trce visuliztion will be considered. However the min problem tht occurs when you develop trce visuliztion system is the huge nd evergrowing volume of dt to be nlyzed.
77334. «Хороший» интерфейс на основе жестов для манипулирования 3D-объектами и метод автоматической калибровки оптических камер 38 KB
  Интерфейс фонарика Поскольку любой манипулятор ограничивает набор возможных взаимодействий от него следует отказаться и осуществлять пользовательский ввод при помощи трёхмерных жестов. Данное устройство обладая шестью степенями свободы позволяет осуществлять ввод трёхмерных жестов являясь при этом простым в установке и использовании. В качестве дешёвого манипулятора для ввода трёхмерных жестов был выбран обыкновенный карманный фонарик.
77336. ИНТЕРВЬЮ КАК МЕТОД ИССЛЕДОВАНИЯ ЭФФЕКТА ПРИСУТСТВИЯ В СРЕДАХ ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ 37.66 KB
  Статья посвящена опыту разработки метода исследования переживания эффекта присутствия в средах виртуальной реальности. Ключевые слова: виртуальная реальность; эффект присутствия. Наша работа посвящена исследованию эффекта присутствия основного фактора во многом определяющего виртуальную реальность и отличающего ее от традиционной объемной компьютерной графики.