Search
Write a publication
Pull to refresh
30
0
Сергей Сахно @Punk_Joker

Software engineer

Send message

В чём опасность слабой модели памяти ARM на примере конкретного эксплоита

Reading time9 min
Views11K


Процессоры ARM приходят к нам всерьёз и надолго. Мы видим, что семейство Apple M1 в бенчмарках показывает потрясающие результаты, не хуже флагманских моделей от Intel и AMD, а кое-где и лучше их. Уже выпускаются 128-ядерные серверные ARM, которые ставят рекорды по энергоэффективности, а для серверов это очень важно.

Таким образом, ARM приходит и на десктопы, и на серверы. Но в разработке под архитектуру ARM и при работе с существующим программным обеспечением есть один нюанс. Дело в том, что программирование без блокировок (lock-free) — опасная штука, особенно на этих процессорах. Если на архитектуре x86/x64 сильная модель памяти и здесь инструкции типа store идут в процессор строго по порядку, то в архитектуре ARM это совершенно не факт. В результате частенько случается, что вполне безопасный код x86 порождает состояние гонки под ARM.
Читать дальше →

Обратная сторона хакатона

Reading time5 min
Views2.8K

Два года назад мы провели масштабное мероприятие – Rosneft Seismic Challenge 2019 – соревнование по машинному обучению, где нужно было найти границы между различными геологическими слоями (фациями) по данным сейсморазведки. В рамках соревнования мы получили хорошие результаты по метрике качества Dice. Но оказалось, что внедрить решения победителя в прод совсем не так просто, как кажется на первый взгляд. Об этом поподробнее ниже.

 

Читать далее

CoroOS: концепт операционной системы для микроконтролеров на корутинах С++20

Reading time18 min
Views11K

Здравствуйте! Меня зовут Александр, и я работаю программистом микроконтроллеров.

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

И ваш автор не исключение.

Как по мне - дело не то чтобы запредельно сложное, сколько кропотливое. Если у вас, как и у меня, увлечение и(или) карьера крутится вокруг Arm Cortex-M серии, то вооружаемся стволами (раз, два и три) и выдвигаемся за Джеффом. Но, написав и запустив ядро своей "best of the best" оси около года назад, я вскоре забросил разработку, ибо как я ни креативил, вместо Сокола Тысячелетия у меня получался крепенький, но банальный и скучный велосипед.

А ведь хотелось оригинальности и бесстыдного выпендрёжа.

И тут в 20-й стандарт плюсов завезли корутины.

Читать далее

Гиперконвергентная инфраструктура, для периферийных вычислений, часть 4

Reading time4 min
Views1.1K

Cегодня разберем, как функции отказоустойчивости данных HPE SimpliVity, включая локальное и удаленное резервное копирование, влияют на определение целевой точки восстановления (RPO) и целевого времени восстановления (RTO), помогая предотвратить потерю данных в случае аварии.

Гиперконвергентные инфраструктуры продолжают набирать популярность, поскольку организации стремятся упростить ИТ-инфраструктуру, особенно в для периферийных вычислений. Удаленные офисы и филиалы, как правило, не располагают достаточным пространством для размещения ИТ-инфраструктуры, но нуждаются в защите данных не меньше, чем центральный ЦОД. Такие предприятия, как жилищное управление Metropolitan Thames Valley и страховая компания King Price, занимающаяся онлайн страхованием, развернули HPE SimpliVity в первую очередь для того, чтобы избежать простоев и обеспечить восстановление данных в случае стихийного бедствия или подобного инцидента, который может привести к потере данных.

Но как именно работает защита данных?

В HPE SimpliVity реализована система локального и удаленного резервного копирования, без дополнительных затрат на лицензирование; эта возможность входит в состав решения. Резервное копирование ориентировано на виртуальные машины (ВМ), т. е. вам не нужно восстанавливать весь том, чтобы добраться до конкретной ВМ. Функция восстановления на уровне файлов в HPE SimpliVity позволяет восстановить конкретную ВМ или даже отдельные файлы или папки внутри ВМ. Благодаря системе виртуализации данных HPE SimpliVity создание резервных копий ВМ выполняется практически мгновенно. Так как никакие данные не перемещаются, а только создается копия метаданных с указателями на исходные блоки. В результате чего, можно добиться огромной экономии пространства при хранении большого числа резервных копий, при этом сведя к минимуму необходимость использования отдельных инструментов для резервного копирования.

Читать далее

Открытый проект файловой системы для внутренней памяти STM32H

Reading time8 min
Views9K

Зачем ставить внешнюю IC памяти или SD карту если в микроконтроллере осталось много свободной Flash памяти! 

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

Как сделать из внутренней Flash подобие EEPROM сравнительно неплохо написано в этом апноуте от ST. Но с некоторого уровня комплексности встроенного ПО хранить данные в именованных файлах удобнее чем в жёстких структурах. Файлы упрощают реюзинг, облегчают поддержку преемственности версий, апгрейды и даунгрейды. Файлы освобождают от хлопот с планированием размещения во флэш и разруливанием конфликтов размещения, особенно если приложение модульное и модули разрабатываются отдельно. 

