Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт сен 20, 2018 11:34 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 124 сообщения ]  На страницу Пред. 1 2 3 4 5 69 След.
Автор Сообщение
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср июл 30, 2008 2:30 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
to Serge
1) Не считаю что загрузку ОС нужно жестко привязывать к GRUB загрзузчику. GRUB есть не на всех машинах. К примеру если нужно быстро сделать загрузку с раздела NTFS, где установлена Win, можно сделать типа mtldr, им грузить вторичный загрузчик, а он уже будет обрабатывать ini файлы и формировать ramdisk, загружать модули и в конце передаст управление ОС. Проблема в согласовании загрузки Grub и вторичного загрузчика. Более предпочтительный вариант и на мой взгляд универсальный - это загрузка Grub вторичного загрузчика.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср июл 30, 2008 3:00 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
<Lrz>
Цитата:
К примеру если нужно быстро сделать загрузку с раздела NTFS, где установлена Win, можно сделать типа mtldr, им грузить вторичный загрузчик, а он уже будет обрабатывать ini файлы и формировать ramdisk, загружать модули и в конче передаст управление ОС

То есть для начала напишем свой собственный GRUB. Что-то похожее я предлагал два года назад в начале этой ветки. (viewtopic.php?p=5416#p5416 Очень интересное обсуждение. Новое - слегка забытое старое ? ) И даже отделил 16-ти битный загрузчик от ядра. Блин ! Я тогда не был знаком с GRUB. Не стоит повторять мои ошибки.

GRUB не обязательно ставить на машину. Достаточно сделать загрузочную флешку или СD и прописать путь к ядру. GRUB-2 умеет загружaть и со сжатых NTFS.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср июл 30, 2008 3:13 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
В таком случае нужно отказаться от загрузки чрез "blue screen" и полность перейти на загрузку GRUB. Но вот что бы загрузить ОС без GRUB, понадобиться шаманство. Либо делать загрузку GRUB и переделать blue screen так, что бы можно было загрузиться и без GRUB. GRUB может сделать ramdisk? Кто будет делать ramdisk?


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср июл 30, 2008 3:53 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
<Lrz>

А каким должен быть рамдиск? И нужен ли вообще ? Одним из аргументов в пользу рамдиска в Колибри было то, что с него можно загрузить cpu или end если зависнет дисковая подсистема. Вообще-то их можно включить в ядро как бинарники и запускать прямо из памяти.

ИМХО нынешний рамдиск-образ дискеты себя изжил. Значит нет необходимости запихивать на рамдиск весь дистрибутив. Достаточно держать там несколько ключевых программ.

GRUB может загрузить файлы из которых код инициализации ядра соберёт рамдиск. Не обязательно FAT12. Любая простейшая ramfs с доступом только на чтение. Это не мешает сделать полноценный большой рамдиск и примонтировать его /temp/

Из всего загрузочного экрана нужен только выбор видеорежима и тот можно устанавливать через GRUB. -vrr -biosdisk пойдут как опции в командной строке. Хотя vrr уже не будет.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср июл 30, 2008 4:22 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 4:16 pm
Сообщения: 426
Считаю, что нужен. Он создает проблему?
Вообще его нужно воспринимать как законченную систему (минималистичную) или даже как ядро.
Всегда под рукой есть средства (отладка и прочие мелочи по изменению корней системы) получить доступ к FAT12/16/32, но вот до того же initrd (а это ramdisk) достучаться уже сложнее. Т.е. от чего сейчас уйдем, к тому и прийдем.

..bw


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср июл 30, 2008 10:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 05, 2007 12:09 am
Сообщения: 32
А как планируется поступить с сетью?
Останется в ядре, перейдёт в user-mode или в api.dll?


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 9:40 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
Все сервисы надо убирать из ядра. Так что это будет или сервис в user mode или сервис в пространстве ядра. Пока не ясно, но в ядре никаких служб не останется. Api.dll условное название прослойки для вызовов ядра и основных сервисов (файловая система, сеть и т.п)
Например api преобразует posix вызов ssize_t read (int filedes, void *buffer, size_t size) в IPC и отправит его vfs, получит ответ, установит errno и вернёт результат. При этом внутренняя реализация вызова ipc может меняться в каждой версии, а posix функция уже не изменится.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 9:56 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Serge
Означает ли твои изменения, что после них, смысл написания кода на ассемблере будет потерян ? Т.е. после изменений большая часть кода будет писаться на С, поскольку это сделать будет наиболее проще. Т.е. можно уже говорить что проект не будет в дальнейшем являться Асм проектом?


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 10:33 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
Чтобы упростить совместную разработку на С и АСМ предлагаю обсудить эти правила.

Вызываемая функция должна сохранять регистры EBX,EDI,ESI,ESP,EBP и флаг направления DF регистра EFLAGS

Функции с одним или двумя параметрами используют соглашение gcc fastcall: первый аргумент передаётся в ECX второй в EDX

Функции с числом параметров больше двух используют соглашение cdecl: параметры передаются через стек в обратном порядке, вызывающая функция очищает стек.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 11:01 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
<Lrz>

Не означает. Если кому-то нравится писать на ассемблере то api.dll не помешает. Программировать IPC на асме ещё сложнее чем на С, достаточно посмотреть на minix.
Но проект не будет асм в чистом виде. Он уже не чистый асм. Моё мнение - надо подготовить ядро и отработать микроядерные механизмы и SMP чтобы потом перенести это на 64 бита. Это проще сделать на С. И уже потом заняться доводкой кода. Тратить время на разработку новой супер-пупер 32-х битной системы на чистом асм у меня нет никакого желания потому что почти весь этот код придётся переписывать. Вы ведь новую ось пишете сразу под 64 бита ?
Конечное соотношение асм и С будет зависить от разработчиков.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 12:03 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Соглашение с С, типа stdcall or cdecl на 32 битной платформе, в достаточной мере урезает возможности для написания кода на асме. Т.е для каждого вызова нужно делать дополнительную обертку к существующему коду. Это приведет к увеличению кода (это не принципиально как говориться + или - несколько мегобайт погоду не сделают). Уменьшения производительности (и тут + или - 1000 тактов погоду не сделают).
Да, можно доводить функции до совершенства получая С-ый листинг и перерабатывая его. Это очень производительно и эффективно.

ИМХО если отбрасывать все старое то нужно изначально ориентироваться на х64. Его возможности очень широки.

>Вы ведь новую ось пишете сразу под 64 бита ?
Как я тебе говорил, некоторые люди проводят исследование в данной области, да будет поддержка только х64, и весь код будет оптимизироваться под х64 набор инструкций и возможностей.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 2:37 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
<Lrz>
Цитата:
для каждого вызова нужно делать дополнительную обертку к существующему коду
К существующему да. Неизбежное зло. Не надо делать обёртки для нового кода. По поводу скорости и эффективности асм - pushad встречается в kernel.asm 21 раз, в window.inc 19 раз. Всего 140 раз. Потому что нет никаких соглашений.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 3:50 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Пожалуйста дай ссылку на описание GRUB загрузчика, желательно на русском.
Если будет возможно уберу blue screen и код use 16 в отдельный модуль.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Чт июл 31, 2008 4:35 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
http://www.gnu.org/software/grub

Официальные
http://www.gnu.org/software/grub/manual
http://www.gnu.org/software/grub/manual/multiboot

Очень старая версия на русском
http://gazette.linux.ru.net/lg64/articles/rus-kohli.html


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Пт авг 08, 2008 4:37 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3951
Сделал загрузку GRUB-ом.

Примерное меню:

title Kolibri
root (hd0,1)
kernel --type=multiboot /kos/kernel.mnt
module /kos/kolibri.img

Образ дискеты грузится как модуль, без него работать не будет. Настройки не сохраняются и нет рестарта ядра. В остальном без изменений.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 124 сообщения ]  На страницу Пред. 1 2 3 4 5 69 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB