Страница 1 из 1

Сравнение масштабов A2 с другими ОС

Добавлено: 06.01.21 14:39
смотритель
КротОзёр писал(а):
БудДен писал(а): A2 не относится к семейству BSD. Прежде всего, важен объём - всего 1 млн строк. Чем меньше объём, тем проще проверить. У Линукса только ядро - порядка 10 млн, а проверять надо каждую строчку. Приложения не менее огромны. А речь идёт про ОС для критически важных применений, когда надёжность важнее раскудрявости.
Необходимость поддержки различного оборудования неизбежно увеличивает объём исходных кодов. Не считаю корректным сравнивать ядра по этому критерию. Уж лучше тогда разделять компоненты ОС по назначению.
Предлагается здесь обсудить, как корректно сравнить сложность A2 и Linux (или других альтернатив). Может быть, её простота иллюзорна?

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 06.01.21 17:11
КротОзёр
Простота любого сложного механизма иллюзорна. Но в силу не столь явной классификации, часть ПО стала считаться "системным", что резко размыло границу.

Кто-то считает "размер ОС" по объёму данных на установочном накопителе. Я уж не говорю о модулях ядра.
  • То ядро, что установлено и функционирует в дистрибутиве GNU/Linux лишено в своём составе как минимум трети того, что присутствует в общем дереве исходников.
  • Тогда, как то же ядро ntoskrnl у Windows является микроядром, лишённым большей части модулей в своём составе. Всё это подключается в процессе исполнения из состава установленных "драйверов".
Но никто же об этом не задумывается?

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 07.01.21 00:11
БудДен
Да, я не знаю структуру ядра линукс. Но сравнить как-то надо. Понятно, что любая ОС достаточно сложна, но они не все одинаковы. Как я уже сказал, A2 по сути написана на одном языке программирования. Т.е. на двух - обероне и ассемблере. Linux написан как минимум на... сложно посчитать... Если взять тулчейн gcc, то там есть make, bash, есть ли там m4? Си, ассемблер. Если взять apt, то это Питон. bash, кстати, это настоящий язык программирования по его роли - ведь он же отвечает за запуск служб, т.е. по сути дела, запуск линукс написан на нём. И цена ошибки в скрипте на баше (например, продолжение скрипта из-за отсутствия проверки результата вызова программы) огромна. Наверное, всем приходилось отлаживать всякие CI-скрипты, эта задача всегда ужасно надолго. А при том язык сам настолько отстойный, насколько это только можно себе представить. Все умолчания в нём сделаны в форме грабель. Притом, я пытался выработать безопасные соглашения для работы на баше и оказалось, что грабли имеют настолько причудливую форму, что это вообще не получается, есть огромные обсуждения на эту тему, и люди приходят к тому, что решения нет.

Я на самом деле не исключае того, что A2 не проще линукса. Это крайне маловероятно, но может быть и такое. Просто поскольку A2 это был изначально полуучебный проект, там куча студенческого кода, срезанных углов и просто всяких недоделок. Может быть, если их доделать, получится монстр?

Но во всяком случае, наличие всего одного ЯП - это уже некое "измерение" простоты. По-хорошему-то, нужно оценить, из чего состоит ядро Линукса.

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 07.01.21 00:44
КротОзёр
Насчёт граблебаша — согласен. В нём ещё есть практически не решённая проблема — экранирование символов в списках. Баш считает, что пробел — это разделитель элементов. Приходится сооружать костыли вроде замены пробелов специально для цикла и их возврат уже внутри итерации. В общем, жуткий интерпретатор.
БудДен писал(а):
07.01.21 00:11
По-хорошему-то, нужно оценить, из чего состоит ядро Линукса.
Видел там Си и Ассемблер. Ничего другого не замечал.

Кстати, ядро Linux ещё имеет неотделимую от его дерева исходников систему сборки KBuild. Там есть подгружаемые модули, встраиваемые, но подгрузка может производиться разными методами: при помощи внешней службы вроде UDEV или в процессе разбора т.н. "дерева устройств" (Device Tree). Для "встраиваемых" систем второй способ просто необходим, но это — опять же следствие недоработки архитектуры ядра.

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 07.01.21 00:47
БудДен
Я имел в виду, сколько из 10 млн составляют особенности оборудования.

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 05.02.21 10:05
Monk
БудДен писал(а):
07.01.21 00:11
Как я уже сказал, A2 по сути написана на одном языке программирования. Т.е. на двух - обероне и ассемблере. Linux написан как минимум на... сложно посчитать... Если взять тулчейн gcc, то там есть make, bash, есть ли там m4?
В A2 нет командной строки и скриптов? А как делается условная компиляция для разного оборудования?

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 05.02.21 19:58
MihalNik
Monk писал(а):
05.02.21 10:05
В A2 нет командной строки и скриптов?
В принципе неясно, почему нельзя писать команды на самом ЯП, тем более однопроходном.
И почему не хранить их в скомпилированном виде, когда перекомпиляция ничего не стоит.

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 06.02.21 23:28
БудДен
Максимум скриптов - это линейный блок из команд, который работает до первой ошибки. Условная компиляция делается
с помощью переменных условной компиляции, которых два вида (думаю, что они не связана, хотя могут и совпадать).

Первый вид - для подключения/исключения файлов в файле проекта, в данный момент файл проекта -

https://gitlab.com/budden/ja-o-s/-/blob ... ce/ЯОС.фок

Второй вид - для подключения/исключения фрагментов текста внутри файлов (аналог IFDEF).

Согласен, что скрипты надо писать на основном ЯП, только, возможно, нужно сделать механизм позднего связывания (динамический вызов команд уже есть, но писать так - будет монструозно). Ну и сделать какие-нибудь расширения для манипуляции потоками ввода-вывода.

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 13.02.21 08:12
440440
Сложность в каком смысле? Если говорить про линукс, то специалисты скажут, что он очень простой. Ведь очень просто скачать линукс, записать его на флешку, установить и выйти в интернет. Или развернуть на нём какой-нибудь простенький сервер. Поверх ставится какой-нибудь php и нанятый программист делает нужный функционал. Что там под капотом никого не волнует.

Все эти горе-линуксоиды, знаете как они работают? Если что-то пошло не по плану, начинают дико стучать по клавишам, якобы что-то делают, и где-то через час-два сдаются со сломанной системой. Кажется они скоро изобретут подход с переустановкой ОС в случае проблем.

А если речь про сложность ядра системы... много ли вы знаете системных программистов линукс? А ведь есть ещё системные программы, библиотеки.

Re: Сравнение масштабов A2 с другими ОС

Добавлено: 13.02.21 15:22
БудДен
Имеется в виду сложность как системы. Наверное, есть какая-то наука, которая изучает системы, и там есть метрики сложности. Так вот, если там 10000 драйверов, то эти драйвера между собой не связаны. В этом случае, они делают вклад в объём системы, но не в сложность.

> Все эти горе-линуксоиды, знаете как они работают? Если что-то пошло не по плану, начинают дико стучать по клавишам, якобы что-то делают, и где-то через час-два сдаются со сломанной системой.

Не, они не так работают, хотя смотря кого понимать под "линуксоидами".