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


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

> > Все вышеперечисленное никак не дает обоснования необходимости помещения стека в отдельный сегмент. Ну получил GP вместо PF - чем оно лучше?
> Тем, что можно обработать в нитке с "неиспорченным" стеком :)

Exception обрабатывается в той же самой нитке, в которой и произошел. По крайней мере я не слышал, чтобы где-то было сделано по-другому. А сторожевая страница в стеке как раз и нужна обработчику exception. Т.к. guard page на самом деле коммичена, но сделана недоступной из процесса. Происходит исключение, кернельный exception handler либо коммитит дополнительную страницу в стек (если есть куда), либо снимает с guard page защиту и вызывает exception handler самого приложения. Хендлер таким макаром имеет 4 кб стека, что более чем достаточно.
Такой вариант портабелен на другие архитектуры (в отличие от сегментов), не требует извратных компиляторов, far-указателей и тридцати трех реализаций одной функции.

Tue 26 Jun 2007 12: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.