Как стать автором
Поиск
Написать публикацию
Обновить
70.84

Системное программирование *

Обеспечение работы прикладного ПО

Сначала показывать
Порог рейтинга
Уровень сложности

Разбор dos-подобной операционной системы. OzonOS

Время на прочтение4 мин
Количество просмотров10K

Встретил на Хабре очередную статью об написании «простой операционной системы с нуля» и решил поделится своими потугами на эту тему.

Немного предыстории

В далеком уже 2011 мне в руки каким‑то чудом попала книга «Ассемблер. Экспресс курс» за авторством Александра Панова. После Паскаля,изучаемого в школе, ассемблер показался мне языком неограниченных возможностей. После того как я вдоволь наигрался со всякими огоньками и прочими бегущими символами мне захотелось создать что‑то крутое. А что может быть круче чем собственная ОС? Так в 2012.

Переполнить стек.

Вышла Grafana 11.3: дашборды на базе Scenes, обновления визуализаций, панелей, и многое другое

Время на прочтение5 мин
Количество просмотров11K

image


Встречайте! Вышла Grafana 11.3, являющая публике дашборды на основе библиотеки Scenes — а это основа того, каким мы видим будущее дашбордов Grafana.


Но и без этого Grafana изменилась весьма заметно! Улучшен пользовательский интерфейс, включая возможность вызывать API из любого элемента на холсте с помощью новой опции «Действия» во многих визуализациях. Также появились правила записи для управляемых Grafana алертов, и теперь все могут использовать Explore Logs, часть набора приложений Explore в Grafana, представленного на ObservabilityCON, который быстро и легко извлекает аналитику из ваших данных — без каких-либо сложных языков запросов.

Читать дальше →

Boson — разработка СУБД «с нуля» (итог)

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров5.3K

Цель проекта Boson — это разработка встроенного движка базы данных документов JSON, написанный на C++. Основные возможности: стандартное хранилище JSON-документов в формате ключ/значениями с постоянным хранением на диске. Размер документов до 4Gb. Быстрый поиск документов по ID с использованием индекса B+ дерева. Поддержка курсоров для линейного обхода записей. База данных в одном файле, без временных файлов. Простое, чистое и легкое в использовании API. Самодостаточный и не требующий настройки.

В предыдущих двух статьях мы прошли шаги от кэширования файлового ввода/вода (часть I) до построенного на его базе хранилища записей произвольной длины (часть II) с проверкой целостности, возможностью получения записей списком и повторным использованием свободного места. Теперь мы переходим к завершающей части и "сердцу" СУБД - индексу.

Зачем нужен индекс: предположим, что в базе есть 1 млрд не отсортированных записей документов, тогда поиск конкретного документа по ID потребует O(n) операций, то есть до 1 млрд операций в худшем случае. Однако, если бы документы в базе были бы отсортированы по ID, то поиск в сортированной базе, тем же бинарным поиском занял бы O(log n) занял бы 30 операций. Что, теоретически, на базе в 1 млрд записей будет в 33.3 млн раз быстрее.

Читать далее

Забытая повесть «Машины, пишущие код»

Время на прочтение26 мин
Количество просмотров2.2K

Патрик через минуту вернулся с небольшой пыльной коробкой. Мы с Дейвом смотрели, как Патрик ее открывает и достает сетевой свитч — такой староватый из тех времен, когда им еще делали железные корпуса. Он воткнул блок питания в розетку и аккуратно выпрямил шнур CAT-5, чтобы подключить этот свитч к нашей сети. Я хотел наорать на него за всю излишнюю осторожность в такой момент. Дейв сидел рядом со мной, нехарактерно тихо.

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

Читать повесть

Запускаем Linux на Python

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров11K

На чем только уже не запускали Doom. Мы же будем запускать Linux. Да не где-нибудь, а на Python. Да-да, прямо вот внутри него, где в качестве среды выполнения будет выступать интерпретатор Python. Ну как... Не будем пытаться переписать ядро и другие части Linux на этот язык, а попробуем написать (точнее портировать) виртуальную машину на Python и уже в ней запускать ОС.

Начнем с позитивного, а именно с плюсов такого решения.

– Можно будет запустить Linux вообще везде, где есть интерпретатор Python.

– Можно использовать как бенчмарк конкретного интерпретатора.

– Веселимся, пока все это пишем и отлаживаем. Пожалуй, это самый главный плюс.

