Heavyiron
Похоже что глюки с загрузкой образа.
Какая у тебя конфигурация? Процессор/частота/память/чипсет/видеорежим ?
Новая модель ядра
sempron2500 1750MHz/512PC3200 Hynix/nf2 U400 (epox 83da3l)/vesa 3.0/1024x768/32/mtrr вкл/vrr вкл
Vrr не сработал
Vrr не сработал
Vrr не сработал
У меня vrr тоже не работает. Буду разбираться. Ошибку с HD я исправил, остался непонятный глюк с дискетой.
Когда разберусь с багами сделfю драйвер для Nforce. Но его нужно будет тестить. Можешь помочь?
У меня vrr тоже не работает. Буду разбираться. Ошибку с HD я исправил, остался непонятный глюк с дискетой.
Когда разберусь с багами сделfю драйвер для Nforce. Но его нужно будет тестить. Можешь помочь?
Правильно ли я понимаю, что
а) старый менеджер памяти от Халявина полностью удалён?
б) области памяти меньше страницы в этом ядре выделять нельзя?
в) функции 69 (отладка) вообще нет?
Можно ли портировать код загрузки COFF для приложений (3-кольца)?
а) старый менеджер памяти от Халявина полностью удалён?
б) области памяти меньше страницы в этом ядре выделять нельзя?
в) функции 69 (отладка) вообще нет?
Можно ли портировать код загрузки COFF для приложений (3-кольца)?
diamond
а) Да
б) Да. kernel_alloc выделяет память страницами в ядре а user_alloc в памяти программы
Еще надо сделать malloc работающий с локальными кучами и в ядре. Тогда можно будет создавать небольшие объекты ядра - дескрипторы файлов, события, очереди, списки и пр. А видеодрайвер сможет загружать в неиспользуюемую видеопамять шрифты, курсоры, картинки, иконки и т.д.
в)Отладчику нужны read_process_memmory и write_process_memory. Когда я напишу эти функции то подключу его.
Загрузчик COFF надо улучшить. Я делал его на скорую руку по старыми Си наброскам. Там нет проверок на ошибки и много чего еще. В этой версиии ядро работает как DLL (экспортирует функции) а драйверы их импортируют. Можно сделать два вида DLL - обычные и системные. Обычные - это односекционный COFF загружаются в любое свободное место в памяти приложения. Для системных будут резервироваться верхние 64 или 128 Мб адресов в памяти приложения. Секции кода и константных данных будут разделяться между всеми приложениями. Изменяемые данные будут локальными. Такая библиотека должна регестрироваться в ядре при первой загрузке.
а) Да
б) Да. kernel_alloc выделяет память страницами в ядре а user_alloc в памяти программы
Еще надо сделать malloc работающий с локальными кучами и в ядре. Тогда можно будет создавать небольшие объекты ядра - дескрипторы файлов, события, очереди, списки и пр. А видеодрайвер сможет загружать в неиспользуюемую видеопамять шрифты, курсоры, картинки, иконки и т.д.
в)Отладчику нужны read_process_memmory и write_process_memory. Когда я напишу эти функции то подключу его.
Загрузчик COFF надо улучшить. Я делал его на скорую руку по старыми Си наброскам. Там нет проверок на ошибки и много чего еще. В этой версиии ядро работает как DLL (экспортирует функции) а драйверы их импортируют. Можно сделать два вида DLL - обычные и системные. Обычные - это односекционный COFF загружаются в любое свободное место в памяти приложения. Для системных будут резервироваться верхние 64 или 128 Мб адресов в памяти приложения. Секции кода и константных данных будут разделяться между всеми приложениями. Изменяемые данные будут локальными. Такая библиотека должна регестрироваться в ядре при первой загрузке.
Извиняюсь за задержку - не было доступа к нету. Теперь вроде ситуация с интернетом стабилизировалась и я готов помочь, чем смогу.
б) А менеджер памяти от Халявина поддерживает выделение блоков меньше страницы. Возможно, имеет смысл использовать его, заменив там функции выделения страниц?
Ушёл к умным, знающим и культурным людям.
Халявин писал что его менеджер может выделить всего 24 блока памяти. Если его можно переписать то хорошо. В принципе подойдет любая качественная, стабильная и хорошо проверенная malloc. Например из glibc
Heavyiron
Спасибо. Я напишу когда будет что тестить.
http://infinity-sound.narod.ru/060_rev_002.7z работа над ошибками и небольшой бонус.
Heavyiron
Спасибо. Я напишу когда будет что тестить.
http://infinity-sound.narod.ru/060_rev_002.7z работа над ошибками и небольшой бонус.
Я имел ввиду 24 блока физической памяти - для драйверов, которым нужны непрерывные буферы размера больше страницы.
Исправил определение памятив 18.16 и 18.17
Функция 18, подфункция 20 - получить информацию о подсистеме памяти
eax = 68 - номер функции
ebx = 20 - номер подфункции
ecx = адрес структуры MEM_INFO
Возвращаемое значение:
нет
http://infinity-sound.narod.ru/mem_info.7z - тестовая программа
core/taskman.inc первая строка
GREEDY_KERNEL equ 0
если перекомпилировать ядро с
GREEDY_KERNEL equ 1 то
а) программам будет выделяться памяти не больше, чем они реально используют.
б) ядро будет загружать программу независимо от количества памяти,
указанного в заголовке. Если физической памяти не хватит, она зависнет и её надо закрыть через Alt+F4
Такой режим работы позволяет экономить память на машинах с маленьким объёмом ОЗУ.
Например программа trantest запрашивает 32Мб а достаточно 256Кб.
Функция 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 ? ;зарезервировано
}core/taskman.inc первая строка
GREEDY_KERNEL equ 0
если перекомпилировать ядро с
GREEDY_KERNEL equ 1 то
а) программам будет выделяться памяти не больше, чем они реально используют.
б) ядро будет загружать программу независимо от количества памяти,
указанного в заголовке. Если физической памяти не хватит, она зависнет и её надо закрыть через Alt+F4
Такой режим работы позволяет экономить память на машинах с маленьким объёмом ОЗУ.
Например программа trantest запрашивает 32Мб а достаточно 256Кб.
Новое ядро как-то неадекватно реагирует на исключения. В программе test при попытках cli, sti, mov [0x10000], byte 0 (первые 3 кнопки) ничего не происходит, а jmp 0x10000 подвешивает программу. Попытка открыть в gifview (например, Enter в kfar) нормальный с виду файл http://diamondz.land.ru/5.gif завешивает всю систему намертво. (В K0600 gifview на этом файле тихо умирает, в KlbrInWin перед смертью громко ругается на "Exception".)
Глюки исправил.
Отредактировал sysfuncr.txt
68.10 заменена на 18.20
внесены изменения в описание фн. 64.1, 68.11, 68.16
Отредактировал sysfuncr.txt
68.10 заменена на 18.20
внесены изменения в описание фн. 64.1, 68.11, 68.16
Вот это скорость!
Скоро выложу обновлённую версию документации у себя на домашней страничке.
Скоро выложу обновлённую версию документации у себя на домашней страничке.
Надо сделать описание kernel API. А то для многих функции ядра - тёмный лес
Теперь у нашей птички есть реактивный двигатель! 
Hardwere акселерация это мощно.
У меня с запущенным MP3 player-ом уровень загрузки процессора всего 3%.
А когда в Колибри будет ещё и ускорение 2D графики,то ......
Hardwere акселерация это мощно.
У меня с запущенным MP3 player-ом уровень загрузки процессора всего 3%.
А когда в Колибри будет ещё и ускорение 2D графики,то ......
Who is online
Users browsing this forum: No registered users and 8 guests