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


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

> > > Брр... А данные мы между нитками не шарим что-ли? Или таки речь идет о своем сегменте стека для каждой нитки? Только это таки не small, а large модель (SS != DS).
> > Для меня smal это отдельные сегменты кода, стека и данных. Т.е. CS <> DS <> SS <> CS
> Гм. А тады что такое для тебя large? ;)
Более одного DS :)
> А в чем собственно выгода-то? Заменить page table проще, чем развлекаться с переключением LDT.
LLDT делается только при переключении на задачу. А переключая таблицы нужно ещё и анулировать соответствующие коде. Ещё неизвестно, что хуже.
> В общем плиз, сухой остаток выгод в студию ;)
Задача _полностью_ изолирована в своих сегментах. Т.е. её образ можно перебросить на другой компьютер и начать исполнять "там", не опасаясь "вредного влияния улицы".
Разделяемая память полностью подконтрольна системы, поскольку не способа передать указатель между задачами без системного вызова.
Если какая-то задача начнёт использовать такой указатель, не поставив в известность систему - ну что ж, ей же хуже. Ей, а не всем вокруг.
> 1) префиксы не во всех командах возможны,
Насколько я помню, нельзя перекрыть только сегмент приёмник строковой команды.
Собственно префиксы требуются, если для адресации локальных данных нити (функции) не используется BP/SP :)
> да и тормозят они изрядно
Изрядно это сколько?
> 2) значительно снижаются возможности оптимизации с точки зрения register allocation.
Почему, собственно.
> 3) компилятор один фиг надо переделывать.
Его один фиг надо переделывать.
Как минимум, потому, что объектная модель должна быть свойством системы, а не компилятора.
Ну их хотелось бы, чтобы реализация класса _действительно_ скрывалась, а не как сейчас.
> Причем местами нехило.
Где например? И почему?
> Причем не один компилятор. Кто возьмется?
Пока не знаю.
> > Ну ES надо перегружать, если строки в стек копируем. И что?
> гы, а указатели все длинными становятся - это сахар?
С чего это вдруг, если единственный сегмент данных и (для каждой нити) единственный сегмент стека.
> > > (да и DS != CS тоже не сахар).
> > CS вообще должен быть execute-only :)
> Он таки execute-read на x86.
Э-э-э ... Флаг расписаный во всяких доках не работает или его просто никто не выставляет?
> И ничего не сделаешь с этим.
> > Для NEAR16 это будет четыре байта выравнивания два байта смещения и два байта заполнения.
> > Для NEAR32 - четыре байта выранивания и четыре байта смещения.
> > Для FAR16 - два байта выравнивания, селектор, два байта смещения и два байта заполнения.
> > Для FAR32 - два байта выранивания, селектор и четыре байта смещения.
> Бу-га-га. Осталось научить x86 с такими указателями работать.
Это абсолютно штатные указатели x86. То, что я расписал - всего лишь структура, в которую их _можно_ упаковать.
> А также не запутаться, где у тебя какой указатель.
Если ты не обратил внимание, то смещение всегда находится по одному и тому же смещению :) и, если старшие байты NEAR32/FAR32 равны нулю, то такие указатели можно использовать и как NEAR16/FAR16.
> Не говоря уже о том, что far указатели тормозят, да еще как.
Большей частью программа будет оперировать NEAR32 и, возможно, NEAR16.
FAR32/FAR16 потребуются разве что для вызова функций, требующих более высоких привилегий, чем RING3.
> > > 3) необходимость в менеджере селекторов как отдельной сущности со своей (местами нетривиальной) логикой
> > Селекторы задача получает на момент создания. Впоследствии могут только добавляться SS-селекторы.
> > Ничего особо нетривиального я тут не вижу.
Есть сплошной кусок пространства, который нарезается ломтиками поменьше.
> Насчет нетривиальности - это я под впечатлением менеджера селекторов OS/2.
Надо полагать, что большая часть финтов и фокусов связана с 16-битным защищённым режимом?
> А так - ну сущность дополнительная.
Существующая. Просто незавуалированая :)
> Выгод не вижу.
"Будущее нас рассудит" :)
> Геморрой добавочный - вижу.
Геморрой будет всегда, его можно лишь выбирать. Не всегда :)
> Начиная с несовместимости с любым существующим кодом
Это как #define'ить
> и заканчивая тормозами на использовании far-указателей.
Тормоза на обработке аппаратных прерываний и/или смене кольца тебя не смущают?
Длинные указатели, как я уже указывал :) требуются крайне редко.

Thu 14 Jun 2007 18:15 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.