Минусы: будет работать оооочень не быстро (ну логично же).

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

Приступаем!

Логирование FreeRTOS через Virtual Com Port

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.4K

Отладка встраиваемых систем с микроконтроллерами часто затруднена из-за невозможности отслеживания процессов в первые секунды после запуска прошивки. Библиотека логирования для STM32 и FreeRTOS решает эту проблему, позволяя получать детальные журналы событий с самого старта программы. Это значительно упрощает диагностику ошибок и ускоряет процесс разработки. В статье рассматриваются основные функции библиотеки, настройка интерфейсов и уровней логирования, а также её внутреннее устройство.

Тестирование stm32 в Qemu в Docker

Thread execution hijacking. Исполнение шелл-кода в удаленном процессе

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2K

В статье разберем технику T1055.003

Подменим контекст потока удаленного процесса и рассмотрим способ доставки шелл-кода в процесс с помощью удаленного маппинга.

В ОС Windows существует возможность получения контекста потока и последующего управления значениями регистров. Это дает возможность изменения потока выполнения, например, с помощью модификации регистра rip. Этим и будем пользоваться.

Читать далее

Как создать простую операционную систему с нуля

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров20K

Многие разработчики хоть раз задумывались о том, чтобы создать свою собственную операционную систему (ОС). Это может показаться сложной задачей, но, если разбить процесс на этапы, создание минимальной ОС становится более реалистичным. В этой статье мы рассмотрим основные шаги создания простой операционной системы с нуля, а также инструменты и знания, которые могут вам понадобиться.

Читать далее

Технология NTB: опыт применения и ее виртуализация QEMU

Уровень сложностиСложный
Время на прочтение21 мин
Количество просмотров2K

В статье мы расскажем о системах хранения данных (СХД), в частности о применении технологии NTB поверх шины PCIe. Наша команда столкнулась с задачей виртуализации технологии NTB в QEMU, решение которой было сведено к созданию частичной виртуализации  IDT 89HPES24NT6AG2 PCI Express Switch, модификации модуля ядра Linux для поддержки нашей виртуализации и сборки воедино с помощью Yocto Project.

Читать далее

Анализируем протокол управления блоком питания Fnirsi DPS 150

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров3.6K

Сегодня я начну рассказывать, как изучал протокол программного управления блоком питания Fnirsi DPS 150. До подробного описания всех команд и откликов мы в этот раз, правда, не дойдём, но зато рассмотрим шаги, которые обязательно в итоге приведут нас к успеху. То есть, эта часть – не руководство, как программировать блок, а описание, как вскрывался протокол. Кому это интересно – начинаем.

Читать далее

Rust 1.82.0: cargo info, AArch64 для macOS в tier1, use<..>, небезопасные указатели и другое

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров3.1K

Команда Rust рада сообщить о новой версии языка — 1.82.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.82.0 вам достаточно выполнить команду:


$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →

Как написать D-Bus сервис, работающий на системной шине, на Rust

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.3K

Привет, Хабр! На связи Федотов Максим, ведущий разработчик в "Открытой Мобильной Платформе". В этой статье я хочу поделится нашим опытом создания D-Bus-сервиса на Rust, который работает на системной шине.

Если Вы только недавно начали изучать темы ОС GNU/Linux, Rust и D-Bus, но при этом Вам уже стало тесно в рамках простых базовых примеров и хочется зайти немного поглубже, то эта статья для Вас.

Читать далее

Анализ вакансий ИТ в Москве: системное администрирование, 2024г

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров11K

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

В этот раз мы дополнительно сравним результаты со значениями проведенного анализа в 2022 и 2023 годах.

Цели, условия, методика и формат анализа остались без изменений, их можно прочитать в предыдущих статьях или спойлером ниже. Данные по каждой должности сравним с предыдущими периодами по количеству вакансий и по заработным платам.

Читать далее

Ближайшие события

Я знаю, что ты делал этим летом на Postgres Pre-Commitfest Party от Postgres Professional

Время на прочтение23 мин
Количество просмотров1.3K

Чтобы объяснить, что есть Postgres Pre-Commitfest party и зачем мы в это ввязались, для начала нужно объяснить, как идёт разработка ванильного постгреса. Процесс принятия новых фичей и патчей в код разделён на так называемые коммифтесты (сокращённо CF), расписание которых всегда можно посмотреть на сайте https://commitfest.postgresql.org/. Когда разработчик предлагает свой код (неважно, будь это новая фича или багофикс), для того чтобы он был рассмотрен в рамках CF, он предварительно должен пройти процедуру ревью и быть одобрен для рассмотрения. Конечно, это совершенно не гарантирует, что код будет принят на этом CFили даже следующем, но сейчас не про это.

