В ядре столько разнопланового кода, что разобраться, что где - очень трудно. И это вот-вот станет очень большой проблемой.
Давайте в этой обсудим наши идеи по-поводу модульного ядра.
Модуляризация ядра
Violinier
А ты читал исходники ядра? По-моему разноплановый код есть только в одном файле.
А ты читал исходники ядра? По-моему разноплановый код есть только в одном файле.
halyavin
Конечно же читал. А как же иначе?
Конечно же читал. А как же иначе?
Тут еще вот такая проблема, ты же сам писал: Cтек находится по физическим адресам 0x20000-0x2ffff. Поэтому размер ядра не может превышать 128Kb, иначе стек затрет программу.
А ядро у нас около сотни и скоро достигнет предела, если мы еще что-нибудь добавим.
А ядро у нас около сотни и скоро достигнет предела, если мы еще что-нибудь добавим.
Это уже пофиксено, стек ядра (при загрузке) сейчас находится по адресам 0x3EC00-(0x3EC00-сколько нужно). Так что на размер ядра теперь ограничение примерно в 180Kb. На данный момент используется 87Kb (размер ядра+размер неинициализированных данных).
Это хорошо, тогда можно говорить конструктивно. Какие именно файлы по-твоему содержат разноплановый код? Какой код было трудно найти, основываясь на именах файлов?Violinier wrote:Конечно же читал. А как же иначе?
Найти код - одно, а разобраться в нем - другое.Какой код было трудно найти, основываясь на именах файлов?
Например:
При старте ядра мы переходим на метку start_of_code, находящуюся в файле BOOTCODE.INC.
И далее работает код из этого файла.
Мне до сих пор не понятно, куда мы переходим, когда код из файла BOOTCODE.INC закончит работу.
Простите, если туплю.
Я всегда думал, мы переходим в kernel.asm на участок кода после строки "; CR0 Flags - Protected mode and Paging". Сейчас посмотрел внимательнее - оказалось, что в начале управление передается в bus/pci/pci16.inc, а затем уже в kernel.asm. Выяснить это можно взглянув на kernel16.inc - строка include "bus/pci/pci16.inc" идет после include "bootcode.inc", а сам kernel16.inc включается в файле kernel.asm перед строкой "; CR0 Flags - Protected mode and Paging".
Действительно, не много нелогично получается... Думаю лучше поставить jmp на код в kernel.asm, а перед ним вызов процедуры из pci16.inc.
Действительно, не много нелогично получается... Думаю лучше поставить jmp на код в kernel.asm, а перед ним вызов процедуры из pci16.inc.
И таких "нелогичностей" очень много.Действительно, не много нелогично получается...
Подписываюсь на их рассылку .
Who is online
Users browsing this forum: No registered users and 7 guests