All streams
Search
Write a publication
Pull to refresh
9
@lain8donoread⁠-⁠only

Rust Evangelist

Send message

Это нереалистичная идея. Вычислительная сложность огромная. Условия меняются.


Но допустим. Какие параметры мы будем оценивать? Как будем изменять алгоритм в зависимости от того, что получили сбором статистики?

Мы привыкли. У нас законы подгоняются под хотелки органов в промышленных масштабах. Доступ требуют неограниченный никем и ничем. То, до чего не могут дотянутся, то стараются отрезать целиком. Потихоньку строят аналог Великого Китайского Файрвола. При этом всём прикрывают свои намерения разве что подорожником.


В сравнении с этим получение доступа через суд в стране, где работают суды — это мелочь. На столько мелочь, что можно упомянуть, но обсуждать не особо интересно.


Как-то так

Просто они не читали одну годную книжечку. Там и про колокол есть.


Криптономикон

Ну я где-то читал, что там до кучи от NT 5.x, если ничего не путаю.

Нет. Это полностью свободное ядро. Оно скорее по мотивам. Точнее даже по слухам. Но точно не на основе. Там нет и не может быть несвободного кода.


amd64 — это то же самое, что x64?

Абсолютно то же самое. Его ещё x86_64 называют. И все эти названия взаимозаменяемые.


Значит, про странные режимы работы и костыли рассказывать долго, а про ASM — быстро?

В рамках курса нам достаточно подмножества асма. Количество команд, сравнимое с количеством пальцев. Этих команд нам уже будет достаточно для понимания сути этого всего. Доступ к памяти, простая арифметика, перемещение данных в регистры (mov) и ветвление. Всё остальное — суть вариации над этим (и парочка спец-команд для сильного колдунства, которые будут объяснены тогда, когда реально потребуются). Если эти концепции усвоить, то остальные команды можно изучить самостоятельно (по мере потребности в них). Там документация такая, что по ней можно свой процессор собрать (точнее ей действительно так пользуются). В плане структурированности — настоящее гикпорно.

Серьёзной, да, настольной — сорри, но нет (моё мнение).

Я к тому, что настольные операционки это меньшая часть этой области. Есть ещё мобилки, серваки, суперкомпьютеры и целый ворох всякого встроенного от роутеров с розетками до станков с ракетами. Все эти симкарты, жесткие диски и SSD...


Что плохого в легаси? В том, что его много, и долго про него писать?

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


Да и набор команд выглядит достаточно непродуманным. Это же просто наслоение костылей из разных эпох. Я не говорю, что это прям плохо. Но рассказывать про это будет гораздо дольше.


Но изучать весь ASM во всём объёме, да ещё и с практикой?

А в чём проблема? Там нет многотонного легаси. Оно спроектировано достаточно лёгким и понятным. Там будет всё, что можно назвать основами. Т.е. все основные команды над основными регистрами. Чуточку специальных штук. Ну и прерывания. Т.к. это RISC — основных команд там не то, чтоб много. Можно даже запомнить их. В отличии от.


Вы сейчас про что? Про клаву с её прошивкой?)

Про ту коробочку, которая PC. Вполне себе коробочка с процем, поддерживающем amd64.


А если серьёзно — то иметь для работы над такой ОС хотя бы начальную теоретическую базу

А как на счёт познавания этой самой базы в процессе или после этого всего, но по горячим следам? Всмысле сначала разбираемся с минимумом. Ну чтоб работало. А потом нам приходит светлая мысль: а как это можно улучшить, чем дополнить и т.д.?


и кстати да, несколько неплохих примеров систем, созданных небольшими коллективами, есть на слуху, одна даже чуть ли не на модифицированном NT ядре сделана

Не знаю такой. Если вы про ReactOS, то никакого отношения к NT она не имеет. Там полностью свободное ядро. Алсо этот проект не является хорошим годным примером, как проектировать ОС с нуля во имя учебных целей. Там задачи немного другие.

Серьёзные настольные ОС пишутся под несколько другие архитектуры.

Есть мнение, что таких архитектур примерно три. У нас одна из них. ARM — это по меньшей мере все современные смартфоны. И я не знаю, считаете ли вы Android (например) серьёзной операционной системой. Есть правда забавная деталь. ARMv8 (с нашим AArch64 в нашем проце) вышел в 2011 году, а первый чип в 2012. По меркам популярных архитектур это совсем недавно. Буквально утром за завтраком было.


Проще архитектура?

Сложность amd64 и этого всего в большом количестве легаси (см. x86). У арма сложность не в нём самом (не то, чтоб там было всё совсем просто), а в том, что с периферией от чипа к чипу та же беда, что и в вебе с фреймворками. Это если обобщать.


Разве в ОС главное не общие принципы (планировщик, файловая система, всё что выше вы писали)? Эти вещи вроде обычно на C реализуют, а не на ассемблере.

Есть буквально парочка штук, которые можно реализовать ТОЛЬКО на ассемблере. 150-200 строк на асме это немного (примерно такой размер для третьей части у init.S). Но достаточно для того, чтоб об этом стоило бы поговорить. Если уж мы вскрываем эту тему, то стоит углубиться дальше, чем комментирование этого самого init.S. Кроме того есть ещё парочка штук, которые без знания грязных подробностей работы современных процессоров сложновато объяснить.


