RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : А вот вопрос, однако...


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

> Задача поставлена _на_данный_момент_ -- не переписать полностью систему, сделав для всех подсистем OpenSource-аналоги, а написать только ядро, чтобы на это ядро можно было заменить текущее ядро, и чтобы при этом все, что над ядром -- IBM-овские PM, WPS; приложения -- продолжало работать. Желательно также, чтобы продолжали работать и MMOS2, стек TCP/IP, LanServer и прочие подсистемы. Задача на мой взгляд, разумная. (Только пока непонятно, реализуемая ли на микроядре. Но подумать о возможности реализации этого все же стОит.)

Хорошо, посмотрим на эту затею так: система паравиртуализации в еёё нынешнем виде предлагает возможность выполнения 16-разрядного кода?

> Но большинство почему-то считает, что раз драйвера линуксовые и исполняются ядром линуха, а не непосредственно ядром OS/2, то это "ненативно", "идеологически чуждо" и прочее.

Стоп, стоп. Вот, K42 пользуется линуксными драйверами непосредственно, не привлекая для этого ядро Линукса. (Обещается даже выполнение этих драйверов в user-level.)
Я в данном случае не K42 рекламирую, а просто обращаю внимание на принципиальную возможность такого фокуса. (Хотя, как говорил когда-то Райкин: "Возьмите, ребятки, воспользуйтесь." :-)

> Это конечно, просто религиозный предрассудок, но... Если мы пишем ядро, то хочется, чтобы этим ядром пользовались. А не говорили -- "фу, линуксовая хрень". Поэтому следует подумать, как учесть требования трудящихся, если это конечно, возможно.

Требования трудящихся, как мне кажется - чтобы их программы работали на их железе. А как это достигнуто - интересует только очень отдельных персон.

> Да, похоже так -- для использования ядра OS/2 надо иметь лицензию на копию OS/2 и распространять бесплатно его будет нельзя. Но... Использовать ядро, полученное модификацией исходного IBM'овского ядра OS/2, предполагается именно в _переходный_ период, пока opensource-аналогов большинства подсистем нету. То есть, у нас будет новое ядро OS/2, а подсистемы будут продолжаться использоваться IBM'овские. То есть, копия OS/2 будет в данных условиях у каждого. Просто пользователь будет брать OS/2 или eCS и заменять ядро на наше. А ядро OS/2 (в том числе, паравиртуализованное) можно будет распространять вместе с копией eCS,

Но тогда вопрос: заче вообще нужно паравиртуализировать нынешнее ядро?
На самом деле "переходный период" - он практически вечный, потому что для его завершения нужно, чтобы в системе не осталось вообще ничего IBM-овского (т.е., и PM с WPS тоже нужно самим реализовать). Первый шаг к этому - создание своего ядра. А модификация ядра нынешнего - она зачем? Что она даёт? Драйверы нынешние продолжать гонять можно будет? Так это и под непеределанным ядром продолжать делать можно.

> оно будет позволять запускать eCS на гипервизорах или для поддержки 16 битных драйверов в виртуальной машине одновременно с нашим новым ядром -- то есть, пока новое ядро имеет мало своих собственных драйверов и находится в разработке, можно запускать старое ядро в другой вирт. машине и гонять на нем старые 16-бит драйверы.

То есть, потратив несколько лет на одну только перекомпиляцию IBM-овского ядра, ты получишь, грубо говоря, "микроядерный линукс, в котором можно запускать (пара)виртуализированную OS/2". К созданию своего ядра это хоть на шаг приближает?
И остаётся главный вопрос (тобой же озвученный): если микроядро умеет создавать только 32-разрядные сегменты, то откуда возьмутся 16-разрядные? Ведь "паравиртуализатор", он, насколько я понимаю, тоже не в микроядре сидит, и он не может сказать ему: "А поправь-ка вот эти байтики в дескрипторе сегмента".

>> ЭТОТ вариант заведомо можно не рассматривать.
>
> Подумать все же, имхо, стОит. Все-таки, важно чтобы в переходный период наше ядро использовалось как можно большим числом осевиков, тестировалось, исправлялись ошибки...

Так не будет же никакого тестирования нового ядра. Потому что работать в такой схеме будут только IBM-овское ядро и виртуализатор. Никакие функции старого ядра перенаправляться в новое не будут. Разве что это перенаправление будет сделано в дизассемблированном исходнике - вместе с огромными шансами что-то в ядре при этом развалить.

>> Какими драйверами? "Назовите поимённо!"
>
> Драйвера стека TCP/IP, MMOS/2 (dll-и из MMOS/2 можно будет сразу использовать, если будет бинарная совместимость с LX-форматом, а вот те несколько драйверов, от которых зависит MMOS/2 -- можно конечно, переписать под новую модель -- в качестве справочника можно использовать сорцы MMOS/2 из исходников мерлина -- там есть сорцы всех этих драйверов, кроме midi.sys), LanServer, поддержка NDIS-драйверов (IBMCOM) и протоколов, DANIS506... да много разных. DANIS506 и стек TCPIP-32 -- битные, а практически все остальные -- 16 бит.

Хорошо, давай явно разделим драйверы устройств и абстрактные драйверы. Драйверов устройств, исходники которых недоступны, полезных уже практически не осталось. То, чем мы пользуемся - либо самописное, либо в DDK.
Драйверов абстрактных - их куда больше, и многие в DDK не встречаются. Но: они в основном мелкие и, по-моему, их совокупный размер меньше, чем размер ядра. Так что если уж что и дизассемблировать, то это их.
Оценим также и твой список:
- TCPIP. Драйверы в основном 32-битные.
- MMOS/2. 16-разрядных драйверов всего 3, и те "поддаются перевоспитанию".
- DANIS506. Самописный, я предполагаю ;-)
- Драйверы NDIS. Под современные карточки, за редким исключением - самописные.
- Peer (LS) и протоколы. Самая тяжёлая часть. Но TCP/IP, как отмечено выше - 32-разрядный, а актуальность LS и частого NETBIOS давно утрачена (заставить Windows XP работать по NETBIOS я так и не смог), а для NETBEUI лучше Самбу применять.

В итоге складывается впечатление, что на дизассемблирование и перекомпилирование драйверов уйдёт меньше времени, чем на "впарвление мозгов" нынешнему ядру.
И вообще, если уж так биться за старые драйверы, проще реализовать своё ядро, сразу умеющее исполнять 16-разрядный код. Один хрен виртуализатор должен будет это уметь как-то это делать.

> А стек TCPIP? Его вроде, в тулките нема.

LX-файлы.

> А USB-стек, PCMCIA-стек? -- возможно, в DDK они есть -- не проверял, но вот USB стек там очень старый

Да, старый. Только вот и нынешний, судя по том обсуждениям, которые я вижу в Интернете и Фидо, работает куда хуже, чем Линуксный. (Насчёт флешек ты и сам знаешь; мышку мою нынешнюю (совершенно стандартную) удалось запустить только с самописным драйвером, потому что IBM-офский подерживает только подмножество стандарта.)

> Потом, как быть с самописными -- многие аффторы уже мигрировали с OS/2 и им уже не до переписи драйверов под новую модель, и не факт что они отдадут исходники :(

Те, которые пишут под актуальное ныне железо - все на месте и доступны.

Mon 18 Jun 2007 20:36 Mozilla/5.0 (OS/2; U; Warp 4.5; ru-RU; rv:1.7.12) Gecko/2005




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.