Привет, Хабр! В этой статье я хочу рассказать о решении одной из типичных проблем, с которой Embox справляется лучше GNU/Linux. Речь идет о времени реакции на пакет, переданный по протоколу Ethernet. Как известно, основной характеристикой передачи данных по сети является пропускная способность, и с ней у GNU/Linux все хорошо. Но когда речь заходит об уменьшении времени на прием/передачу единичного сетевого пакета, могут возникнуть проблемы. В частности, у заказчика была плата DE0-Nano-SoC с Linux, и с помощью этой платы хотелось управлять неким объектом по сети. Топология сети — точка-точка, никаких роутеров и хабов нет. По модели управления время реакции должно быть меньше 100 мкс, а на базе Linux удавалось добиться только 500 мкс.

Системное программирование *
Обеспечение работы прикладного ПО
Нерушимая память, нерушимые процессы

Прочитав недавно (1, 2, 3) с каким трудом даются “космические” процессоры, невольно задался мыслью, раз “цена” за устойчивое железо настолько высока, может быть стоит сделать шаг и с другой стороны — сделать устойчивый к спецфакторам “софт”? Но не прикладной софт, а скорее среду его выполнения: компилятор, ОС. Можно ли сделать так, чтобы выполнение программы в любой момент можно было оборвать, перезагрузить систему и продолжить с того же (или почти с того же) места. Существует же в конце концов гибернация.
О работе ПК на примере Windows 10 и клавиатуры ч.2

Проблема высшего программистского образования в том что студенты весьма подробно изучают отдельные аспекты вырванные из контекста не понимая как это всё увязывается вместе. Несколько семестров высшей математики, чтобы понимать физику, чтобы понимать электротехнику, электроприборы, ассемблер, ОС, алгоритмы, системное программирование и куча других предметов утрамбованных в стандартную пятилетнюю программу. Обилие деталей и никто не объясняет как это вписывается в общую картину, предполагается что через 5 лет студент сам увяжет это в голове, а потом пойдёт работать с .Net и никогда не притронется к электронике и режиму ядра. Я считаю, что не нужно так подробно знать о работе компьютера, достаточно общего понимания что происходит ниже по технологическому стеку. Если бы люди составляющие программы обучения для ВУЗов открывали автошколы, вы бы учили русский язык, каллиграфию и гидродинамику, потому как надо общаться с инспекторами, менять жидкости и писать объяснительные. В статье будут некоторые неточности, так что для сдачи экзамена по профильным предметам она не подойдёт, но после неё будет легче понять устройство ПК.
Под катом трафик.
Что нужно знать, если вы хотите вызывать Go функции из ассемблера
You've run into a really hairy area of asm code.
My first suggestion is not try to call from assembler into Go. — Ian Lance Taylor
До тех пор, пока ваш ассемблерный код делает что-то простое, всё выглядит неплохо.
Как только у вас возникает задача вызвать из ассемблерного кода Go функцию, один из первых советов, который вам дадут: не делайте так.
Но что если вам это очень-очень нужно? В таком случае, прошу под кат.
Go vs Python. Виталий Левченко
Предлагаю ознакомиться с расшифровкой доклада Виталия Левченко Go vs Python
Go — волшебное слово, решение всех проблем продакшна разом и одновременно негодная технология без эксепшнов. Истина посередине, поэтому поговорим о конкретных примерах:
- asyncio vs горутины;
- производительность узких мест;
- лаконичность vs простота кода;
- порог входа;
- тулинг и паттерны поиска проблем и оптимизации производительности;
- обслуживание в продакшне.
Операционная Система «Сивелькирия»: технологии
Данная статья продолжает цикл публикаций о проекте операционной системы «Сивелькирия». Как уже упоминалось в прошлых статьях, данная ОС в настоящее время находится на ранней стадии проектирования и разработки, так что желающим получить пруфы придётся набраться терпения. На всякий случай ещё раз упомяну, что автор не ставит перед собой цели убедить кого-либо в чём-либо, вместо этого продолжая публикацию с целью получения пользы от обсуждений. Пользуясь случаем, хочу выразить благодарность всем, кто оставил полезные комментарии под прошлыми публикациями.
В первой статье цикла приводилась краткая информация о структуре данной ОС. Во второй статье описывались цели проекта, а также то, каким образом он предполагает вырваться из порочного круга «нет софта — нет пользователей — нет разработчиков — нет софта». В этот раз основное внимание будет уделено архитектурным вопросам. Будет показано, какими техническими средствами предполагается обеспечить взаимодействие модулей, написанных разными людьми на разных языках и собранных под различные окружения. Кроме того, будут затронуты мелкие детали архитектуры.
ОС «Сивелькирия»: миссия и форма запуска
Это — вторая статья из серии публикаций о проектируемой на данный момент ОС «Сивелькирия». Первая статья доступна здесь, следующая — здесь. Поскольку в комментариях к ней многократно задавались вопросы о цели всей затеи, а также о количестве труда, которое придётся вложить в разработку, чтобы она «взлетела», в данной публикации основное внимание будет сосредоточено именно на них.
Во-первых, будет описана миссия данной разработки (в следующих статьях к тезисному изложению добавится подробный обзор тех систематических проблем существующего ПО, которые предлагается решить в рамках данной разработки). Во-вторых, на примере возможных способов запуска предложенной ОС будет показано, что начать получать пользу от разработки можно будет ещё до набора критической массы доступного ПО или полной миграции под новую систему.
Технические и организационные моменты, упомянутые в данной статье, будут подробно раскрыты в следующих публикациях.
Динамическая память в системах жёсткого реального времени
Существует класс приложений реального времени, для которых тяжело предсказать потребности в распределении памяти во время выполнения статически. В этот класс входят, например, встраиваемые реализации стеков некоторых коммуникационных протоколов, где поведение и распределение ресурсов определяется отчасти активностью других агентов в сети. Классический подход в таких случаях заключается в использовании блочных менеджеров памяти, выделяющих фрагменты фиксированного размера (как это сделано, например, в LwIP). Этот подход накладывает нежелательные функциональные и качественные ограничения на реализацию. В этой заметке я предлагаю точку зрения, что традиционные (не блочные) аллокаторы незаслуженно обделены вниманием разработчиков систем реального времени, делюсь соображениями по релевантным вопросам, жалуюсь на жизнь, и предлагаю улучшить положение дел.
(КДПВ – см. аннотацию к диаграмме в конце)
Выпуск Rust 1.41.0: новые гарантии для Box<T> в FFI, улучшения в cargo install, ослабление ограничений для типажей
Команда Rust рада сообщить о выпуске новой версии, 1.41.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если вы установили предыдущую версию Rust средствами rustup
, то для обновления до версии 1.41.0 вам достаточно выполнить следующую команду:
rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Что вошло в стабильную версию 1.41.0
Основными новшествами Rust 1.41.0 являются ослабление ограничений на реализацию типажей, улучшения cargo install
, новый формат файла Cargo.lock
более дружелюбный для работы с git
, и новые гарантии для Box<T>
, связанные с FFI. Смотрите подробности выпуска для дополнительной информации.
Операционная Система «Сивелькирия»: вводное описание
Эта статья открывает цикл публикаций об операционной системе «Сивелькирия», на данный момент находящейся на раннем этапе проектирования и разработки. В статьях цикла будут подробно описаны системные проблемы популярных операционных систем и предложены пути их решения. Автор не ставит перед собой цели убедить кого-либо в чём-либо и сосредотачивается исключительно на описании предложенных решений ради извлечения пользы из обсуждения. Публикация будет вестись частями, поскольку объём полного описания выходит за любые разумные ограничения на размер хабростатьи.
Всем, кто заинтересовался, добро пожаловать под кат.
Заставляем любой процесс работать с транзакционной NTFS: мой первый шаг к созданию песочницы для Windows
В ядре Windows есть модуль, отвечающий за поддержку группировки файловых операций в некоторую сущность, называемую транзакцией. Действия над этой сущностью изолированы и атомарны: её можно применить, сделав перманентной, или откатить. Очень удобно при установке программ, согласитесь? Мы всегда переходим от одного согласованного состояния к другому, и если что-то идёт не так, все изменения откатываются.
С тех пор, как я узнал о поддержке такой функциональности, я всегда хотел посмотреть на мир изнутри этих транзакций. И знаете что: я нашёл простой и поистине замечательный метод заставить любой процесс работать внутри файловой транзакции, но поля книги слишком узки для него. В большинстве случаев, для этого не требуются даже административные привилегии.
Давайте разберёмся, как же это работает, поэкспериментируем с моей программой, и поймём, при чём тут вообще песочницы.
Embox на процессоре Эльбрус. Или никогда не забывайте о том, что получили при разведке