Читать далее

Как технология USB over IP позволила людям забыть о расстоянии

Reading time5 min
Views76K
Источник изображения
Сегодня быстрым ростом количества устройств сети Интернет и интернета вещей уже никого не удивишь. Существует множество различных протоколов и технологий, на которых основана обработка и обмен информацией между устройствами и, собственно, сама связь этих устройств.

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

В этой статье речь пойдет о технологии, не относящейся ни к одной, ни к другой группе — USB over IP. Без нее компьютерные сети существовали бы без особых проблем, но она способна значительно упростить работу и снизить затраты на эксплуатацию у крупных предприятий, небольших организаций и даже обычных пользователей. К примеру, с помощью нее можно пробросить аппаратный USB-ключ защиты ПО внутрь облачной платформы или облака на базе VMware и использовать его так, словно он установлен на локальной машине. Но обо всем по порядку.
Читать дальше →

Моделирование приемника GPS для наноспутников

Reading time3 min
Views4.3K

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

Читать далее

Прототипирование процессоров Baikal на платформе Synopsys HAPS

Reading time5 min
Views4.1K

Если предыдущая статья про гибридное прототипирование https://habr.com/ru/company/baikalelectron/blog/582782/ описывала новаторское использование платформы HAPS, то сегодня мы расскажем в общем - что такое прототип, и какие традиционные подходы к  прототипированию используют инженеры Baikal Electronics.

В маршруте проектирование сложных System-on-the-Crystal (SoC) прототипирование на FPGA занимает промежуточное место между моделирование на симуляторах (VCS, ModelSim и др.) и эмуляцией.

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

Читать далее

Поддержка USB в KolibriOS: что внутри? Часть 1: общая схема

Reading time9 min
Views36K
Архитектура USB содержит несколько уровней. На самом низком уровне специально обученное железо, называемое хост-контроллером (host controller), общается с USB-устройством специальными сигналами. Сигналы кодируют биты, биты складываются в пакеты, пакеты образуют транзакции, транзакции составляют передачи (transfers).

Я рассказываю о программной поддержке USB, поэтому уровни ниже передач почти неинтересны: за них отвечает хост-контроллер. Зато важно, какой интерфейс представляет хост-контроллер софту. Сейчас распространены три интерфейса, и постепенно распространяется четвёртый:
Аббр. Название интерфейса Версия Код поддержки контроллера в KolibriOS
UHCI Universal Host Controller Interface USB 1.1 kernel/trunk/bus/usb/uhci.inc
OHCI Open Host Controller Interface USB 1.1 kernel/trunk/bus/usb/ohci.inc
EHCI Enhanced Host Controller Interface USB 2.0 kernel/trunk/bus/usb/ehci.inc
XHCI eXtensible Host Controller Interface (новый) USB 3.0 В KolibriOS ещё не поддерживается
На этом же уровне взаимодействия с контроллерами находятся файлы kernel/trunk/bus/usb/hccommon.inc, где реализованы некоторые функции, общие для всех контроллеров, и kernel/trunk/bus/usb/init.inc, который запускает всю подсистему. Впрочем, не торопитесь пока лезть в код — во-первых, я ещё не рассказала про то, чего же ожидают от него более высокие уровни, а во-вторых, после демонстрации общей схемы я вернусь к отдельным компонентам с подробностями.
И что же на более высоких уровнях?

Процессор Snitch на базе RISC-V может похвастаться шестикратным приростом производительности

Reading time5 min
Views7.6K

Два новых ISA-расширения RISC-V позволяют процессору Snitch работать до 6,45 раз быстрее и эффективнее, чем сопоставимые процессоры.

Команда ученых из ETH Zurich представила новую версию процессора RISC-V. Она получила название Snitch. По словам разработчиков, новый ЦПУ обладает впечатляющими показателями скорости и способен обеспечить 6-кратный выигрыш в производительности и почти 4-кратный — в энергоэффективности для многоядерных рабочих нагрузок. Но не спешите с выводами: все не так однозначно, как кажется на первый взгляд. Под катом — разбор основных особенностей нового процессора, реальные «цифры» его производительности и информация о разработчиках.

Читать далее

Оптимизация математических вычислений и опция -ffast-math в GCC 11

Reading time9 min
Views9.5K
В этом материале речь пойдёт об оптимизациях, которые включает опция -ffast-math при компиляции кода, написанного на C или C++, с использованием GCC 11 для x86_64 Linux (при применении других языков, операционных систем, процессоров могут использоваться немного другие оптимизации).


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

Используем контейнеры Podman вместо виртуальных машин

Reading time2 min
Views12K

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

Контейнеризация — эффективный способ виртуализации на уровне ядра ОС. В системах контейнеризации гипервизора нет, но есть Container Engine, который создаёт контейнеры и управляет ими. В качестве движка контейнеризации мы будем использовать Podman.

Почему не Docker?

