Page 24 of 31

Posted: Sat Mar 31, 2007 12:03 pm
by Serge
Serial

Постарайся не двигать мышь. Это иногда помогает.

Posted: Sat Mar 31, 2007 12:25 pm
by Heavyiron
Serial Похоже, что это какая-то особенность материнок 8RDA3l. У меня та же песня... Еще мне кажется что у тебя не будет работать nt2klbr

Posted: Sat Mar 31, 2007 9:23 pm
by Nameless
Предлагаю использовать адреса 0x522 0x600 для хранения информации об оборудовании, причем это оборудование определять еще в реальном режиме...

Posted: Mon Apr 02, 2007 7:39 am
by Mario79
Serial
Бывает на некоторых компах, причина пока не выяснена. Скорее всего, несовсем корректный переход в реальный режим процессора.

Posted: Thu May 03, 2007 4:17 pm
by Serge
Есть такая идея. Поднять ядро на адреса 0xF800_0000+ а кучу ядра разместить по адресам 0x8000_0000 - 0xF7FF_FFFF Тогда память до 0x7FFF_FFFF будет индивидуальная для каждого потока, 0xF800_0000+ общая для всех потоков, а в куче ядра можно будет выделять общие и частные блоки памяти и загружать туда системные ДЛЛ. Приложения получат доступ на чтение запись и исполнение по адресам в этом диапазоне, разумеется не для всех страниц а только для тех где это разрешено.

Posted: Thu May 03, 2007 8:17 pm
by Mario79
Serge
А по какому принципу будет определяться кому, куда и зачем можно лазить? Поскольку у нас нет категорий доступа, для разных приложений, не получиться ли еще одна лазейка для вирусов и прочей вредоносной хрени?

Posted: Thu May 03, 2007 9:10 pm
by Serge
Mario79

Для каждой страницы будут отдельно храниться права доступа. Для прилжений доступ будет очень ограниченным - код и данные ДЛЛ. Код ДЛЛ будет pl_3 с защитой от записи а данные ДЛЛ будут частными для каждого потока, так что ничего испортить не получится. Напрямую к памяти ядра приложение доступ не получит, только косвенно через отображение в своё пространство общих ДЛЛ. Остальные данные и код ядра будут защищены так же как и сейчас.

Posted: Fri May 04, 2007 7:09 am
by Mario79
Serge
То есть приложение будет иметь доступ только к области, через которую осуществляется обмен данными с ДЛЛ?
Мне кажется, доступ к коду общих ДЛЛ давать не нужно.

Posted: Fri May 04, 2007 10:05 am
by Serge
Mario79

>Мне кажется, доступ к коду общих ДЛЛ давать не нужно.
Тогда функцию ДЛЛ невозожно вызвать.

Будет примерно так:
фоновая картинка - страницы общие для всех потоков. Доступ только для в pl_0 на чтение и запись.
код ДЛЛ - страницы общие для всех потоков. Доступ в pl_3 только чтение и исполнение.
данные ДЛЛ индивидуальные для каждого потока доступ в pl_3 на чтение и запись. Если у ДЛЛ есть константные данные они могут быть расшарены с доступом тольку по чтению.

Posted: Fri May 04, 2007 10:31 am
by Mario79
Serge
Да пожалуй, в таком виде можно использовать. Только нужно еще продумать, как приложение узнает, загружено ли нужное ДЛЛ, и нужно ли его загружать. Или это все будет прозрачно для приложений, и ядро все будет делать само?

Posted: Fri May 04, 2007 10:52 am
by Serge
Mario79

Приложение вызывает load_dll(), ядро загружает ДЛЛ если она ещё не загружена и отображает её в адресное пространство приложения. До этого вызова ДЛЛ для приложения будет недоступна. ДЛЛ загружается только один раз, при первом вызове. При последующих вызовах страницы кода будут сразу отображаться в память процесса а страницы данных будут создаваться заново и иногда загружаться с диска если данные имели начальные значения.

Posted: Fri May 04, 2007 11:00 am
by Mario79
Serge
А какой механизм будет очищать память потом? Если будет куча ДЛЛ, которые впоследствии не используются, то память будет загажена почем зря. Надо заранее продумать, чтобы не наступать на грабли Виндовс.

Posted: Fri May 04, 2007 11:14 am
by Serge
Надо ещё определиться с форматом ДЛЛ. PE мне показался проще и удобнее чем ELF.so Библиотеки в PE формате можно создавать прямо в FASM, elf.so нет. На форуме flatassembler.net есть некоторые пояснения как генерировать позиционно независимый код для elf.so Скомпилированный фасмом .o файл надо ещё обработать gcc чтобы получилась .so библиотека.

Posted: Fri May 04, 2007 11:21 am
by Serge
Mario79
Насчёт кучи ДЛЛ я не уверен. Можно сделать счётчик ссылок и таймер по которому ДЛЛ будет выгружаться если ссылок больше нет.

Posted: Fri May 04, 2007 12:48 pm
by andrew_programmer
>Надо ещё определиться с форматом ДЛЛ. PE мне показался проще и удобнее чем ELF.so

Драйвера для X сервера в формале ELF.so
Если не будет ELF, значит только самопальные драйвера для видео, если таковые вообще удасться как-то написать.

P.S.

Оказывается 2D драйверы для X сервера мало весят.К примеру, 2D драйвер для ВСЕХ видеокарт nvidia имеет размер около 90 килобайт.