Практика в работе с нестандартными шинами комплекса Redd

Ближайшие события
Работа с нестандартными шинами комплекса Redd

Построение отказоустойчивой системы Embedded Linux на базе модуля Mars ZX3 фирмы Enclustra
В процессе тестирования разработанного программного обеспечения, мы сразу же столкнулись с отказами ПО при выключении питания. При анализе, обнаружилось, что команды конфигурирования, отправляемые на устройство по сети, записывались в файлы, которые, при сбое питания, иногда оказывались пустыми или отсутствовали совсем. Это вынудило нас пересмотреть идеологию построения переданной нам сборки Linux. Сам процесс построения системы хорошо описан на сайте изготовителя модуля, поэтому не буду на нем останавливаться. Опишу только то, что позволило решить стоящую перед нами задачу повышения надежности и предотвращения отказов.
Последние версии компиляторов D

О работе ПК на примере Windows 10 и клавиатуры ч. 1

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Введение в ELF-файлы в Linux: понимание и анализ

Прочтя это руководство, вы изучите:
- Зачем нужен формат ELF и для каких типов файлов он используется
- Структуру файла ELF и детали его формата
- Как читать и анализировать бинарное содержимое файла ELF
- Какие инструменты используются для анализа бинарных файлов
ELFийские трюки в Go
В этой заметке мы научимся получать машинный код Go функции прямо в рантайме, распечатаем его с помощью дизассемблера и по пути узнаем несколько фокусов вроде получения адреса функции без её вызова.
Предупреждение: ничему полезному эта мини-статья вас не научит.
Настройка окружения в CLI. WSL / Windows Terminal

Из статьи вы узнаете, какими средствами и каким терминалом актуально пользоваться в настоящее время для запуска Linux приложений в Windows 10. Речь пойдёт о WSL 2 и Windows Terminal, набирающим всё большую популярность у пользователей, которым для работы нужен Linux. Так как большинство use-case`ов у меня связаны с удалённым подключением через SSH, большая часть информации будет релевантно для случаев удалённых подключений, со всеми особенностями, связанными с этим (пробросом ssh ключей через ssh agent, пробросом X-сервера, управлением подключениями etс).
Внимание! Под катом много картинок и ужатого, но местами объёмного, gif`а, рекомендуется открывать статью при наличии соответствующего доступа к интернету. Заходите под кат, если вам актуален запуск Linux утилит под Windows, оптимизация работы в окружении CLI, или вы просто любите технические тексты и цветные терминалы. Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.