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


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

> >> Унифицированного интерфейса драйверов в OS/2 нет
> >
> > Разве?
>
> А что, драйверы мыши, файловой системы (IFS) и NETBEUI имеют одинаковый интерфейс (API)? Нет, конечно. У каждого класса драйверов свой уникальный интерфейс. В пределах этого интерфейса имеется куча разных функций (с разными параметрами и разным способом возвращения результата). И маппер должен знать все эти функции всех интерфейсов. И ещё про каждый драйвер он должен знать, к какому классу он относится. Это и есть индивидуальная поддержка каждого драйвера.
>
> >>- значит, в этот маппер придётся закладывать поддержку только избранных драйверов, и каждого из них - персонально.
> >
> > А по-моемому, достаточно реализовать запросы некоторого "абстрактного" интерфейса к драйверам через стандартные функции DosOpen(), DosClose(), DosWrite(), DosRead() и DosDevIOCtl(). Конечно, разных функций DosDevIOCtl() много, и как их все "отобразить" на "абстрактный" интерфейс драйверов -- мне пока тоже непонятно.
>
> Вот-вот. Кстати, к драйверу файловой системы, например, обращение происходит через несколько иные функции.
>
> >> Но тогда размер этого маппера гросит стать сопоставимым с размером самого ядра. Мило, ничего не скажешь.
> >
> > ну, если даже так, то можно это сделать более гибко. В конкретные детали реализации этого с L4Linux я пока не сильно вдавался, но можно например, сделать так (как я это себе представляю): ioctl-интерфейсы каждого драйвера не "хардкодятся" в маппере, а описываются в отдельном конфиге: Какие ioctl-функции поддерживает данный драйвер и их соответствие "абстрактным" функциям.
>

> Я вот ещё чего боюсь. Из описания технологии Afterburning складывается впечатление, что она ориентирована на линуксную архитектуру, в которой драйверы вкомпилированы в ядро и, следовательно, патчатся вместе с ним
>

Вкомпилированы в ядро, а также могут быть загружаемыми модулями. Да, по идее они, наверное, патчатся вместе с ядром. Но смущает именно утверждение, что драйвера немодифицированные. А может быть правда? Драйвер же не напрямую работает с ресурсами, а в основном через хелперы ядра? То есть, Хелперы в ядре, и они патчатся, а драйвер их только вызывает?

>(потому что я не представляю, как запущенный в r3 немодифицированный драйвер сможет достучаться до портов). Если это так, то против OS/2 оно бессильно, и вся затея рушится.

до портов он как раз достучаться может, то есть, может выполнять команды типа in и out. Для этого есть адресное пространство портов, которое в виде специальных i/o flexpages (виртуальные страницы памяти) отображается в адресное пространство портов ring3-драйвера. То есть, драйвер получает порты в виде flexpages от своего пейджера. После этого он может давать команды IN и OUT. Если приложение обращается к порту, к которому у него нет доступа, возникает i/o page fault (на самом деле, просто исключение процессора при отсутствии привилегий на ввод/вывод) Ядро (L4) перехватывает этот exception и направляет IPC-сообщение пейджеру приложения. Пейджер может решить отобразить i/o flexpages в адресное пространство приложения, и тогда доступ к порту появится, и операция in/out будет успешной. Если пейджер не обработает i/o page fault, то приложение просто трапнется. (Я про это в своей статье кратко написал в разделе "драйверы в userlevel")

> >> и б) поднимает вопрос: зачем тогда виртуальная OS/2 - ведь драйверы уже можно использовать и напрямую?
> >
> > напрямую? где? поддержку "напрямую" надо еще и реализовать, а в старом ядре она уже готовая. Задача -- только реализовать этот "маппер".
>
> Вверху я описал, какой объём работы предстоит при создании маппера - из-за большого количества функций, которые должны быть поддержаны. Но это функции, через которые драйверы взаимодействуют с приложениями. В то же время набор функций, который нужен драйверам от ядра, куда как более скромный.
>

вот поэтому возможен вариант создания эмулятора интерфейсов ядра (раз они намного более скромные) для драйверов

> >> Как следует относиться к следующему их утверждению: "Our prototype's network performance is within 3--8% of a native Linux system"? "Типа шутка юмора"?
> >
> > Да, прототип -- изолированные друг от друга драйверы диска и сетевой карты, согласно бенчмарку, дает производительность сети, на 3-8% ниже, чем в родной Linux-cсистеме, за счет виртуализации и изоляции виртуальных машин. А что смущает?
>
> То, что у них написано не "на 3-8% ниже, чем в родной Linux-системе", а "3-8% от родной Linux-системы".

ну, возможно, так можно выражаться по-английски :) А вообще, они немцы, для них английский тоже не родной, могли и ошибиться :)


Tue 19 Jun 2007 19:00 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.7.10) 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.