Найти ревьюера для своего кода зачастую задача более сложная, чем написать сам код. Человека надо погрузить в решаемую проблему, объяснить, что именно ты предлагаешь изменить, почему так, а не иначе и так далее. Прямо сейчас, в статусе Needs review, находится 29 патчей. Со свойственным нам желанием помогать, мы решили кинуть клич среди коммитеров и собрать всех желающих под одной крышей, чтобы они могли представить свои патчи, обсудить их и, возможно, найти желающего провести ревью.

Так получилось, что собрались мы в рамках проходившего Highload++ в Санкт-Петербурге. Поскольку Open Source дело добровольное, мы просто разослали всем контактам, которые у нас были, предложение примерно следующего содержания: зовём всех неравнодушных постгресистов собраться в шатре, рассказать про свои патчи, обсудить их и хорошо провести время.

Читать далее

Будущее наступило, восстание машин уже идёт. Просто ползучим методом

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров6.2K
В отличие от большинства своих статей, сегодня я не буду рассказывать ни о каких своих находках в области разработки железа или программ. Сегодня меня тянет пофилософствовать о глобальной проблеме – отношению ряда ответственных работников к внедрению программных систем в повседневную жизнь.

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

Но так получилось, что довелось мне заглянуть в мир ИИ не через популярные статьи, а покопаться во всём руками… И пообщаться с теми, кто там давно копается… Тут-то и полезли в голову разные интересные мысли. Возникло у меня ощущение, что восстание машин уже идёт, но оно не такое, что разом все машины восстали, а просто имеется медленный и незаметный процесс. О том, что я вижу и какие, как мне кажется, есть пути решения, сейчас и буду рассказывать.


Читать дальше →

Ретрансляция Kerberos. Как работает RemoteKrbRelay

Уровень сложностиСложный
Время на прочтение24 мин
Количество просмотров8.2K

В Windows Active Directory существует протокол Kerberos, который считается безопасным и неуязвимым к Relay-атакам. Или всё-таки...? В статье автор погрузился в глубины аутентификации Windows, DCOM и рассказал об инструменте RemoteKrbRelay.

Изучить

От PuTTY до МС22: сравниваем SSH-клиенты

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров35K

На сегодняшний день SSH-клиентов написано множество: от встроенных в ОС терминалов до отечественных решений вроде МС22. Я решил протестировать популярные варианты и сравнить, какой будет лучше.

Читать далее

Небезопасность Debian

Время на прочтение6 мин
Количество просмотров16K

В июне 2023 года Red Hat приняла спорное решение изменить способ распространения исходного кода Red Hat Enterprise Linux (RHEL). В социальных сетях разгорелись бурные обсуждения, оставившие многих в недоумении относительно последствий этого решения. Возникло множество вопросов о будущей жизнеспособности вторичных сборок RHEL, затрагивающих такие дистрибутивы, как Rocky Linux, AlmaLinux, Oracle Linux и другие. Каждый из них впоследствии сделал заявления, пытаясь успокоить свои сообщества.

Тем не менее, многие в сообществе открытого ПО расценили решение Red Hat как откровенно подлый ход.

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

Почему?!

Адаптируем фаззинг для поиска уязвимостей

Время на прочтение8 мин
Количество просмотров3.7K

Фаззинг — очень популярная методика тестирования программного обеспечения случайными входными данными. В сети огромное количество материалов о том, как находить дефекты ПО с его помощью. При этом в публичном пространстве почти нет статей и выступлений о том, как искать уязвимости с помощью фаззинга. Возможно, исследователи безопасности не хотят делиться своими секретами. Тем интереснее рассмотреть эту тему в данной статье.

Читать далее

Путешествие Embox на AMUR

Время на прочтение7 мин
Количество просмотров3.4K

Всем привет. Embox продолжает своё путешествие по отечественным микропроцессорам. В этой серии мы опишем путешествие на AMUR (MIK32). Кто не знает, это — полностью отечественный микроконтроллер К1948ВК018 на архитектуре RISC‑V, который производится в РФ на мощностях компании МИКРОН, входящей в ГК «Элемент».

Читать далее

Вклад авторов