тогда у меня вопрос, почему под Intel x86/x64 таких штук не выпускают

Выпускают. У вас на столе лежит одна такая. Можете попробовать. Благо инфы на эту тему огромное количество. Даже на русском языке. Если хочется прям всенепременно одноплатник, то что-то вроде есть в этом маленьком списке. Буквально десяток таких платок или около того.


А вообще может вам немного не совсем понятна цель курса? Цель стоит не научиться взаимодействовать с существующими ОС (через понимание их устройства), а именно то самое. Драйвера допустим писать. Может быть под чуть более экзотическую архитектуру что-то настрочить.


Это спойлер

Одна такая экзотическая примочка поставляется вместе с малинкой. Про это будет в моём сочинении на тему "как я провёл лето".


Только я этого не говорил. Сообщаю это исключительно на случай ежели лето будет достаточно тёплым для сочетания гавайской рубашки и характерного головного убора в красно-белых тонах. Мне самому ещё предстоит разобраться в этом.


Курс одной ногой в OSdev, а другой в embedded. Утрируя: чуть влево — Таненбаум с косой стоит, чуть в право — Свидетели Arduino с мигающими светодиодами вместо глаз. По центру камень. Гранитный. Можно погрызть чуток. Или лизнуть хотяб.

Откуда столько агрессии к плюсам?

От размера спецификаций к ним. Например. От того, что порог вхождения низкий. От шаблонов. От легаси.


А если не уберёте то что?

Уберём. А ещё и новые создадим.

Почему каждый фанат раста пытается шпилек с торону с/с++ насовать?

Может быть по той причине, что основная цель раста — замена C/C++?


Без этого никак что ли?

Никак. Священные Войны вокруг языков программирования и технологий вообще — неотъемлемая часть IT-культуры. Вы либо получаете удовольствие от участия в этом, либо стоите в сторонке и тихо посмеиваетесь. Либо и то и другое по настроению.

Может быть лучше. Правда не слишком понятно, чем. Из контекста понятно же, о чём речь.

На няшном код выглядел бы более лаконичным. Но код такого же качества на оном было бы не так уж и просто писать на самом деле. Например практически весь код курса уже сейчас потокобезопасен. Там только mutex пофиксить. Без настроек mmu правильный вариант работать не будет (я успел проверить, ага).


Плюсы Rust: много гарантий из коробки, мало UB, большая выразительность, чем в няшном.
Минус Rust: у него достаточно большой порог входа. Няшный быстрее выучить на минимальном уровне.
Ещё минус Rust: он новый. Для некоторых штук код ещё не написан. На няшном код есть для всего.


Но а что лично вам не нравится? Лично мне в некоторой степени нравятся Golang, Няшный и Rust. Не сказал бы, что какой-то из них прям так уж хуже, чем другой. Просто подходы разные.

Суть такова:


Уровень 0: Hello World
Уровень 1: Uart, чуть более удобный бутлоадер
Уровень 2: Работа с памятью и немного с файловой системой
Уровень 3: Асм и процессы


При этом на уровне 0 предполагается, что человек уже умеет на чём-то прогать из Си-подобного и в состоянии установить линупс при помощи гугла. Всё остальное явно или неявно познаётся в процессе.


После основного курса можно будет пилить различные дополнения. Благо периферии там много разной.

"… Тогда мы идём к вам"?

Замечу, что в некоторых частных случаях компьютерное распознавание уже лучше чем то, на что способен человек.

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


Проблема ещё в классификации. Допустим можно нагуглить вполне себе самообучающиеся чатботы. Формально есть. А вот точно классифицировать это всё у меня знаний не хватит.

Это достаточно общая терминология. Слабый ИИ — для решения узкой задачи (совершенно не обязательно на нейронных сетях). Любой ИИ — доступный на рынке сейчас это слабый ИИ. Сильный ИИ — универсальный интеллект на все случаи жизни и смерти. Скорее всего что-то связанное с нейронками и с большой вероятностью связанное с квантовыми компьютерами (которых толком нет ещё).


Терминология уровня ожидание/реальность.

Или в плане программы курса предусмотрено демонстрационное простейшее ядро с планировщиком, где каждый отдельный процесс моргает собственным светодиодом?

Предусмотрено. Правда ближе к концу оригинального курса. Не хочется сразу пугать размером мануала на ARMv8.


Про фреймбуфер (и ускорение видео!) и usb я попробую отдельно рассказать. Может быть и про SDIO, но мне бы самому во всём этом разобраться. Про отдельный экранчик тоже расскажу, когда руки дойдут.

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

4GB RAM

Придётся менять чип. Даже если 2 гигабайта пытаться влепить. Дело в том, что по адресу 0x3F000000 (с отображением на 0x7E000000) уже начинается периферия (это в BCM2837). На самом деле получается, что часть памяти на малинке по сути недоступна (несколько мегабайт — мелочь). Четыре гигабайта — это уже всё 32-битное пространство. Т.е. совместимость со старыми малинками будет сломана. Соответственно это уже получится совершенно несвязанная платка в итоге.


Такие дела.

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

Собственно это решает. В уровне 3 это будет на столько критично, что чуть ли не с нуля придётся переписывать. Асм-часть точно будет другой.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity