Кто быстрее - гляньте на то, что сделал Trolly: http://meos32.7.forumer.com/viewtopic.php?t=165
Я занят настолько, что смотреть времени как-то нет :-\
Новая модель ядра
Мне не удалось скачать.
Да, чиото ссылачка глючит.
удалено
Last edited by Heavyiron on Fri Oct 10, 2008 1:13 am, edited 1 time in total.
Посмотрел.
Он распотрошил kernel.asm так что от него осталось 3 Кб
При желании его можно совсем удалить, Ville сказать что файла нет и копирайт ставить некуда а вину свалить на trolly.
Если серьёзно то большая часть кода перекочевала в папку /bootstrap и вместо одного большого kernel.asm там 31 маленький файл. Самый короткий 72 байт. Сомневaюсь что это сделало код наглядней. И само деление уж слишком мелкое, например файл loadidt
Это весь файл и таких файлов много.
Логика деления иногда нарушена. Можно поделить kernel на несколько файлов оставив в одном весь код загрузки и инициализации ядра, в другом все глобальные переменные и т.д но дробить так сильно не надо.
Поправка.
В /bootstrap попал код от B32 до ;Fly
то есть весь код инициализации ядра в защищённом режиме порезан теперь на мелкие кусочки.
Он распотрошил kernel.asm так что от него осталось 3 Кб
При желании его можно совсем удалить, Ville сказать что файла нет и копирайт ставить некуда а вину свалить на trolly.
Если серьёзно то большая часть кода перекочевала в папку /bootstrap и вместо одного большого kernel.asm там 31 маленький файл. Самый короткий 72 байт. Сомневaюсь что это сделало код наглядней. И само деление уж слишком мелкое, например файл loadidt
Code: Select all
; LOAD IDT
lidt [cs:idtreg]
cli
mov esi,boot_devices
call boot_log
call detect_devices
Логика деления иногда нарушена. Можно поделить kernel на несколько файлов оставив в одном весь код загрузки и инициализации ядра, в другом все глобальные переменные и т.д но дробить так сильно не надо.
Поправка.
В /bootstrap попал код от B32 до ;Fly
то есть весь код инициализации ядра в защищённом режиме порезан теперь на мелкие кусочки.
http://infinity-sound.narod.ru/infinity.7z
Ядро с новым распределением памяти под плоскую модель
; 0 -> 0x98AFFF kernel
; 0x0098B000 -> kernel heap
;
; 0x01FFFFFF heap min limit
; 0x7DBFFFFF heap max limit
; 0x7DC00000 -> 0x7FBFFFFF LFB 32Mb
; 0x7DC00000 -> 0x7E3FFFFF application available LFB 8Mb
; 0x7E400000 -> 0x7FBFFFFF kernel LFB part 24 Mb
; 0x7FC00000 -> 0x7FFFFFFF page tables 4Mb
; 0x80000000 -> 0xFFFFFFFF application 2Gb
+ Infinity 1.0
Подробнее в ветке про звук.
Ядро с новым распределением памяти под плоскую модель
; 0 -> 0x98AFFF kernel
; 0x0098B000 -> kernel heap
;
; 0x01FFFFFF heap min limit
; 0x7DBFFFFF heap max limit
; 0x7DC00000 -> 0x7FBFFFFF LFB 32Mb
; 0x7DC00000 -> 0x7E3FFFFF application available LFB 8Mb
; 0x7E400000 -> 0x7FBFFFFF kernel LFB part 24 Mb
; 0x7FC00000 -> 0x7FFFFFFF page tables 4Mb
; 0x80000000 -> 0xFFFFFFFF application 2Gb
+ Infinity 1.0
Подробнее в ветке про звук.
Подскажите, как лучше реализовать.
В моей программе используется диалог открытия файлов. Естественно он запускается отдельным потоком. Встал вопрос о том как узнать, что поток завершился. Есть 2 варианта:
1) Создать в основной программе переменную, которую поток перед завершением будет устанавливать, и проверять ее состояние в цикле.
2) Передавать потоку указатель на процедуру в основной программе, которую поток перед завершением будет выполнять.
Ваше мнение?
В моей программе используется диалог открытия файлов. Естественно он запускается отдельным потоком. Встал вопрос о том как узнать, что поток завершился. Есть 2 варианта:
1) Создать в основной программе переменную, которую поток перед завершением будет устанавливать, и проверять ее состояние в цикле.
2) Передавать потоку указатель на процедуру в основной программе, которую поток перед завершением будет выполнять.
Ваше мнение?
YELLOW
А как ты передашь потоку указатель если у него нет параметров ?
Это зависит от фунции.
Первый вариант лучше потому что точно не будет проблем с синхронизацией доступа к данным. Системных мьютексов и критических секций нет.
А как ты передашь потоку указатель если у него нет параметров ?
Это зависит от фунции.
Первый вариант лучше потому что точно не будет проблем с синхронизацией доступа к данным. Системных мьютексов и критических секций нет.
YELLOW
ИМХО первый вариант проще реализовать, намного проще.
ИМХО первый вариант проще реализовать, намного проще.
Передать параметры новому потому можно через его стек 
Я тоже склонялся к первому варианту. А передать параметры через стек действительно несложно: я в основной программе выделяю память из кучи для стека потока, потом записываю в ее конец параметры, а при старте потока выполняю pop. После завершения потока освобождаю память.
mike.dld
Отличная идея. Если стек заполнить правильно то поток может выполнить return и управление передасться на код exit() которая его завершит. Для программ на ЯВУ в самый раз.
Отличная идея. Если стек заполнить правильно то поток может выполнить return и управление передасться на код exit() которая его завершит. Для программ на ЯВУ в самый раз.
С ядром ревизии 406 у меня не работает чтение жёсткого диска(точнее к нему нет доступа).Выдаётся ошибка 5.
Чтение жёсткого диска специально отключено или просто новое ядро с flat моделью памяти сырое ?
Чтение жёсткого диска специально отключено или просто новое ядро с flat моделью памяти сырое ?
andrew_programmer
Откуда ты качал ядро ? Плоская ветка /branches/flat_kernel. Последнее ядро 405. Там включён ДМА доступ к диску.
Откуда ты качал ядро ? Плоская ветка /branches/flat_kernel. Последнее ядро 405. Там включён ДМА доступ к диску.
Качал с kolibrios.org.Раздел download.С svn-ов не качаю, так как svn клиента нет.
Who is online
Users browsing this forum: No registered users and 7 guests