Ядро с менеджером памяти.

Kernel architecture questions
  • В новом ядре есть проблемы с сетью. Примерно по той же причине, что и со звуком. Придется еще и с сетевым кодом разбираться :( ...
    Проблемы с MV (если кто пытался запустить) связаны с передачей ему параметров MFAR'ом (из-за глюка в MFAR'e). MV пытается прочитать не существующий файл, не обрабатывает код ошибки и дальше пошло-поехало... Если запускать его из sysxtree то он загружается.
  • Догадайтесь сами, кого бить надо ;). (подсказка: file_start нигде в приложении не изменяется, и используется в 58 функции)

    Code: Select all

    ;cpu.asm from Mario79
      use32
      org    0x0
    
      db     'MENUET01'              ; 8 byte id
      dd     0x01                    ; header version
      dd     START                   ; start of code
      dd     I_END                   ; size of image
      dd     0x8000                 ; memory for app           ;*compare this*
      dd     0x8000                 ; esp
      dd     0x0 , 0x0               ; I_Param , I_Icon
    ...
    file_start: dd 16
                dd 0,0,0,0x10000                               ;*and this*
    
    За одним оцените новую степень защиты с менеджером памяти, в котором такие трюки не прокатывают. По-хорошему, конечно, нужно будет добавить проверку в ядро.
  • lol
  • С сетью - ложная тревога. Просто в dhcp и dnsr закрывается сокет с номером 0xFFFF (если сразу же после запуска нажать на кнопку закрытия). В системном обработчике сети нет проверки на допустимость этого значения. В результате происходит чтение с недопустимого адреса и kernel error.
  • halyavin
    на счёт защиты памяти - при прямом доступе к видеопамяти тож защиты никакой - если задать слишком большой адрес - процесс и система взвисают - на доске отладки - циклично выводятся сообщения об ошибке (кста, это в старых дистрах есть - на новом не проверял.).
  • Упс. В загрузочном коде я неправильно указал базу этого сегмента (на физический адрес вместо линейного). В следующей версии исправлю и сделаю нормальным лимит этого сегмента (на данный момент он почти 4Гб).
  • Chugumoto wrote:
    mike.dld wrote:Перед началом копирования, память программы увеличивается на размер копируемого файла. Файл считывается в память, записывается на диск, и далее размер памяти возвращается в первоначальное значение.
    2all: а что, по частям в оперативку подгружать файлы нельзя? а то к примеру с несуществующим пока драйвером CD при копировании фильма на HDD нужен будет 1 гб памяти... :(
    В исправлениях от ATV есть функция APPEND, так что MFAR9 будет копировать блоками (например, по 4 Кбайта, хотя пока ещё не решил). Насчёт того, есть ли APPEND для рам-диска, я пока так и не понял. Подскажите, если знаете.
    in code we trust
  • Судя по fs.inc для ramdisk'а поддерживаются функции 8,0,1,16; для harddisk'a - 8,0-5, 12,13,14,16.
  • Нашел критическую ошибку в менеджере памяти при создании потоков. Также увеличено число кнопок (до 4096), добавлена проверка основного буфера в файловых операциях. Новое ядро послано NoName'у. Начал работать над звуком, но для продолжения работы нужны исходники ac97wav. Кто-нибудь знает где их можно достать?
  • но для продолжения работы нужны исходники ac97wav
    Черт, забыл обновить исходники программ с Kolibri3 на Kolibri4 - в Kolibri4 все есть.
  • В новом ядре не работает меню. Это связано с тем, что там слишком большой размер буфера отводится для файла menu.dat. Мое ядро находит потенциально опасную операцию и не выполняет ее. Исправленная версия menu послана NoName'у.
  • Who is online

    Users browsing this forum: No registered users and 4 guests