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


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

> Я знаю, как работает защитная страницы, вопрос был "почему стек просто не коммитят?".

Чтобы память зря не тратить. Незакоммиченая страница отнимает кусочек адресного пространства _процесса_. Закоммиченая - отнимает физическую память (ну или кусок свопфайла) у _системы_.

> > > Нету дальних указателей. Нету. Это _малая_ модель.
> > Специально для тебя абисняю: _малая_ модель - это когда _и_стек _и_данные лежат в _одном_ сегменте. Вот тогда можно в основном обходиться near указателями. Раздельные сегменты стека и данных - это compact или large - в зависимости от количества сегментов кода.
> Объснение принято, но дальних указателей всё равно нет :)

Блин, я устал уже просить показать на пальцах, как функция, получающая на входе near указатель на некий буфер будет определять, где именно этот буфер лежит - в стеке или в сегменте данных? Как ей к нему обращаться - через SS или через DS?
Вот к примеру классический memset(ptr, 0, sizeof(struct)). Ну получил он 32-битный near указатель ptr. Какую память он должен обнулять - SS:ptr или DS:ptr ?


Fri 15 Jun 2007 20:35 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.