Рубрика «системное программирование» - 32

Прошел год с тех пор, как удалась предыдущая выходка: опубликовать вместо поста ролик на YouTube. «Стыдный разговор о синглтонах» набрал 7к просмотров на YouTube и вдвое больше на самом Хабре в текстовой версии. Для статьи, написанной в совершенно упоротом состоянии и рассказывающей о древнейшем баяне — это что-то вроде успеха.

Сегодня я всю ночь монтировал новый выпуск. На этот раз тема куда более свежая: история коммита в экспериментальную технологию — SubstrateVM. А вот градус упоротости поднялся на новый уровень.

Очень жду ваших комментариев! Напоминаю, что если вы хотите действительно что-то улучшить в этом посте, то лучше всего зафайлить ишшую на Github. Хотел бы сказать «ставьте лайки и подписывайтесь на новый канал», но ведь все его выпуски и так будут у вас в хабе Java?

Технически: в видео есть одна склейка ближе к концу. Просто я писал несжатое видео, и мой m2 ssd размером всего в пятьсот гигабайт быстро переполнился. А ни один другой жесткий диск не смог выдержать такого напора данных. Поэтому пришлось отключиться на полчаса и изголившись найти дополнительные пятьдесят гигов на запись последних нескольких минут. Это было достигнуто удалением файлов собранного GoogleChrome. Мнение о записывающем софте отписал в ФБ прямо в момент записи, там очень много боли.

Ещё из технически интересного: YouTube почему-то заблокировало мне live streaming. При этом на аккаунте нет ни единого страйка и клейма. Будем надеяться, что это просто косяк, и через 90 дней всё вернут назад.

Читать полностью »

OMNeT++ (Objective Modular Network Testbed in C++) Discrete Event Simulator – это модульная, компонентно‑ориентированная C++ библиотека и фреймворк для дискретно‑событийного моделирования, используемая прежде всего для создания симуляторов сетей. Попросту говоря это “симулятор дискретных событий”, включающий: IDE для создания моделей, и сам симулятор (GUI).

INET Framework – “библиотека” сетевых моделей для OMNeT++.

КДПВ: LLTR Часть 1 – OMNeT++ 5 the Open Simulator :: LLTR Model :: for freedom use

Полная версия GIF (15.7 MiB)

В предыдущих частях…

0. Автоматическое определение топологии сети и неуправляемые коммутаторы. Миссия невыполнима? (+ classic Habrahabr UserCSS)

В этой части:

  • создадим “свой первый” протокол (на примере LLTR Basic);
  • выберем подходящий симулятор сити для отладки протокола (и создания его модели);
  • познаем тонкости настройки окружения для симулятора и его IDE (конфигурирование, компиляция, линковка, тюнинг, патчинг, игнорирование устаревшей документации; и другие англицизмы в большом количестве);
  • столкнемся со всем, с чем можно столкнуться, при создании своей первой модели своего первого протокола в не своем незнакомом симуляторе сети;
  • пройдем весь путь вместе:
    • от счастья, принесенного успешной (наконец!) компиляции первого проекта с пустой сетью,
    • до полного погружения в эксперименты с функционирующей моделью протокола;
  • tutorial, все описано в виде tutorial – мы будем учиться на ошибках – будем совершать их, и будем понимать их (природу), дабы элегантно/эффективно с ними справится;
  • репозиторий (git LLTR Часть 1: Первые шаги в OMNeT++ и INET - 2), в коммитах и тегах которого сохранены все шаги (“Add …”, “Fix …”, “Fix …”, “Modify …”, “Correct …”, …), от начала и до конца.

Note: дополнительная информация для читателей хаба “Mesh-сети”.

{ объем изображений: 2.2+(2.1) MiB; текста: 484 KiB; смайликов: 22 шт. }

Читать полностью »

