Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Jun 19, 2019 10:46 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 29 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Fri Nov 22, 2013 9:41 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Fanatic wrote:
1. io.sys - это не ядро. Ядро - это msdos.sys. По крайней мере - в ms dos.
msdos.sys - это, грубо говоря, реализация int 21h. io.sys - это, грубо говоря, слой абстрагирования от оборудования: оборачивает в единый интерфейс блочных и символьных устройств вещи типа COMx/LPTx - реализованные в самом io.sys - и внешние драйвера. И то, и другое - части ядра.

Fanatic wrote:
Если загрузчик вынесен в отдельный от ядра файл, то с точки зрения формальной логики он не может являться частью ядра.

Если формально разрезать пополам файл kernel.mnt, получатся две части ядра. Если какой-то код инициализирует драйверы, он автоматически становится столь же важным, как половинка kernel.mnt.

Fanatic wrote:
Под "рабочей средой" вы подразумеваете защищённый режим памяти?
Не только. Защищённый режим процессора, страничная организация памяти и функции для работы с ней, менеджер памяти, APIC, таймер, тикающий на заданной частоте, многозадачность и примитивы синхронизации для работы с ней. Применительно к Колибри - реализация всех функций, перечисленных в kernel/trunk/core/exports.inc - API ядра для драйверов.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Fri Nov 22, 2013 9:45 pm 
Offline
Just Flooding

Joined: Fri Nov 08, 2013 2:49 pm
Posts: 19
CleverMouse wrote:
Если формально разрезать пополам файл kernel.mnt, получатся две части ядра. Если какой-то код инициализирует драйверы, он автоматически становится столь же важным, как половинка kernel.mnt.


Если в программе есть что-то неважное от чего можно отказаться, это следует немедленно удалить.

Загрузчик остаётся загрузчиком, даже если находится в одном общем файле с ядром. И он должен быть выгружен (= занимаемая им память должна быть освобождена) после завершения инициализации.


Top
   
PostPosted: Sat Nov 23, 2013 12:58 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1331
Две монеты wrote:
CleverMouse wrote:
Если формально разрезать пополам файл kernel.mnt, получатся две части ядра. Если какой-то код инициализирует драйверы, он автоматически становится столь же важным, как половинка kernel.mnt.


Если в программе есть что-то неважное от чего можно отказаться, это следует немедленно удалить.

Загрузчик остаётся загрузчиком, даже если находится в одном общем файле с ядром. И он должен быть выгружен (= занимаемая им память должна быть освобождена) после завершения инициализации.

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


Top
   
PostPosted: Sat Nov 23, 2013 3:37 am 
Offline
Just Flooding

Joined: Fri Nov 08, 2013 2:49 pm
Posts: 19
Во-первых, не по теме.

Во-вторых, я считаю неверным что ядром размером меньше 50 кб занимает 1,5 Мб.

В-третьих, это был ответ на фразу "он автоматически становится столь же важным" - не становится. Если он не важен, значит он не нужен. Код инициализации после завершения инициализации не нужен.

Мне каждому объяснять прописные истины, или всё-таки дойдёт прочитать Таненбаума, Windows/Linux Internals или хотя бы SDK по прикладному программирования для Win32/Linux прежде, чем пытаться строить архитектуру ядра слабо представляя что такое ядро, кому и зачем оно нужно. Тогда и не будет ситуации, когда функция Windows просит буфер размером 64 байта, а Колибри - 1 кб, тогда не придётся объяснять что такое асинхронность и зачем она нужна, что такое IRP, как работает отложенная обработка аппаратных прерываний, что такое стек драйверов, что такое initrd и какие у него преимущества и недостатки, и т.д.

Совет, который ты просил: если (за 9 лет) ни хрена не выходит - прочти наконец учебник. Прочти его на этот раз до конца.


Top
   
PostPosted: Sat Nov 23, 2013 3:40 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1331
Две копейки
Шел бы ты на... osdev.ru Таннебаумом детей пугать.
Критерием качества в Колибри всегда (ну по крайней мере до прошлого лета) была эффективность кода:
diamond wrote:
Напоминаю, что Колибри позиционируется как маленькая и быстрая ось.



btw, я насчет другого интересного решения хотел поговорить:
в QNX есть утилитка FastBoot, копирующая весь образ памяти и состояние регистров всех контроллеров в единый ROM-файл (разумеется, работает она только на избранных чипсектах).
После перепрошивки (вместо чипа BIOS втыкают ROM-образ QNX) PC за 2-3секунды грузит готовую рабочую среду.


Top
   
