Page 7 of 31

Posted: Sun Sep 24, 2006 4:07 pm
by Serge
Heavyiron
Похоже что глюки с загрузкой образа.
Какая у тебя конфигурация? Процессор/частота/память/чипсет/видеорежим ?

Posted: Sun Sep 24, 2006 7:51 pm
by Heavyiron
sempron2500 1750MHz/512PC3200 Hynix/nf2 U400 (epox 83da3l)/vesa 3.0/1024x768/32/mtrr вкл/vrr вкл
Vrr не сработал

Posted: Sun Sep 24, 2006 10:06 pm
by Serge
Vrr не сработал
У меня vrr тоже не работает. Буду разбираться. Ошибку с HD я исправил, остался непонятный глюк с дискетой.

Когда разберусь с багами сделfю драйвер для Nforce. Но его нужно будет тестить. Можешь помочь?

Posted: Mon Sep 25, 2006 6:15 pm
by diamond
Правильно ли я понимаю, что
а) старый менеджер памяти от Халявина полностью удалён?
б) области памяти меньше страницы в этом ядре выделять нельзя?
в) функции 69 (отладка) вообще нет?
Можно ли портировать код загрузки COFF для приложений (3-кольца)?

Posted: Mon Sep 25, 2006 7:29 pm
by Serge
diamond
а) Да

б) Да. kernel_alloc выделяет память страницами в ядре а user_alloc в памяти программы
Еще надо сделать malloc работающий с локальными кучами и в ядре. Тогда можно будет создавать небольшие объекты ядра - дескрипторы файлов, события, очереди, списки и пр. А видеодрайвер сможет загружать в неиспользуюемую видеопамять шрифты, курсоры, картинки, иконки и т.д.

в)Отладчику нужны read_process_memmory и write_process_memory. Когда я напишу эти функции то подключу его.

Загрузчик COFF надо улучшить. Я делал его на скорую руку по старыми Си наброскам. Там нет проверок на ошибки и много чего еще. В этой версиии ядро работает как DLL (экспортирует функции) а драйверы их импортируют. Можно сделать два вида DLL - обычные и системные. Обычные - это односекционный COFF загружаются в любое свободное место в памяти приложения. Для системных будут резервироваться верхние 64 или 128 Мб адресов в памяти приложения. Секции кода и константных данных будут разделяться между всеми приложениями. Изменяемые данные будут локальными. Такая библиотека должна регестрироваться в ядре при первой загрузке.

Posted: Tue Sep 26, 2006 7:34 pm
by Heavyiron
Извиняюсь за задержку - не было доступа к нету. Теперь вроде ситуация с интернетом стабилизировалась и я готов помочь, чем смогу.

Posted: Wed Sep 27, 2006 6:09 pm
by diamond
б) А менеджер памяти от Халявина поддерживает выделение блоков меньше страницы. Возможно, имеет смысл использовать его, заменив там функции выделения страниц?

Posted: Wed Sep 27, 2006 7:01 pm
by Serge
Халявин писал что его менеджер может выделить всего 24 блока памяти. Если его можно переписать то хорошо. В принципе подойдет любая качественная, стабильная и хорошо проверенная malloc. Например из glibc

Heavyiron
Спасибо. Я напишу когда будет что тестить.

http://infinity-sound.narod.ru/060_rev_002.7z работа над ошибками и небольшой бонус.

Posted: Wed Sep 27, 2006 7:46 pm
by halyavin
Я имел ввиду 24 блока физической памяти - для драйверов, которым нужны непрерывные буферы размера больше страницы.

Posted: Sun Oct 08, 2006 10:54 am
by Serge
Исправил определение памятив 18.16 и 18.17

Функция 18, подфункция 20 - получить информацию о подсистеме памяти

eax = 68 - номер функции
ebx = 20 - номер подфункции
ecx = адрес структуры MEM_INFO

Возвращаемое значение:
нет

Code: Select all

struc MEM_INFO
{ .pages_count     dd ?  ;всего страниц памяти
  .pages_free      dd ?  ;доступно страниц
  .page_faults     dd ?  ;страничных ошибок
  .heap_size       dd ?  ;куча ядра, байт
  .heap_free       dd ?  ;доступно, байт
  .heap_blocks     dd ?  ;всего блоков памяти в куче ядра
  .free_blocks     dd ?  ;доступных блоков
  .largest_free    dd ?  ;зарезервировано
  .largest_used    dd ?  ;зарезервировано
}
http://infinity-sound.narod.ru/mem_info.7z - тестовая программа

core/taskman.inc первая строка
GREEDY_KERNEL equ 0

если перекомпилировать ядро с
GREEDY_KERNEL equ 1 то

а) программам будет выделяться памяти не больше, чем они реально используют.
б) ядро будет загружать программу независимо от количества памяти,
указанного в заголовке. Если физической памяти не хватит, она зависнет и её надо закрыть через Alt+F4

Такой режим работы позволяет экономить память на машинах с маленьким объёмом ОЗУ.
Например программа trantest запрашивает 32Мб а достаточно 256Кб.

Posted: Mon Oct 09, 2006 3:45 pm
by diamond
Новое ядро как-то неадекватно реагирует на исключения. В программе test при попытках cli, sti, mov [0x10000], byte 0 (первые 3 кнопки) ничего не происходит, а jmp 0x10000 подвешивает программу. Попытка открыть в gifview (например, Enter в kfar) нормальный с виду файл http://diamondz.land.ru/5.gif завешивает всю систему намертво. (В K0600 gifview на этом файле тихо умирает, в KlbrInWin перед смертью громко ругается на "Exception".)

Posted: Tue Oct 10, 2006 8:17 am
by Serge
Глюки исправил.
Отредактировал sysfuncr.txt
68.10 заменена на 18.20
внесены изменения в описание фн. 64.1, 68.11, 68.16

Posted: Tue Oct 10, 2006 8:11 pm
by diamond
Вот это скорость!
Скоро выложу обновлённую версию документации у себя на домашней страничке.

Posted: Tue Oct 10, 2006 9:42 pm
by Serge
Надо сделать описание kernel API. А то для многих функции ядра - тёмный лес

Posted: Tue Oct 10, 2006 10:24 pm
by andrew_programmer
Теперь у нашей птички есть реактивный двигатель! :)
Hardwere акселерация это мощно.

У меня с запущенным MP3 player-ом уровень загрузки процессора всего 3%.

А когда в Колибри будет ещё и ускорение 2D графики,то ......