Все потоки
Поиск
Написать публикацию
Обновить
90.5

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

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

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

NE-Executable | Разбор деталей часть 2

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

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

Читать далее

Новости

NE-Executable | Разбор деталей часть 1

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

Формат "Новых исполняемых" файлов называют сегментным. Даже в официальной документации Microsoft её заголовок это "Сегментный Новый Исполняемый формат" (ориг. "Segmented NEW Executable Format").

Этот сегментный формат программ поддерживал

Сегментную модель памяти;

Защищенный режим Intel 286+

Динамичкую компановку (Dynamic Linking);

Управление ресурсами;

Возможность экспорта и импорта определенных процедур.

Читать далее

NE-Executable | Разбор деталей часть 1

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

Формат "Новых исполняемых" файлов называют сегментным. Даже в официальной документации Microsoft её заголовок это "Сегментный Новый Исполняемый формат" (ориг. "Segmented NEW Executable Format").

Этот сегментный формат программ поддерживал

Сегментную модель памяти;

Защищенный режим Intel 286+

Динамичкую компановку (Dynamic Linking);

Управление ресурсами;

Возможность экспорта и импорта определенных процедур.

Читать далее

Пишем и запускаем свой исполняемый файл на Linux

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

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

Больше ничего интересного не будет :-)

Интересненько...

Управляем умным домом Home Assitant через Алису и без интернета. Часть 3

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

В этой части рассмотрим с теоретической стороны разработку дополнений (add-ons) для Home Assistant Operating System.

Читать далее

snapd, 100% загрузка cpu и баг ядра

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

Еще одна поучительная история из жизни с Linux, специально чтобы вы потеряли сон и покой, узнав что такое вообще возможно.

Читать далее

DIY-операционки с нуля — эксперименты энтузиастов

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

Поговорим о трёх пет-проектах, авторы которых не претендуют на разработку второго Linux, но интересуются устройством системного программного обеспечения. Расскажем про операционки Snowdrop, Banan, Serena и их уникальные черты.

Читать далее

Rust 1.90.0: ldd для x86_64-unknown-linux-gnu, публикация рабочих пространств и понижение x86_64-apple-darwin до Tier 2

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

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

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

$ rustup update stable

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

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

Что стабилизировано в 1.90.0

Пишем с нуля ядро операционной системы

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

Недавно я реализовал минимальный proof of concept ядра операционной системы с разделением времени для RISC-V. В этом посте я расскажу о том, как работает прототип. Целевая аудитория поста — все, кому интересно понимание низкоуровневого системного ПО, драйверов, системных вызовов и так далее. Надеюсь, он окажется особенно полезным для студентов, изучающих архитектуру ПО и компьютеров.

Это новый подход к упражнению, которое я выполнил на моём студенческом курсе по операционным системам; функционально он должен напоминать типичный проект по ОС. Однако в этом эксперименте сделан упор на современный инструментарий, а также на современную архитектуру RISC-V. RISC-V — это потрясающая технология, в которой проще разобраться быстрее, чем в других архитектурах CPU; в то же время она остаётся популярным выбором для многих новых систем, а не только архитектурой для обучения.

Отличия от моего предыдущего проекта заключаются в том, что я реализовал это упражнение на Zig вместо традиционного C. Это не просто интересный эксперимент: я считаю, что Zig повышает возможность его воссоздания на вашей машине, потому что его очень легко настроить и он не требует установки.

Читать далее

Пошаговая разработка SPI драйвера для ЗОСРВ «Нейтрино»

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

В современных встраиваемых системах SPI остаётся одним из ключевых интерфейсов для обмена данными с периферийными устройствами — от датчиков до Flash-памяти. При этом эффективная работа с SPI требует не просто доступа к регистрам контроллера, а продуманной архитектуры, где драйвер выступает как последнее звено между программной логикой и аппаратной реализацией. В данной статье мы расскажем про архитектуру SPI и на практикте разберем все этапы разработки SPI драйвера для нашей операционной системы реального времени "Нейтрино".

