RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Следующий шаг. Немного конкретики.


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : LightElf
To : Василий А. Сидоров
Subj : Следующий шаг. Немного конкретики.

> > > > > Хочется понять: если "это" не защита от переполнения стека, то что?
> > > > Это именно такой ограниченный вариант lazy commit, распространяющийся только на стек.
> > > Зачем в этой схеме защитная страница? Чтобы менеджер памяти не запоминал диапазоны адресов стеков?
> > Наверно чтобы не получить разорванный на куски (коммичено/некоммичено) стек.
> Прежний вопрос - зачем?
> Если я не отстал от жизни, то у процессора нет такого исключения "page guard". Есть "page fault".
> Так зачем, всё-таки, в случае стека решили порезаться о бритву?

guard page - это не обязательно стек. Можно в принципе на любую область памяти повесить. В общем-то с guard page там что-то замутнено у них, но целью как я понял, являлось предоставление окончательного решения самому приложению. То биш просто поимели два разных софтверных исключения - для случая, когда прога лезет куда не надо (жесткий page fault) и когда лезет куда скорее всего не надо (guard page exception). Возможно опять-таки портабельность имели в виду (может у каких процов и есть два разных аппаратных исключения). Ну и в семантике PAG_RESERVE и PAG_GUARD разница есть, так как guard page на самом-то деле коммичена.

Tue 19 Jun 2007 19:12 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.3) Gecko/2003031




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.