PostPosted: Sat Nov 23, 2013 4:58 pm 
Offline
Just Flooding

Joined: Fri Nov 08, 2013 2:49 pm
Posts: 19
Возможность прошивки в ППЗУ - одно из преимуществ initrd. Перепрошить можно любой BIOS с ППЗУ.

Изначальная цель проекта coreboot состояла в создании возможности записать Линукс в BIOS. Для этого потребовалось переписать BIOS чтобы выполнить все выполняемые им процедуры. Цель достигнута. Новая цель проекта - создание универсального BIOS, обеспечивающего возможность загрузки любой ОС.


Top
   
PostPosted: Mon Nov 25, 2013 3:10 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Две монеты
Вы узнали про архитектуру NT. Это похвально. Но теперь вы считаете, что всё, что не следует этой архитектуре, - быдлокод. Это уже печально.

Две монеты wrote:
Во-вторых, я считаю неверным что ядром размером меньше 50 кб занимает 1,5 Мб.
К.О. просил передать, что ядро размером меньше 50 кб занимает меньше 50 кб. Я добавлю, что текущий размер ядра Колибри - около 90 Кб. Если вы про размер kolibri.img - я для тестов загружала систему с образом 720К, можно и меньше без всяких проблем. Но людям почему-то недостаточно ядра и драйверов, им ещё программы подавай.

Две монеты wrote:
Совет, который ты просил: если (за 9 лет) ни хрена не выходит - прочти наконец учебник. Прочти его на этот раз до конца.
Это вы про себя? У нас вполне неплохо выходит.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Tue Nov 26, 2013 10:10 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 455
Хм... загрузчик уже не обсуждаем(я уж не говорю про "пишем")... :)

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
 Post subject: To CleverMouse
PostPosted: Thu Nov 28, 2013 6:58 pm 
Offline

Joined: Fri May 25, 2012 12:45 pm
Posts: 75
А ты сможешь скомпилировать exe-шники, которыми я пользовался для установки системы на нетбук, для MS DOS?

setmbr.exe и inst.exe, которым можно было бы в параметрах скармливать диск, задавать, к примеру, параметр "-d" для какого-нить дебаггинга и -expert чтобы не выдавал warning-ов - и они справлялись бы со своей задачей из коммандной строки.

UPD: Ещё лучше было бы объединить их в один "inst.exe", которому можно было бы задать параметр "-setmbr" - и он прописывал бы mbr-ку.
Разместить некий Warning при запуске без параметра "-expert", заглавным и жирным шрифтом, о том что, дескать: "Если у вас несколько ОС - гуляйте лесом и пользуйтесь GRUB, этот установщик, мол, не для тех, кто хочет "поматросить и бросить", а для тех кто "всерьёз и надолго" и т.п.
А потом перед самой операцией прописывания mbr какой-нибудь "Are you sure?" и дефолтом "N"...


Top
   
PostPosted: Thu Nov 28, 2013 7:19 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Fanatic wrote:
А ты сможешь скомпилировать exe-шники, которыми я пользовался для установки системы на нетбук, для MS DOS?
Нет, они используют WinAPI.

Fanatic wrote:
Ещё лучше было бы объединить их в один "inst.exe", которому можно было бы задать параметр "-setmbr" - и он прописывал бы mbr-ку.
Есть проблема: не на всех флешках есть MBR, на некоторых прямо с нулевого сектора начинается единственный раздел. Особенно часто так бывает на SD-картах. Попытка записи MBR в таком случае убьёт файловую систему.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Thu Nov 28, 2013 8:30 pm 
Offline

Joined: Fri May 25, 2012 12:45 pm
Posts: 75
CleverMouse wrote:
Нет, они используют WinAPI.
А написать на для MS DOS можешь?

CleverMouse wrote:
Есть проблема: не на всех флешках есть MBR, на некоторых прямо с нулевого сектора начинается единственный раздел. Особенно часто так бывает на SD-картах. Попытка записи MBR в таком случае убьёт файловую систему.
Ох ты ж господи, в коем-то веке вопросы совместимости беспокоят приверженцев Linux-подхода :))))))))
Иронизирую.

В таком случае нужен ещё один большой warning заглавными жирными буквами, а для пущей уверенности - "are you sure?" c default-ным "N".


Top
   
PostPosted: Thu Nov 28, 2013 8:51 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Fanatic wrote:
А написать на для MS DOS можешь?
Мне это неинтересно. Версию для Windows писала не я.

