-
Notifications
You must be signed in to change notification settings - Fork 1
1. Виртуальная память: распределение памяти страницами по запросам, свойство локальности, рабочее множество, анализ страничного поведения процессов. Схема страничного преобразования в процессорах Intel (X86) PAE – размеры таблиц дескрипторов.
Стали делить память на страницы. Можно выполнить программу, которая находится не целиком в памяти. Для этого нужно содержать части кода с которыми в текущий момент работает процессор. Это воплотилось в понятие виртуальная память.
Виртуальная память – память, размер которой превышает размер реального физического пространства.
Существуют три схемы управления виртуальной памятью:
- управление памятью страницами по запросам;
- управление память сегментами по запросам;
- управление памятью сегментами, делёнными на страницы, по запросам.
Загрузка частей программы в память выполняется по запросу. Т.е. соответствие части кода загружаемого по запросу, когда процессор обращается к этим частям кода. Если в памяти отсутствует страница к которой было произведено обращение, то произойдет исключение.
Адресное пространство процесса и адресное пространство физической памяти делится на блоки равного размера. Блоки, на которые делится адресное пространство процесса называют страницами, а блоки на которые делится физическая память – кадрами, фреймами или блоками.
Виртуальный адрес состоит из номера страницы и смещения страницы.
При выполнении программы, которая находится не целиком в памяти, процесс потребует страницу, которой нет в оперативной памяти - возникнет исключение (страничная неудача - исправимое исключение), которое будет обработано в режиме ядра. В результате менеджер памяти попытается загрузить страницу в свободную память, а процесс на это время будет заблокирован. По завершении работы менеджера памяти страница будет загружена и процесс будет продолжать выполнятся с той команды на которой возникло исключение. Если свободная страница в физической памяти отсутствует то менеджер памяти должен выбрать страницу для замещения.
Если обращение было к странице, то наиболее вероятно, что следующее обращение будет к этой же странице.
Обслуживание страничных прерываний - важная проблема. Для её решения была сформулирована идея рабочего множества, а именно зависимость количества страничных прерываний от объёма памяти. Это обобщённая мера статичного поведения программы.
Обращение процесса к странице не является стабильным и равномерным. В качестве локальной меры производительности принимается число страниц, к которым обращался процесс за интервал времени delta(d), который был назван working set - рабочее множество.
Размер рабочего множества W является монотонной функцией от delta(t), то есть при увеличении delta(t) число страниц, к которому обращается процесс, будет стремиться к некоторому пределу, который и будет определять оптимальное количество страниц для выполнения программы.
В случае, если страницу загрузить не удалось, возникает trashing - подкачка одних и тез же страниц.
За время своей жизни процесс меняет свои рабочие множества.
hit rate - доля обращений, не потребовавших смены страницы.
Ниже предоставлен график зависимости интервала между обращениями к отсутствующей страницы за время жизни процесса.
Система может контролировать количество страничных прерываний. Если оно резко возросло, то это означает, что рабочее множество не может быть загружено в память. Таким образом, требуется увеличить размер квоты (выделенное изначально процессу количество страниц) на непродолжительный интервал времени.
Начиная с Pentium Pro был включен регистр CR4, где 5-ый бит - это PAE (Physical Adress Extension) - расширение физического адреса.
Если PAE = 1, то разрешено использование расширенного 36-разрядного, вместо 32-разрядного, физического адреса. При этом физический адрес остается 32-разярдным, все изменения касаются только работы страничного механизма.
2. Прерывания от системного таймера в защищенном режиме: функции (по материалам лабораторной работы).
На консультации она говорила, что UNIX/Windows работают в Long mode'e и типа это не защищенный режим, но тут написано "по материалам лабораторной работы"... Ничего не понятно....
По тику:
- инкрементирует счетчик тиков аппаратного таймера;
- декременирует квант текущего потока;
- обновляет статистику использования процессора текущим процессом — инкремент поля
c_cpuдескриптора текущего процесса до максимального значения 127; - инкрементирует счетчики часов и других таймеров системы;
- декрементирует счетчик времени до отправления на выполнение отложенного вызова (если счетчик достиг нуля, то выставление флага для обработчика отложенного вызова).
По главному тику:
- регистрирует отложенные вызовы функций, относящиеся к работе планировщика, такие как пересчет приоритетов;
- пробуждает в нужные моменты системные процессы, такие как
swapperиpagedaemon. Под пробуждением понимается регистрация отложенного вызова процедурыwakeup, которая перемещает дескрипторы процессов из списка "спящих" в очередь готовых к выполнению. - декрементирует счётчик времени, оставшегося времени до посылки одного из следующих сигналов:
-
SIGALRM– сигнал, посылаемый процессу по истечении времени, предварительно заданного функциейalarm(); -
SIGPROF– сигнал, посылаемый процессу по истечении времени заданного в таймере профилирования; -
SIGVTALRM– сигнал, посылаемый процессу по истечении времени, заданного в "виртуальном" таймере.
-
По кванту:
- посылает текущему процессу сигнал
SIGXCPU, если тот превысил выделенную ему квоту использования процессора.
По тику:
- инкрементирует счётчик системного времени;
- декрементирует квант текущего потока на величину, равную количеству тактов процессора, произошедших за тик (если количество затраченных потоком тактов процессора достигает квантовой цели, запускается обработка истечения кванта);
- декрементирует счетчики времени отложенных задач;
- если активен механизм профилирования ядра, инициализирует отложенный вызов обработчика ловушки профилирования ядра путем постановки объекта в очередь DPC: обработчик ловушки профилирования регистрирует адрес команды, выполнявшейся на момент прерывания.
По главному тику:
- освобождает объект "событие", который ожидает диспетчер настройки баланса.
По кванту:
- инициализирует диспетчеризацию потоков путем постановки соответствующего объекта в очередь
DPC.