Основная причина — это запуск системы инициализации systemd в контейнерах, чтобы пользователи могли подключаться по SSH и устанавливать необходимые службы обычным способом, как в случае с виртуальными машинами. Podman знает, что надо делать, чтобы systemd нормально работал в контейнере. Также поговорим о том, как пробросить контейнер в локальную сеть.

Большинство традиционных сетей контейнеров обрабатываются мостами bridge, преобразованием сетевых адресов (NAT) или путем привязки к сети хоста. Если вы хотите, чтобы ваши контейнеры выглядели как физические хосты в вашей сети и каждый с уникальным MAC-адресом, то самый простой способ — это использовать плагины macvlan и dhcp, которые поставляются с пакетом containernetworking-plugins.

Читать далее

Как мы ускорили сборку CAD-программы на С++ в несколько раз

Reading time12 min
Views6.7K

Если вы пишете на C++, то скорее всего сталкивались с тем, что компиляция, кодогенерация и компоновка проектов, написанных на нём, занимают время и с развитием проекта начинают мешать как CI конвейеру так и итерации разработки на рабочем месте. Наша команда не понаслышке знает об этих проблемах, и в этой статье мы хотим поделиться опытом внедрения широко известного в узких кругах инструмента - сборочной системы FASTBuild.

Подробнее про ускорение

Психология языкового барьера, или Какого черта нельзя просто взять и заговорить на английском

Reading time6 min
Views43K

63% россиян учили английский в школе или университете, но при этом только около 5% граждан могут похвастаться свободным владением языка. Это один из самых низких показателей в Европе по рейтингу EF English Proficiency Index.

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

Сегодня мы говорим о языковом барьере. Что это, от чего зависит и как его преодолеть.

Читать далее

Работаем с сетевыми адаптерами через Pcap-драйверы

Reading time16 min
Views14K
Работой с сетью в наше время никого не удивишь. Насколько я знаю, работать с сокетами нынче обучают уже на втором курсе соответствующих специальностей. Так что в целом, сетевые навыки должны быть у многих программистов. Но иногда требуется не просто работать с сетью, а делать это с предопределёнными параметрами, будь то расстояние между пакетами либо какое-то нестандартное их содержимое. Понятно, что речь идёт не о повседневной жизни, а об отладке либо тестировании проектов. В этом нам поможет работа через Pcap-драйверы. Например, через драйвер Npcap, устанавливающийся вместе с программой Wireshark.



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

В общем, думаю, имеет смысл свести все сведения воедино. Кому интересно – приступаем!
Читать дальше →

Intel RealSense — вчера, сегодня… завтра?

Reading time6 min
Views3.6K


В конце августа исполнительный директор Intel Пэт Гелсингер заявил, что в рамках процесса реструктуризации компании она будет отказываться от развития непрофильных технологий, в число которых попал, в том числе, RealSense. Это дало основание многочисленным СМИ «похоронить» технологию, и даже мы попали в их число, однако быстро одумались. Копнув поглубже и расспросив экспертов Intel, мы готовы предложить вашему вниманию иную трактовку происходящего.

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

U-boot. Процедура инициализации по шагам

Reading time6 min
Views33K

В предыдущей статье был описан процесс настройки IDE Eclipse для кросс-платформенной отладки загрузчика U-boot. В данной статье описывается устранение последних ограничений, препятствовавших полноценной его отладки. После чего, получив возможность полноценной отладки кода, пройдемся по всей процедуре инициализации загрузчика от первой инструкции и до конца в режиме отладки.

Читать далее

Освежите ваш COBOL: почему на язык 60-летней выдержки вдруг резко возник спрос?

Reading time13 min
Views52K

Давным-давно, когда мир был юн, и компьютеры в нем были в новинку, я учился по программе на младшего сотрудника (Associate Degree) по обработке данных – программ по «компьютерным наукам» тогда не было – и в рамках этой программы преподавались бухгалтерское дело, математика, статистика, а также три языка программирования: ассемблер IBM/360, FORTRAN и COBOL. К 80-м студентам уже рассказывали, что COBOL мертвый язык, и никто его больше не изучают.

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

Читать далее

Практическое применение сервера FreeACS для обслуживания устройств Mikrotik по протоколу TR-069 (часть 1)

Reading time5 min
Views9.2K
Данная статья является логическим продолжением экспериментов с тестовым сервером FreeACS. Тогда я влюбился в этот инструмент, и обещал немногочисленным комментаторам довести дело до продакшн. Так что, сегодня мы установим сервер, настроим до рабочего состояния и прикрутим ssl-сертификат. А во второй части — разберем настройки и режимы, прогоним основные рабочие сценарии обслуживания устройств Mikrotik и слегка коснемся автоконфигурации IP-телефонов.
Читать дальше →

Тестирование проброса GPU на AMD Ryzen 7 5700G APU

Reading time7 min
Views18K

Проброс видеокарты с помощью VFIO может быть знаком немногим, но по факту является очень удобным способом решить ряд насущных задач и упростить рабочий процесс в целом. В этом проекте мы настроим нужную конфигурацию из под Fedora 34 и поочередно пробросим две разные видеокарты в VM, попутно оценив полученную производительность.
Читать дальше →

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity