Перехват исключений модулем ядра
Возникла следующая проблема-необходимо из написанного модуля ядра перехватывать все исключения,которые возникают в user-modовской программе.как это реализовать.Нужно именно из модуля ядра перехватывать.
Хелп, уже очень долго роюсь,не могу найти ответ на свой вопрос!
Вопрос 2 ,может кто знает
Существует в Линуксе понятие невыделенной (non-paged) памяти? Необходимо пометить некоторые участки адресного пространства user-modовской программы как невыделенные,т.е. отсутствующие,я хз как лучше перевести)
Буду рад ссылкам на инфу)
Прежде чем задавать подобные вопросы, избавьтесь от каши в голове, воспользуясь хотябы словарем, дабы осознать, что есть эта ваша "невыделенная" и non-paged память, и чем они различаются.
А вы бы лучше ссылку на статью дали, если располагаете информацией.
Честно говоря, интересует больше ответ на первый вопрос, про перехват исключений, со вторым я думаю и сам справлюсь когда-нибудь=)
User-modовская программа очень маленькая,она уместится в одну страницу памяти.Из этой мини-программки модулю ядра шлется ID. и дальше драйвер занимается преобразованием адресного пространства этой мини-програмки.Он помечает всю память адресного пространства мини-програмки как non-paged (или аналог) ,страницу ,где содержится код программы помечаем как read-and-executable.
Таким образом при любом обращении к памяти из этой мини-програмки возникает исключение,которое я должен перехватить из моего модуля ядра.
Дальше модуль ядра записывает данные по ячейке, в которую происходило обращение,выделяет страницу памяти и перезапускает последнюю инструкцию,чтобы она корректно выполнилась.
В общем алгоритм выполнения нужен именно такой.
С учетом пояснений предметной области,может кто-то чего-то подскажет=)
Paged memory - подкачиваемая память, т.е. участок виртуальной памяти для которого физические страницы могут отсутствовать и будут выделенны и заполнены данными из файла подкачки или иным образом при необходимости в результате страничного исключкения.
Non-paged memory - не подкачивавемая память, т.е участок виртуальной памяти для которого всегда присутствуют страницы физической памяти и этот участок принципиально не должен вызывать отказы страниц.
PS: Остальные лекции по внутреннему устройству операционных систем - платные. Ибо судя по всему вы хотите чтобы вам все разжевали, а тема объемная, требующая времени, а время это деньги.