В компании нашу команду по противостоянию DDoS-атакам называют «отбрасыватели пакетов» (the packet droppers — прим. пер). Пока все остальные команды делают клёвые штуки с проходящим через нашу сеть трафиком, мы развлекаемся поиском новых способом избавиться от него.

Как отбрасывать 10 миллионов пакетов в секунду - 1
Фотография: Brian Evans, CC BY-SA 2.0

Умение быстро отбрасывать пакеты очень важно в противостоянии DDoS-атакам.

Отбрасывание пакетов, достигающих наших серверов, может быть выполнено на нескольких уровнях. Каждый способ имеет свои плюсы и минусы. Под катом мы рассмотрим всё, что мы опробовали.
Читать полностью »

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

Команда разработчиков Rust рада сообщить о выпуске новой версии Rust: 1.28.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.

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

$ rustup update stable

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

Что вошло в стабильную версию 1.28.0

Глобальные аллокаторы

С помощью аллокаторов программы на Rust получают память во время выполнения. Раньше Rust не позволял изменять способ распределения памяти, что ограничивало его использование в некоторых случаях. Читать полностью »

В данной статье я хочу рассмотреть практические аспекты создания простого гипервизора на основе технологии аппаратной виртуализации Intel VMX.

Аппаратная виртуализация достаточно узкоспециализированная область системного программирования и не имеет большого комьюнити, в России уж точно. Я надеюсь, что материал статьи поможет тем, кто захочет открыть для себя аппаратную виртуализацию и те возможности которые она предоставляет. Как было сказано в начале, я хочу рассмотреть именно практический аспект без погружения в теорию, поэтому предполагается что читатель знаком с архитектурой x86-64 и имеет хотя бы общее представление о механизмах VMX. Исходники к статье.

Начнем с постановки задач для гипервизора:
Читать полностью »

Файловая система proc (в дальнейшем просто procfs) является виртуальной файловой системой, которая предоставляет информацию о процессах. Она — “прекрасный” пример интерфейсов следующих парадигме “все является файлом”. Procfs была разработана очень давно: во времена, когда серверы в среднем обслуживали несколько десятков процессов, когда открыть файл и вычитать информацию о процессе не было проблемой. Однако время не стоит на месте, и сейчас серверы обслуживают сотни тысяч, а то и больше процессов одновременно. В таком контексте идея “открыть файл для каждого процесса, чтобы вычитать интересующие данные” уже не выглядит такой привлекательной, и первое что приходит на ум чтобы ускорить чтение — это получение информации о группе процессов за одну итерацию. В этой статье мы попробуем найти элементы procfs которые можно оптимизировать.

image

Читать полностью »

Привет! В этой серии мы продолжаем усиленно дружить драйвер WinBtrfs с ReactOS.

ReactOS теперь запускается с BTRFS раздела - 1
А этот ваш Windows так умеет?
Читать полностью »

Фьютекс (futex — сокращение от «Fast userspace mutex») — это механизм, предложенный разработчиками Linux из IBM в 2002 году и вошедший в ядро в конце 2003 года. Основной идеей было предоставить более эффективный способ синхронизации пользовательских потоков с минимальным количеством обращений к ядру ОС.

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

Важный момент: фьютексы — это достаточно низкоуровневый инструмент, напрямую его использовать стоит лишь при разработке фундаментальных библиотек, вроде стандартной библиотеки C/C++. Очень маловероятно, что вам понадобится использовать фьютексы в обычном прикладном приложении.
Читать полностью »

Почти все, что вы хотели знать про плавающую точку в ARM, но боялись спросить - 1Привет! В этой статье я хочу рассказать про работу с плавающей точкой для процессоров с архитектурой ARM. Думаю, эта статья будет полезна прежде всего тем, кто портирует свою ОС на ARM-архитектуру и при этом им нужна поддержка аппаратной плавающей точки (что мы и делали для Embox, в котором до этого использовалась программная реализация операций с плавающей точкой).

Итак, приступим.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js