Читать далее

Процессорный модуль Corgi SoM v1 на базе Xilinx Zynq-7000

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

Коллеги, приветствую, обзорная статья работы с Corgi SoM v1 на базе AMD (Xilinx) Zynq-7000. Статья охватывает работу модуля с Vivado IDE, Vitis IDE, подготовку базового образа, работу с Embedded Linux (u-boot, device tree, linux kernel, rootfs). Подготовку образа для SPI NOR памяти, SPI NAND памяти и сопутствующие моменты необходимые для старта работы с данным модулем. Дополнительно статья будет полезно для linux embedded разработчиков, которые делать будут bring-up плат на базе AMD(Xilinx) zynq платформ.

Читать далее

Прячемся в «пещере кода»

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

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

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

Читать далее

Кастомный процессор для OpenTelemetry Collector. А почему бы и нет?

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

Всем привет! Меня зовут Артем, я платформенный инженер и в работе часто приходится сталкиваться с Observability‑инструментами. Одним из таких инструментов, о котором я хотел бы рассказать является OpenTelemetry Collector. Это мощный инструмент, который позволяет работать с различной телеметрией и строить гибкие пайплайны для метрик, логов и трейсов.

Но иногда возможностей стандартного набора компонентов не хватает, чтобы справиться с поставленными задачами без использования костылей и изоленты. Тогда на сцену выходят кастомные компоненты для Otel-Collector.

В этой статье я расскажу про свой опыт написания кастомного процессора для otel-collector. Он обогащает спаны данными из CSV‑файла: находит совпадение по атрибуту и добавляет дополнительные поля прямо внутрь трейсов. Мы разберём архитектуру процессора, посмотрим код и конфигурацию, а в конце покажу, как собрать и запустить Collector с этим расширением.

Читать далее

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

Нужна такая же CRM для B2B, но с перламутровыми пуговицами. Будем кастомизировать сами

Время на прочтение3 мин
Количество просмотров437

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

Читать далее

Ещё одно тестирование Angie, HAProxy, Envoy, Caddy и Traefik от Devhands

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

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

Читать далее

Достучаться до RDPMC вайб-кодингом Windows драйвера

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

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

Читать далее

Assembler для Windows в Visual Studio. Часть вторая — MASM x64 и юникод

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

Вторая часть рассказа об ассемблере под Windows. Здесь я расскажу про 64-разрядные приложения в Windows, чем отличается MASM 64 от MASM 32, про макросы из MASM 64 SDK, как работать с Юникодом на примере простого консольного REPL'а, а ещё как обойтись без Visual Studio и пользоваться masm просто из командной строки.

Первая часть — Assembler для Windows в Visual Studio.

Читать далее

io_uring: высокопроизводительный асинхронный ввод/вывод в Linux

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

В этой статье мы разбираем, как использовать io_uring для высокопроизводительного асинхронного ввода-вывода в Linux, изучаем его архитектуру, ключевые флаги и расширения, приводим пример простого эхо-сервера на liburing, говорим о профилировании, отладке и лучших практиках для системных разработчиков.

Читать далее

Создание интро в 2кб на Rust за вечер

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

В данной статье будет рассказано, как можно довольно просто сделать маленькое интро используя язык Rust. Будет очень много Unsafe и WinAPI кода, а так же предполагается, что читатель уже хоть немного знаком с OpenGL 3.3.

Читать далее

Билд, который построил Gradle: разбираемся в современной сборке проектов под C++

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

Привет, Хабр! Меня зовут Александр Корнилов. Я старший разработчик в «Лаборатории Касперского» — в мобильном подразделении Kaspersky OS. Так получилось, что большую часть своей жизни я занимался системным программированием. Сегодня хочу поднять важную и болезненную тему практически для всех С/С++-разработчиков — поговорить про билд-системы.

Читать далее
1
23 ...

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