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


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

> Брр... А данные мы между нитками не шарим что-ли? Или таки речь идет о своем сегменте стека для каждой нитки? Только это таки не small, а large модель (SS != DS).
Для меня smal это отдельные сегменты кода, стека и данных. Т.е. CS <> DS <> SS <> CS
Такое определение кажется мне вполне логичным :)
> > Поскольку мы :) уже отказались от (в случае x86) от "один большой" сегмент на все задачи, то отдельный сегмент сегмент позволит выделить каждой задаче столько адресного пространства, сколько необходимо, а не "не те четыре гига на всякий случай".
> А кто отказался от одного большого сегмента?
Я улыбнулся :)
> в этом и фича flat модели.
Ясен перец.
> Физически сегменты есть (на x86 их не отключишь), но они все алиасят одну область памяти.
Ясен перец.
> На x86-64 кстати сегментов еще меньше стало - только SS остался, да и то только ради того чтобы не менять сильно логику работы проца.
"Не нравится мне этот Сенкевич" :)
> А насчет столько адресного пространства, сколько надо - дык его все равно ровно 4гига. Как не режь на сегменты - больше не станет. И меньше тоже.
Новые возможности появятся.
Например разместить по одному и тому же адресу разные страницы в разных задачах и не "дёргать" таблицу этих самых страниц при переключениях между этими самыми задачами.
> 1) необходимость в компиляторе, умеющем генерить код для случая SS != DS
Ну понавставляет он префиксов там, где раньше не ставил. И что?
Ну ES надо перегружать, если строки в стек копируем. И что?
> (да и DS != CS тоже не сахар).
CS вообще должен быть execute-only :)
> 2) появление длинных/коротких указателей и соответствующие приключения, связанные с модификацией исходников при портировании
Указатель должен быть восемь байт и точка.
Для NEAR16 это будет четыре байта выравнивания два байта смещения и два байта заполнения.
Для NEAR32 - четыре байта выранивания и четыре байта смещения.
Для FAR16 - два байта выравнивания, селектор, два байта смещения и два байта заполнения.
Для FAR32 - два байта выранивания, селектор и четыре байта смещения.
> 3) необходимость в менеджере селекторов как отдельной сущности со своей (местами нетривиальной) логикой
Селекторы задача получает на момент создания. Впоследствии могут только добавляться SS-селекторы.
Ничего особо нетривиального я тут не вижу.

Thu 14 Jun 2007 15:56 Mozilla/5.0 (OS/2; U; Warp 4.5; ru-RU; rv:1.8.1.2) Gecko/200




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.