Fanatic wrote:
В таком случае нужен ещё один большой warning заглавными жирными буквами, а для пущей уверенности - "are you sure?" c default-ным "N".
Откуда пользователь узнает, нужно ему писать MBR или нет? Текущая инструкция с раздельными шагами "запускайте setmbr.exe, только если после inst.exe не загрузилось" тоже не идеал - во-первых, мало ли почему не загрузилось, во-вторых, если setmbr всё же нужен, получается лишний шаг с неработающей перезагрузкой - но хотя бы как-то решает вопрос.

_________________
Сделаем мир лучше!


Top
   
 Post subject: Уточнения
PostPosted: Thu Nov 28, 2013 9:10 pm 
Offline

Joined: Fri May 25, 2012 12:45 pm
Posts: 75
Две монеты wrote:
Поэтому и переход в Колибри от одной схемы к другой ничего не даст.
Даст. С самого начала делать как проще, даже не допуская мысли о том, что однажды это может сильно понадобиться? Мол - да так повелось уже, никто менять не будет...
Получается как в той истории: "Вышел старший брат во двор, наступил на грабли, получил по лбу - упал и лежит. Пошёл средний брат во двор, подошёл к граблям, наступил - получил по лбу, упал и лежит. Увидел младший брат это дело, пригорюнился - да делать нечего..."


Две монеты wrote:
Производительность по большей части определяется алгоритмами, а не их реализацией. Сравни: нужно вскопать 10 га, у меня трактор, у тебя - палка-копалка. Палка-копалка "проста как доска"... :) Тесты показывают, что выигрыш в производительности от перехода на ассемблер редко превышает 5-10%; разница в размере скомпилированного файла более ощутима, но по сравнению с ёмкостью жёстких дисков не критична.
Экий Вы хитрец: взяли - и подменили предмет обсуждения на свой, смешав всё в кучу :))
Давайте-ка по полочкам.
Я утверждаю вполне очевидный факт, что ассемблер - язык программирования низкого уровня, на нём программируют pic-контроллеры, микросхемы разнообразного оборудования и прочую полупроводниковую технику. Написание кода, описывающего заданную логику, усложнено крайне низким уровнем абстракции, но выполнение упрощено ввиду максимального исключения опосредованности при обращении к оборудованию.
Язык высокого уровня, такой как PHP, к примеру - намного упрощает написание кода, описывающего заданную логику, но выполнение такого кода усложнено многократной опосредованностью.

Поэтому у нас речь идёт не о комбайне и копателе, а скорее об организации труда: в случае с языком высокого уровня обработка поля происходит не комбайном, а всё теми же ребятами с лопатами, но организованными иерархически, с множеством подрядчиков, их управляющими, начальством над управляющими, районной администрацией, которая отводит поля для обработки, производством, выпускающим лопаты, а так же профсоюзом, выделяющим новых юнитов. В итоге весь процесс тормозится от того, что одни ждут лопат, другие - испытывают проблемы со своевременным снабжением новыми юнитами, третьи - завязли в бюрократической волоките, дожидаясь выдачи какого-нибудь сертификата.
В случае же с языком программирования низкого уровня - нам приходится непосредственно управлять каждым копателем, но при этом мы значительно выигрываем по срокам, избегаем расходов на содержание бюрократии и получаем полный и непосредственный контроль над процессом обработки участка земли.
Преимущества и недостатки очевидны: управлять каждым копателем очень тяжело, это предъявляет непомерно высокие требования к управляющему, который должен знать максимум деталей и тонкостей работы копателей, но задача будет выполняться с многократным сокращением сроков. Вместе с тем: выдавать задачи высокого уровня абстракции намного легче, но дождаться их выполнения нередко становится тяжкой мукой.


Две монеты wrote:
Установщик будет полезен, когда система станет востребованной среди сколько-нибудь большого числа людей. На текущий момент большинство использует её как LiveCD на эмуляторах.
У вас телега впереди лошади едет. Вам не приходило в голову, что система потому и непопулярна, что её хрен установишь? :)))))))))))))) Я неделю бился в конвульсиях, пытаясь установить Колибри на нетбук - и то, только потому что я "Фанатик"... А сколько ещё есть таких упоротых? Единицы. Вот и получаем "узкий круг ограниченных людей" :))


Top
   
PostPosted: Thu Nov 28, 2013 9:21 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Fanatic wrote:
система потому и непопулярна, что её хрен установишь?
Её сложно установить единственной системой на отдельный жёсткий диск, это так, ибо разработчики этим не занимаются. Другие варианты установки просты вплоть до "запустите mtldr_install.exe, он сам всё сделает" в случае установки второй системой после загрузчика Windows.

_________________
Сделаем мир лучше!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 29 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited