Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы. Персонализация и виртуальная память в Windows 7.pdf
Скачиваний:
37
Добавлен:
11.03.2016
Размер:
1.52 Mб
Скачать

Министерство образования и науки РФ Государственное образовательное учреждение высшего профессионального образования

Нижегородский Государственный Технический Университет им Р.Е. Алексеева

Кафедра «Информатика и системы управления»

WINDOWS 7:

ПЕРСОНАЛИЗАЦИЯ И ВИРТУАЛЬНАЯ ПАМЯТЬ

Курсовая работа по предмету «Операционные системы»

Выполнил студент группы 13-В-1 Круглов С. Д.

Проверил

Тюрин А. И.

Нижний Новгород, 2016г.

Содержание

1. Постановка задачи .................................................................................................................

2

1.1.

Цель ..................................................................................................................................

2

1.2.

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

2

1.2.1

Настройка через контекстные меню ......................................................................

2

1.2.2

Программы ...............................................................................................................

3

1.2.3

Идея виртуальной памяти .......................................................................................

4

2.

Виртуальная память в Windows 7 ......................................................................................

12

 

2.1. Менеджмент памяти в Windows 7 ...........................................................................

12

 

2.1.1 Процессы (англ. Processes)................................................................................

14

 

2.1.2

Глобальное использование памяти ..................................................................

16

 

2.1.3

Графики...............................................................................................................

18

 

2.2. Оптимизация виртуальной памяти в Windows 7....................................................

19

 

2.3. Программа-оптимизатор памяти Windows 7 ..........................................................

20

6.

Вывод ....................................................................................................................................

 

24

7.

Источники ............................................................................................................................

25

6.

Приложения..........................................................................................................................

27

 

Приложение А..........................................................................................................................

27

Страница 1 из 31

1. ПОСТАНОВКА ЗАДАЧИ

1.1. Цель

В ходе данной работы я изучил основные способы настройки и оптимизации Windows 7, но главной целью выразил исследование виртуальной памяти как концепции и реализованного в Windows 7 механизма. Весь текст являет собой моё личное сложившееся впечатление о проблеме. Большинство информации при изучении было мною переведено с англоязычных источников. При цитировании (либо дословном переводе) используется указатель на источник типа [xx]

1.2. Анализ проблемной области

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

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

1.2.1Настройка через контекстные меню

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

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

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

Страница 2 из 31

menu)]), настройка визуальных эффектов (в Windows 7 много цветовых эффектов как прозрачность, градиенты и пр, эффеков анимации, воспроизводящихся при различных действиях: сворачивание и разворачивание окон, переключение между окнами win+tab и

пр), даже настройка количества используемых ядер ЦП при запуске компьютера и тд.

1.2.2Программы

Существует множество простых программ, написанных добровольцами, позволяющих «вынести» труднодоступные, но полезные меню настройки Windows в одно окно программы, а также в автоматическом режиме вносить определённые изменения в реестр и совершать тому подобные действия. Такая утилита называется твикер (англ. tweaker) [15]. Tweak как глагол используется в англоязычной литературе как процесс настройки «под себя».

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

[англ. hard faults — обращение к файлу подкачки (англ. page file) [13] ] в секунду у различных процессов в мониторе ресурсов, загруженность ОЗУ и ЦП и тд), очистку от "мусора"

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

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

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

В разделе «Источники» представлено огромное количество способов оптимизации работы с Windows 7, но в самой работе они явно не указаны, потому что цель данной работы, как и большинство моих усилий при выполнении, заключаются в рассмотрении виртуальной памяти. Тем не менее, в ходе анализа проблемы я ознакомился с этими аспектами, почему и включил их в раздел. Хотелось бы выделить источник № [9] как

Страница 3 из 31

наиболее полно выражающий основные способы настройки системы (т.к. источники 1-12,

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

1.2.3Идея виртуальной памяти

Физическая память (англ. Physical Memory) — это физическое линейное адресное пространство (далее ФАП; англ. Physical Address Space PAS), адресующее ячейки оперативного запоминающего устройства. Такой адрес называется физическим. Каждый адрес существует в единственном экземпляре, таким образом при обращении нескольких процессов к одному физическому адресу происходит ошибка замещения и порчи данных

(проблема защиты). Так как явление фрагментации памяти в ОЗУ имеет место, а

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

Также, если ОЗУ меньше, чем позволяет адресовать разрядная сетка ЦП, то возможно обращение к несуществующим ячейкам памяти, что приведёт к краху ОС. А если произойдёт нехватка памяти, какие-то программы будут аварийно завершены.

Дэвид Уилер + Кевлин Хенни

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

Страница 4 из 31

Рисунок 1[16a]

Виртуальная память — это виртуальное (ненастоящее) линейное адресное пространство (далее ВАП; англ. Virtual Address Space VAS), адресующее оперативное запоминающее устройство (англ. Random Access Memory RAM) и файл подкачки (англ. Page File; хранит в себе страницы). Для программиста представляет собой одноуровневую оперативную память большого размера, который ограничивается только разрядностью адресной сеткой команды [16a].

Файл подкачки — это файл на физическом носителе, предназначенный для кэширования информации, которая не уместилась в ОЗУ.

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

называемые страницами (англ. Page; обычно 4кб). Кроме того, физическая память тоже разбивается на страницы того же размера (они называются фреймами от англ. Frame [17b])

— единица перемещения данных неизменна [16a]. Каждый адрес существует в нескольких экземплярах (для каждого процесса имеется своё ВАП, которому ОС задаёт в соответствие ФАП, которое не пересекается с другими процессами, — это соответствие записывается в

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

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

Страничная таблица (англ. Page Table) — это таблица,

отражающая соответствие виртуальных страниц физическим

(рис. 1). Номер виртуальной страницы в таблице не указывается, так как i-ая строка (строка — англ. Page Table Entry PTE) несёт информацию об i-ой виртуальной странице, а

именно: управляющие биты и номер физической страницы (20

бит). Примеры управляющих битов: P (1 — находится в ОЗУ

— со страницей можно работать; 0 — находится на диске [в

файле подкачки] — работать нельзя, возникает страничное прерывание), A (1 — к странице происходят обращения; 0 —

страница неактивна), W (1 — страница изменялась; 0 — страница не менялась), и т.д. Адрес

ячейки памяти в машине с 32-битной ОС имеет размер 32 бит или двойное слово, из них

Страница 5 из 31

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

а 12 младших для смещения (т.к. для адресации 4кб [страницы] нужно 12 бит — 212=4096).

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

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

При этом процесс может работать со страницей только в том случае, если она находится в ОЗУ. Если в таблице бит P отрицательный (не в ОЗУ), то возникает страничное прерывание (англ. page fault), в ходе которого ОС совершает следующие действия:

1.Выбирает в ОЗУ устаревшую страницу (выбор этот осуществляется в соответствии с действующим алгоритмом [наиболее давнее обращение; только что завершившиеся процессы; использовании теории вероятностей и пр.])

2.Если она отличается от своей версии в файле подкачки (в этом случае она называется

грязной” (англ. dirty) и значит, что она изменялась — «грязный бит» W

положительный; Ещё этот бит называют «копировать при записи» [англ. copy-on- write]), то копирует её в файл подкачки. Из файла подкачки копируется нужная страница и затирает собой место старой страницы в ОЗУ

3.Обновление информации в таблице страниц

После чего работа успешно продолжается. Такая система работы имеет название

страничного обмена или своппинга (англ. swapping).

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

31Номер страницы12|11Смещение в странице0

Принцип преобразования виртуального адреса в физический (принцип трансляции; англ. translation) показан на рис. 2:

Чтобы получить физический адрес,

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

Рисунок 2[16a]

Страница 6 из 31

Рисунок 3

Рассмотрим кратко сегментную организацию виртуальной памяти:

На рис. 3 можно видеть пример организации ВАП

(для одной программы) для 32-битной ОС Linux:

сначала идут 128 зарезервированных (в основном для ввода-вывода) Мб, к которым нельзя получить доступ;

после, идёт исходный код программы в двоичном виде

— «текст» (англ. “TEXT”); затем, сегмент с различными константами — «данные» (англ. “Data”);

после, случайный отступ (англ. “random offset”; это

[17a]

главный момент в вопросе защиты программ, потому как несанкционированный доступ к данным другого процесса усложняется); затем, сегмент со всевозможными данными программы (например, картинки), который растёт с увеличением общего размера данных по направлению увеличения адресов — «куча» (англ. “Heap”); после, сегмент с библиотеками (англ. “Libraries”), к которым могут обращаться другие программы (общие библиотеки по усмотрению программиста); затем ещё один случайный отступ; затем, стек (англ. “Stack”), который растёт по направлению уменьшения адресов (считается, что оперативная память кончилась [возникает страничное прерывание],

когда стек или куча достигают сегмента библиотек); после, снова случайный отступ и 1Гб,

зарезервированный под нужды Kernel, — программам запрещено читать или затирать эту область.

Каждая программа в Linux имеет подобное ВАП, которое потом транслируется в ФАП

(место под Kernel занимает 1Гб и все программы в своих ВАП ссылаются на него, когда остальные сегменты существуют в ОЗУ в нескольких экземплярах, некоторые из которых могут быть общими между несколькими или всеми процессами). Некоторые библиотеки могут быть сразу в нескольких ВАП, например, окно сохранения файла часто используется многими программами и все они ссылаются на одну и ту же библиотеку [17a]. Это касается проблемы защиты программ.

Сегментная организация ВП более удовлетворяет принципу объектно-

ориентированного программирования, в отличие от линейного адресного пространства страничной организации, однако имеет место фрагментация сегментов, более медленная трансляция адресов (номер сегмента и смещение; при чём для программиста адрес тоже двумерный, когда в страничной организации адрес в двумерный преобразовывается системой) и более трудоёмкий сегментный обмен. В примере с Linux указана сегментно-

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

Страница 7 из 31

виртуального адреса в физический. В этом случае логический адрес состоит из трех полей:

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

связывающая номер сегмента с таблицей страниц, и отдельная таблица страниц для каждого сегмента [16b].

Таблицы страниц, а также сами страницы, хранятся не только в ОЗУ.

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

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

разумеется, аппаратно. Рисунок лишь

Рисунок 4[16a]

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

Использование дополнительного кэширования, например, технологии ReadyBoost

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

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

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

1.Обращение к ОЗУ за таблицей страниц

2.Трансляция (целый набор операций)

3.Обращение к ОЗУ за данными

То есть на каждое обращение к памяти, происходит фактических два обращения (при этом для каждой инструкции, в среднем, требуется 1.33 обращения к оперативной памяти)

[17a]. Этот трудоёмкий процесс необходимо оптимизировать и желательно аппаратно.

Для этого внутри микропроцессора есть блок TLB (translation lookaside buffer — буфер ассоциативной трансляции) – рис. 5, являющий собой высокоскоростную, регистровую, кэш память (доступ к ней может быть менее 1 цикла ЦП [17a] и часто может сравняться по скорости с кэшем процессора [17b]), которая хранит несколько соответствий из таблицы страниц (например, 64 строки для 4кб страниц [полная таблица содержит 1 млн PTE для 32-битной ОС] [17a]), на входы которого через элементы И подаётся номер виртуальной

Страница 8 из 31

Рисунок 5

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

(например, TLB второго уровня будет более ёмкий, но менее быстрый; один iTLB для инструкций и один dTLB для данных). Если указанного адреса там нет, то перед продолжением работы по стандартному алгоритму в блок загружается текущее страничное соответствие для ускорения следующего к нему обращения, при этом вытесняется то соответствие, к

которому было самое давнее обращение. Блок TLB

[16a] работает не по адресному принципу (когда доступ к данным в массиве базируется на номере, адресе, ячейки и поиск происходит последовательно по адресам), а по ассоциативному (когда поиск данных происходит по ассоциативным признакам, признакам опроса, при этом опрашиваются все ячейки одновременно, где внимание уделяется именно значениям ячеек), поэтому внутри блока, в

отличие от таблицы страниц, хранятся оба адреса: и виртуальный, и физический. Как было сказано выше (рис. 4), таблица страниц хранится не только в ОЗУ и на диске — в

современном компьютере имеется многоуровневая кэш-память, поэтому блок TLB может обновлять свою информацию не только из непосредственно таблицы страниц, но,

например, из кэша третьего уровня процессора.

Кэш (англ. Cache) представляет собой массив блоков. Блок (кэш-линия; англ.

Cache-line) — набор ячеек, каждая из которых может быть пронумерована индексом

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

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

объёмная и данной работы не сильно касается,

Адрес

поэтому отметим лишь основную технологию —

 

 

 

VIPT (Virtually Indexed Physically Tagged

Номер стр.

Смещение

 

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

 

 

 

 

 

 

 

 

тегируемый). Адрес разбивается, согласно

Тег

Индекс Смещение в блоке

 

 

рисунку 6.

 

 

 

 

Рисунок 6

 

 

 

 

 

Страница 9 из 31

 

 

 

 

ЦП

 

 

 

 

Схема VIPT на рис. 7. Из номера виртуальной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

страницы через TLB получается ФА, из которого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выделяется тег (отсюда Physically Tagged),

 

Виртуальный адрес

 

 

 

 

 

 

 

 

 

 

 

 

подходящий под формат данного кэша. Из индекса

 

№ Вирт. стр.

Вирт. индекс

 

 

 

 

 

 

 

 

 

 

виртуального адреса (отсюда Virtually Indexed) через

 

 

 

 

 

 

 

 

 

 

 

TLB

 

 

 

Кэш

 

 

кэш получается физический тег. Если теги из кэша и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TLB совпадают, значит данные имеются в кэше и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

необязательно обращаться к ОЗУ. В дополнение к

 

Физ. тег

 

 

 

Физ. тег

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

этому, учитываются управляющие биты: бит

 

=

 

 

 

 

 

актуальности при чтении и «грязный» бит при записи.

 

Совпадение / промах

Проверка с тегом из TLB нужна для того, чтобы

 

 

 

 

 

Рисунок 7

 

 

 

 

различать разные ВАП. Важной особенностью данной

 

 

 

 

 

 

 

 

 

технологии является то, что работа с TLB и кэшем происходит параллельно — поэтому

она является наиболее распространённой [17c, 17a].

Также, нам известно, что каждая строка в страничной таблице занимает примерно 4

байта ОЗУ (20 бит для ФА + несколько управляющих битов = примерно 32 бита), где для одной таблицы в 32-битной системе нужно около 1 млн строк (учёт по битам для ФА 220),

это 4 млн байт или 4 Мб для одной страницы. Но у каждого процесса есть своя таблица, тогда для сотни процессов в ОЗУ будет находится 400 Мб одних таблиц. Если говорить о

64-битной системе, то в этом случае одна таблица описанного выше вида будет занимать целых 254 байт (адрес 64 бита за вычетом 12-ти для смещения плюс 22 из размера страницы) или около 16 Петабайт (это при странице в 4кб; хотя её размер может достигать и 1Гб). Для решения этой проблемы существуют многоуровневые страничные таблицы

(Multi-Level Page Tables).

На рис. 8 представлена схема используемой и неиспользуемой памяти процесса. Те же

 

 

0

страничные таблицы, о которых мы говорили ранее,

 

 

 

 

 

 

 

 

 

 

являются плоскими (англ. flat) страничными таблицами.

 

Текст

 

 

 

 

 

 

Используется

 

 

 

Введём понятие объёма памяти, требующееся процессу

Данные

 

 

 

 

 

 

 

 

для выполнения своей работы — рабочий набор (англ.

 

 

 

 

 

Куча

 

 

Working set). Проблема плоских таблиц в том, что их

 

 

 

 

 

 

 

 

размер не зависит от рабочего набора, он просто

Неиспользуемые

 

 

 

выделяется статически для охвата всего ВАП — включая

 

 

 

 

терабайты памяти

 

 

 

адресацию потенциально неиспользуемого пространства.

 

 

 

 

 

 

 

 

Многоуровневые же таблицы занимают память

Используется

Стек

2

64

пропорционально размеру рабочего набора.

 

 

Рисунок 8[17b]

 

 

 

 

 

 

 

Страница 10 из 31

На рис. 9 представлена структура двухуровневой

Номер виртуальной страницы

(может быть и больше) системы таблиц. Номер

 

 

 

 

виртуальной страницы, состоящий из 20 бит,

 

 

разбивается на два 10-битных индекса: старший

 

 

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

 

 

в корневой таблице (i-ая строка в корневой таблице

 

 

содержит адрес начала i-ой таблицы второго уровня);

 

 

младший называется внутренним индексом и

 

 

определяет строку в таблице второго уровня

Корневая

Таблица 2-го

(обычная таблица). Общее количество строк во всех

таблица

уровня

таблицах второго уровня равняется количеству строк

 

Рисунок 9 [17a]

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

что большинство страниц из таблиц 2-го уровня будут указывать на неиспользуемые участки виртуальной памяти, и если вся таблица указывает на такие участки, то не имеет смысла хранить её саму и указатель на неё в корневой таблице будет нулевым. Таким образом в памяти будет рациональная корневая таблица и только необходимые, также рационального размера, таблицы второго уровня [17b].

Страница 11 из 31