Как записать страницу ссылки на страницу процесса? - PullRequest
1 голос
/ 07 марта 2012

Вопрос по операционной системе:

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

Я думал, что мы можем записать страницу в строку каждый раз, когда она должна быть загружена в TLB, но тогда моя ОС не сможет отслеживать порядок ссылок (и количество ссылок) на каждую страницу в TLB, если как-то каждый доступ к памяти я мог проверить TLB. В целом я нахожу проблему немного запутанной ...

Предположим, что каждая запись таблицы страниц имеет размер 64 бита, 20 бит для виртуальной страницы и 20 бит для соответствующего физического кадра. Пара битов - это статус / привилегия, но есть несколько «свободных» битов для работы.

Спасибо.

РЕДАКТИРОВАТЬ - пример: если операционная система имеет размеры страниц 1000, и процесс обращается к некоторым адресам, таким как 1234, 5660, 1220, 7442, ..., тогда строка ссылки на страницу будет выглядеть как 1,5,1, 7, ...

1 Ответ

1 голос
/ 07 марта 2012

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

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

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