Перед повторным использованием страницы ядро передает объект cookie функции hat_shootdown(), которая производит его сравнение со значениями cookie на других процессорах. Если какой-то процессор владеет cookie, более давним по сравнению со сравниваемым, это означает, что информация буфера о странице изжила себя и такой буфер является кандидатом на уничтожение.
Также вам может показаться, что такая тема как http://audioz.org.ua/811202-comedy_club_etyashchey_pohodkoy.html никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт audioz.org.ua. Тема песни камеди клаб там представлена весьма широко. На том сайте можно узнать много интересного на тему песни камеди клаб. Что означает вообще тема песни камеди клаб, где найти песни камеди клаб - про это написано на сайте audioz.org.ua. Это очень важная для многих людей тема - песни камеди клаб. Спасибо сайту audioz.org.ua за информацию на тему песни камеди клаб.
Процедура hat_shootdown() выполняется в контексте процесса-инициато- ра. Сначала она захватывает глобальный объект простой блокировки (spin lock), что гарантирует проведение в один момент времени только одной операции перезагрузки. Затем операция посылает межпроцессорное прерывание всем процессорам, обладающим устаревшим объектом cookie. После начала обработки запроса каждым процессором инициатор освобождает объект блокировки и завершает изменение отображения страницы.
Процессы обрабатывают прерывание сразу после получения, не ожидая каких-либо действий, обеспечивающих синхронизацию. Они производят сброс своих буферов TLB и продолжают после этого работу в обычном режиме. Так как инициатор выполнил изменения преобразований адресов перед началом перезагрузки, все последующие операции доступа к странице со стороны исполнителей приведут к загрузке корректного вхождения TLB. Межпроцессорное прерывание обладает наивысшим уровнем приоритета. При его обработке запрещены любые другие прерывания, так как новая операция перезагрузки, начатая в тот же промежуток времени, в состоянии повлечь взаимную блокировку.
Средства синхронизации, используемые при реализации описанного алгоритма, намного проще и эффективнее по сравнению с методикой системы Mach. Основной причиной этого является поддержка ядром системы SVR4.2/MP гарантий не обращения к некорректным страницам, не имевшихся в ОС Mach.
Незамедлительная перезагрузка
При сбросе ядром системы корректности пользовательского РТЕ необходимо произвести безотлагательную перезагрузку буферов TLB на всех процессорах, где соответствующий процесс может быть активен. Такая необходимость проистекает из-за того, что ядро не может контролировать правила доступа к памяти прикладных процессов и не гарантирует отсутствие попыток обращения к недействительным адресам с их стороны. Методика немедленной перезагрузки сложнее по сравнению с предыдущей, так как в этом случае процессам-исполнителям приходится ждать, пока инициатор завершит изменение элементов РТЕ, и только после этого заканчивать обработку прерывания.
Алгоритм синхронизации прикладных вхождений TLB в системе SVR4.2/ МР схож со своим аналогом, реализованным в Mach. Ядро использует для этой цели дополнительный счетчик синхронизации, который играет роль семафора, разделяемого между инициатором и исполнителями. Последовательность операций продемонстрирована ранее.
Если ядру нужно сбросить корректность прикладного вхождения РТЕ процессора, сначала производится блокировка структуры hat и последующее овладение глобальным объектом простой блокировки (с целью предупреждения конфликтов с другими операциями перезагрузки). Дальнейшим этапом работы ядра является отправка межпроцессорного прерывания каждому процессору, разделяющему обрабатываемое адресное пространство (для этой цели используется список процессоров, хранящийся в структуре hat). После приема прерывания исполнители переходят в ждущий цикл с выходом по условию увеличения значения счетчика синхронизации.
В тот момент, когда все исполнители переключились в состояние ожидания, инициатор проводит операцию изменения вхождений таблицы страниц и инкрементирует счетчик синхронизации. Исполнители покидают цикл ожидания, сбрасывают свои TLB и возвращаются из обработки прерывания. Последней стадией операции перезагрузки является сброс локального буфера TLB инициатором и последующее освобождение объекта блокировки и структуры hat.
Описанный алгоритм позже был оптимизирован с учетом архитектуры Intel для случая необходимости изменения инициатором сразу же нескольких вхождений РТЕ в одном адресном пространстве. Такое может происходить, к примеру, при освобождении процессом сегмента памяти. Процессор І386 имеет двухуровневую таблицу страниц, в которой таблица страниц уровня 1 содержит РТЕ для таблиц второго уровня. В случае необходимости сброса нескольких РТЕ инициатор просто-напросто объявляет недействительными соответствующие вхождения таблицы первого уровня, после чего производит инкремент счетчика синхронизации.
Такой подход позволяет исполнителям завершить свою часть операции перезагрузки и продолжить работу в нормальном режиме без необходимости ожидания завершения модификации всех элементов РТЕ инициатором. Если легковесный процесс исполнителя пытается произвести обращение к устаревшей странице, то это приведет к страничной ошибке, так как вхождение таблицы первого уровня является некорректным. Загруженный в результате этого обработчик ошибки блокируется, поскольку структура hat по-прежнему остается блокированной инициатором.
Таким образом, исполнитель не может обратиться к противоречивым преобразованиям до того времени, пока инициатор не завершит свою часть работы и не загрузит корректное отображение. Несмотря на элегантность описанного метода, он является весьма специфичным и применяется лишь в архитектуре Intel и помогает лишь в ограниченном количестве ситуаций.
Опубликовал katy
June 23 2015 06:16:37 ·
0 Комментариев ·
2783 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.