Алгоритм перезагрузки TLB системы Mach предлагал решение общей проблемы синхронизации буферов TLB. Разработчики попытались добиться максимальной эффективности его функционирования, которую можно достичь без изменения аппаратных характеристик систем (единственным требованием методики является поддержка межпроцессорных прерываний) или причин наступления события, следствием которого является необходимость перезагрузки TLB.
Также вам может показаться, что такая тема как http://filmograd.net/melodramy/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт filmograd.net. Тема лучшие мелодрамы о любви там представлена весьма широко. На том сайте можно узнать много интересного на тему лучшие мелодрамы о любви. Что означает вообще тема лучшие мелодрамы о любви, где найти лучшие мелодрамы о любви - про это написано на сайте filmograd.net. Это очень важная для многих людей тема - лучшие мелодрамы о любви. Спасибо сайту filmograd.net за информацию на тему лучшие мелодрамы о любви.
В системе SVR4/MP применяется несколько другой подход к решению проблемы. Система пытается анализировать событие, обусловившее недействительность TLB, и найти наиболее удачный метод его обработки. В этой ОС существуют четыре типа событий, требующих синхронизации буферов TLB:
♦ процесс изменяет размер своего адресного пространства путем вызова brk (или sbrk), либо при освобождении области памяти;
♦ демон pagedaemon сбрасывает корректность страницы или с целью ее освобождения, или для имитации битов ссылки;
♦ ядро отображает системный виртуальный адрес в другую физическую страницу;
♦ процесс пытается произвести запись в страницу, разделяемую по методу копирования при записи.
В системе SVR4/MP аппаратура машины автоматически сбрасывает TLB при каждом переключении контекста [15]. Следовательно, случай первого типа событий не представляет никакой проблемы, поскольку система не поддерживает многонитевые процессы. Операционная система SVR4/MP обладает средствами оптимизации случаев 2 и 3.
Для уменьшения числа одиночных сбросов вхождений TLB во втором случае демон pagedaemon накапливает несколько таких заданий и производит их одной операцией. Это позволяет уменьшить затраты, связанные со сбросом каждого элемента в отдельности.
Основным «поставщиком» операций сброса корректности TLB в SVR4 является драйвер seg_map, используемый при вызовах read или write. Ядро реализует эти вызовы при помощи создания отображения файла в собственном адресном пространстве и последующего копирования данных прикладному процессу. Ядро управляет сегментом seg_map, позволяющим динамически подключать и отключать страницы файлов в адресном пространстве. Это приводит к частому изменению физических отображений виртуальных адресов сегмента. Так как ядро разделяется между всеми процессами системы, именно оно ответственно за корректность отображений. Процессы не должны обращаться к уже устаревшим отображениям, хранящимся в TLB других процессоров системы.
Для отслеживания устаревших вхождений TLB ядро системы SVR4/MP поддерживает глобальный счетчик (generation count), а также набор локальных счетчиков (по одному на каждый процессор). После сброса процессором информации буфера TLB происходит увеличение глобального счетчика и копирование его нового значения в локальный счетчик. При освобождении отображения страницы драйвером seg_map ядро передает адресу значение глобального счетчика. Если драйвер отображает по этому адресу новую физическую страницу, ядро сравнивает сохраненное содержимое счетчика со значением локального счетчика каждого процессора. Если величина локального счетчика окажется ниже по сравнению с сохраненным значением, можно сделать вывод, что буфер TLB содержит устаревшие данные. В этом случае ядро объявляет недействительным весь буфер TLB. В противоположном случае можно сделать вывод о том, что все процессоры обновили информацию TLB после сброса корректности адреса, таким образом, для рассматриваемой страницы не осталось устаревших отображений.
Разработчики SVR4/MP в целях оптимального решения проблемы исходили из того, что после сброса корректности seg_map ядро не сможет обратиться к соответствующему адресу до тех пор, пока по нему не будет создано отображение нового физического адреса. С целью минимизации операций сброса корректности TLB страницы, освобождаемые seg_map повторно используются в порядке FIFO. Это позволяет удлинить промежуток времени между освобождением адреса и созданием нового отображения, что также увеличивает и вероятность сброса буферов TLB другими процессами за этот период.
Операционная система SVR4.2/MP представляет собой многонитевую версию SVR4.2, поддерживающую многопроцессорную обработку. Правила перезагрузки TLB и их реализация в системе обладают определенными сходствами со средствами SVR4/MP, описанными в разделе 15.11.1, однако они отличаются от предыдущей версии и некоторыми важными дополнениями. Все взаимодействия с буфером TLB перенесены в системе на аппаратно-зависимый уровень НАТ (см. раздел 14.4). При разработке SVR4.2/MP основной задачей был перенос ОС на архитектуру Intel 386/486, однако алгоритмы поддержания корректности TLB и интерфейсы взаимодействия с ними легко портируются и на другие аппаратные платформы.
Опубликовал katy
June 23 2015 06:14:06 ·
0 Комментариев ·
3938 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.