Как стать автором
Обновить
71.07
Рейтинг

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

Низкоуровневое программирование

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Другой взгляд на многопоточность

Системное программирование *C *Параллельное программирование *Процессоры
Из песочницы

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

Читать далее
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 10K
Комментарии 24

Новости

Внутренняя история внешнего расследования SoftRAM 95

Системное программирование *Разработка под Windows *История IT
Перевод


Перевод статьи Рэймонда Чена, более 25 лет участвовавшего в разработке ОС Windows, автора блога The Old New Thing, начатого им в 2003 году.

С выходом Windows 95 появилось большое количество программных продуктов, предназначенных специально для этой ОС. Много внимания в какой-то момент привлекла одна из таких программ – SoftRAM 95. На коробке значилось, что программа может «удвоить вашу память».

Оказалось, что не может.

Я встречал несколько статей, описывавших, что эта программа делала (а главное – не делала), но почти нигде авторы не углублялись в код и не описывали, как именно она работала. Поэтому я решил написать такую статью.
Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Просмотры 14K
Комментарии 32

Экспериментируем с ПЛИС семейства ECP5 фирмы Lattice

Системное программирование *FPGA *Программирование микроконтроллеров *Компьютерное железо

Когда я видел на Хабре упоминание о ПЛИС Lattice, у меня всегда возникал простой вопрос: «А зачем ещё одна ПЛИС?». Вроде всю жизнь хватало пары базовых. Но полгода назад случилось то, что сняло этот вопрос для меня. Пришёл Заказчик и сказал: «Мы делаем проект на ECP5». Против требований Заказчика не попрёшь!

А пока я осваивал работу с этим железом и пытался понять, как обосновать необходимость попробовать то же самое для остальных, мой знакомый, ныне живущий в Штатах, обрадовал новостью, что у его любимого поставщика подходит к концу запас десятых Циклонов и шестых Спартанов. В целом, через три года будет построен новый завод Intel, но что именно там будут производить, он не в курсе. И три года продержаться в любом случае, будет нужно. Короче, сейчас надо иметь возможность быстро мигрировать с одной ПЛИС на другую.

Итого, вчера делать ознакомительную статью про Lattice было рано, завтра – может быть поздно.

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

Читать далее
Всего голосов 38: ↑37 и ↓1 +36
Просмотры 2.4K
Комментарии 21

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

Блог компании FirstVDS Информационная безопасность *Системное администрирование *Системное программирование *Параллельное программирование *


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

Таким образом, ARM приходит и на десктопы, и на серверы. Но в разработке под архитектуру ARM и при работе с существующим программным обеспечением есть один нюанс. Дело в том, что программирование без блокировок (lock-free) — опасная штука, особенно на этих процессорах. Если на архитектуре x86/x64 сильная модель памяти и здесь инструкции типа store идут в процессор строго по порядку, то в архитектуре ARM это совершенно не факт. В результате частенько случается, что вполне безопасный код x86 порождает состояние гонки под ARM.
Читать дальше →
Всего голосов 45: ↑40 и ↓5 +35
Просмотры 6K
Комментарии 21

Почему книга Эндрю Таненбаума «Архитектура компьютера» вредна для образования

Системное программирование *Профессиональная литература FPGA *Процессоры Электроника для начинающих

Сегодня взял в руки книжку Эндрю Таненбаума "Архитектура компьютера" (последнее издание на русском языке вышло в 2018 году). Я ее пролистывал лет 10 назад, но сегодня решил пролистать снова, чтобы быть абсолютно уверенным в том что я напишу ниже. А именно: это книжка была вредна для образования. Она плодила не инженеров-проектировщиков, а потенциальных игроков для телевикторины "Что-Где-Когда?" и спорщиков-всезнаек на форумах интернета, которые могли рассуждать часами о микрокоде и джава-процессорах, нагибая собеседников своей эрудицией про очереди микроопераций (стр 291 4-го издания 2003-го года) и защелках в трактах данных (стр. 286), но при этом ничего не могли сделать своими руками.

Потому что (сначала мелкие придирки):
Всего голосов 63: ↑39 и ↓24 +15
Просмотры 22K
Комментарии 112

Передача телевизионного сигнала через HackRF

Системное программирование *Разработка под Windows *Компьютерное железо
Всем привет. На этот раз я хочу рассказать о том как можно превратить старый телевизор в монитор компьютера. Для этого требуется лишь сам телевизор, HackRF и немного софта.
Читать дальше →
Всего голосов 50: ↑50 и ↓0 +50
Просмотры 9.2K
Комментарии 6

Разработчик российского RISC-V ядра будет учить школьников и студентов ассемблеру RISC-V в субботу

Assembler *Системное программирование *FPGA *Программирование микроконтроллеров *История IT
Tutorial

В субботу 13 ноября с 12.00 по Москве пройдет следующая сессия Сколковской школы синтеза цифровых схем, в режиме онлайн. По плану на ней должны были быть упражнения на FPGA плате с последовательностной логикой. Однако мы решили изменить план и переставить на эту дату занятие по архитектуре RISC-V. Это занятие было изначально запланировано 11 декабря. Занятие по последовательностной логике будет передвинуто на 20 ноября. Почему мы решили так сделать - см. обьяснение через три абзаца.

Занятие по RISC-V проведет проектировщик российского микропроцессорного ядра Никита Поляков из компании Syntacore. В Syntacore Никита перешел из компании МЦСТ где он проектировал процессор Эльбрус. 

Занятие будет состоять из лекции с одновременными упражнениями на симуляторе RARS. RARS моделирует процессор на уровне архитектуры (системы команд, видимых программисту), в отличие от симулятора Icarus Verilog, который мы обсуждали в предыдущей заметке и который моделирует на уровне регистровых передач / микроархитектуры (внутреннего устройства схемы процессора). Разработчику процессора нужно уметь пользоваться симуляторами обеих типов.

У RARS есть три кнопки - запустить, ассемблировать и выполнить шаг. В конце занятия вы будете уметь программировать на ассемблере, даже если раньше этого никогда не делали. В этой заметке мы расскажем, как установить симулятор и запустить простую программу на ассемблере. Потом в следующей заметке я напишу, что такого особенного есть в архитектуре RISC-V и почему мы выбрали для семинара именно ее, а не ARM, x86/64, MIPS, AVR, SPARC,  Эльбрус, Z80, 6502, PDP-11 или еще что-нибудь другое.

Читать далее
Всего голосов 18: ↑16 и ↓2 +14
Просмотры 5.1K
Комментарии 51

Активная конкуренция за RAM в Android

Системное программирование *Разработка под Android *Разработка под Linux *Смартфоны
Из песочницы

Разработав инструмент для визуализации RAM и zRAM в Android, я обнаружила, что в телефонах происходит активная конкуренция за ресурсы. И если процессу понадобятся ресурсы, которые уже заняты кем-то другим, он отберет их, что может привести к критическим ситуациям и конфликтам оборудования.

Пользовались ли вы когда-нибудь такими утилитами как htop, top, vmstat? Если у вас вообще установлен Linux, то скорее всего да. И они действительно хорошо показывают статистику использования ресурсов в ОС. Я исследовала операционные системы, и мне не хватало понимания того, как реально выглядит физическое адресное пространство: какие конкретно адреса заняты, какие свободны, что происходит, если процессы запрашивают одни и те же адреса, как часто это происходит.

Была гипотеза, что в Android (и в Linux), возникает активная конкуренция за ресурсы. Спойлер из названия статьи: она подтвердилась.

Читать далее
Всего голосов 20: ↑14 и ↓6 +8
Просмотры 3.8K
Комментарии 10

Безопасность ПЛК: 6,7) Проверяйте таймеры, счётчики и парные входы/выходы

Информационная безопасность *Программирование *Системное программирование *Промышленное программирование *SCADA *
Перевод
Tutorial

Счётчики и таймеры написанные для программ ПЛК должны быть проверены на корректность, в том числе на обработку обратных отсчётов и значений меньше нуля.

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

Разбираем рекомендации по безопасному программированию ПЛК, формируем список своих рекомендаций. Всех неравнодушных прошу под кат.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.2K
Комментарии 2

Modula-3 — Исторический контекст

Системное программирование *
Recovery mode
Перевод

6 ноября 1986 года Морис Уилкс написал Никлаусу Вирту с предложением пересмотреть и стандартизировать язык Modula-2+ в качестве преемника Modula-2. Вирт благословил этот проект, и так родился комитет Модула-3.

На первом заседании комитет единогласно согласился придерживаться духа Modula-2, выбирая простые, безопасные, проверенные функции, а не экспериментируя с нашими собственными непроверенными идеями. Когда мы перешли к деталям, мы обнаружили, что добиться единодушия труднее.

Modula-3 поддерживает интерфейсы, объекты, универсальные шаблоны, легкие потоки управления, изоляцию небезопасного кода, сборку мусора, исключения и подтипы. Некоторые из наиболее проблемных функций Modula-2 были удалены, например, вариантные записи и встроенный числовой тип данных без знака. Modula-3 существенно проще других языков с сопоставимой мощностью.

Modula-3 во многом основан на Modula-2+, который был разработан в Системном исследовательском центре Digital Equipment Corporation и использовался для создания системы Topaz [ McJones89 , Rovner86 ]. Дизайн Modula-3 был совместным проектом Digital и Olivetti. Определение языка было опубликовано в августе 1988 года, и сразу после этого обе компании начали внедрять его. В январе 1989 года комитет пересмотрел формулировку, чтобы отразить опыт этих групп по внедрению. К публикации этой книги было внесено несколько окончательных исправлений.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 1.6K
Комментарии 5

Тестирование СУБД: 10 лет опыта

Блог компании VK Тестирование IT-систем *Программирование *Системное программирование *Tarantool *

Меня зовут Сергей Бронников, я работаю в команде Tarantool. Когда я присоединился к ней, то не нашёл общего описания того, как устроено тестирование в проекте. Поэтому я вёл для себя заметки по мере погружения в разработку. Я решил переработать их в статью. Она может быть интересна тестировщикам в проектах на C/C++ или пользователям Tarantool, которые хотят узнать, сколько мы усилий прикладываем к тому, чтобы снизить вероятность появления проблем в новых версиях. 

Популярной статьей такого рода является описание тестирования библиотеки SQLite за авторством Ричарда Хиппа. Но у SQLite есть специфика: их инструменты тяжело переиспользовать в других проектах. Это следствие того, что у команды разработчиков SQLite есть обязательства поддерживать библиотеку как минимум до 2050 года, и для сокращения внешних зависимостей они все инструменты пишут сами с нуля (например, тест-раннер, инструмент для мутационного тестирования, Fossil SCM). У нас таких требований нет, поэтому в выборе инструментов мы не ограничены и пользуемся всем, что приносит пользу. И если вас что-то заинтересует, то вы достаточно легко сможете это принести в свой проект на C/C++. Если я вас заинтересовал — велкам под кат.

Читать дальше
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 7.2K
Комментарии 14

Выпуск Rust 1.56.0 и 2021 редакция

Open source *Программирование *Системное программирование *Компиляторы *Rust *
Перевод

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


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


rustup update stable

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

Читать дальше →
Всего голосов 40: ↑40 и ↓0 +40
Просмотры 6.7K
Комментарии 11

Создание и использование динамических библиотек в Rust

Блог компании OTUS Системное программирование *Rust *

Динамические библиотеки подключаются к программе во время выполнения. Это позволяет обновлять их реализацию и компилировать независимо от использующих программ. Такой подход открывает ряд дополнительных возможностей при разработке ПО. Например, написание разных модулей приложения на разных языках. Или создание системы динамически подключаемых плагинов. В данной статье мы рассмотрим, как создавать и загружать динамические библиотеки в Rust.

Читать далее
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 4K
Комментарии 0

Bitwise — обучающий проект по созданию программного и аппаратного стека компьютера с нуля

Программирование *Анализ и проектирование систем *Системное программирование *Компиляторы *C *

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

В 2017 году, Per Vognsen - программист с более чем 15-летним стажем, работавший в таких компаниях как NVIDIA и Oculus берет паузу и в марте 2018 стартует амбициозный обучающий проект Bitwise, в котором он собирается разработать и написать весь программно-аппаратный стек для простого компьютера с нуля и запустить его на FPGA. 

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

Проекты подобные Bitwise можно пересчитать по пальцам (думаю многие еще вспомнят о знаменитом Handmade Hero от Casey Muratori). Автором данного проекта выступает отличный программист, который в формате скринкастов показывает и объясняет каждое решение по ходу написания кода. Этой короткой статьей я бы хотел заполнить пробел и познакомить большее число людей с проектом Bitwise, так как сам извлек из него много нового.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 4.3K
Комментарии 5

О чем нельзя забывать при работе с POSIX-сигналами

Программирование *C++ *Системное программирование *C *Разработка под Linux *

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

Читать далее
Всего голосов 64: ↑64 и ↓0 +64
Просмотры 10K
Комментарии 18

Лезем в сорцы компилятора — как работает goscheduler (Часть II)

Блог компании FirstVDS Программирование *Анализ и проектирование систем *Системное программирование *Компиляторы *

Чтение рекомендуется начать с первой части, в которой мы терзаем ОС нереальным количеством потоков, смотрим, что из этого вышло, и видим, что согласованность — это не обязательно многопоточность.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 1.9K
Комментарии 3

Immutable infrastructure – достигая недостижимого идеала (Андрей Девяткин)

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


Всем привет! Добро пожаловать на презентацию об immutable infrastructure – достигая недостижимого идеала. Перед тем как мы начнем, хотел бы сделать небольшое вступление.

Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 2.6K
Комментарии 3

RustCon Russia 2021 — собираем сообщество rust-разработчиков

Блог компании IT-People Системное программирование *Rust *Конференции

Со времени последней конференции по языку программирования Rust прошло уже 3 года. Думаем, русскоязычному сообществу rust-разработчиков пора собраться вместе. 

На rust написаны или частично-написаны проекты Huawei, JetBrains, Rambler, Лаборатории Касперского, Нетологии, МТС, Kupibilet, Funcorp и количество проектов продолжает расти. К тому же в 2021 году Rust шестой раз подряд был признан самым любимым языком программирования по результатам ежегодного опроса Stack Overflow. Из разряда экзотики Rust постепенно перемещается … Впрочем, давайте вместе выясним, какую нишу он займет. Приглашаем спикеров и участников на единственную в России конференцию для тех, кто пишет языке Rust и тех, кто им интересуется. Темы и формат под катом.

Читать далее
Всего голосов 22: ↑18 и ↓4 +14
Просмотры 2.7K
Комментарии 0

Прокачиваем силу — Rust и Windows API

Блог компании RUVDS.com Системное программирование *API *Rust *Разработка под Windows *


Недавно я написал статью Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад. В статье рассказывается о том, как изучать ассемблер на примере игрушки 2048. Возможно для целей самой статьи игрушка была подходящая, но конечный результат меня немного удручил. Бинарник размером в 10 килобайт, который потребляет 2 мегабайта памяти, из-за неправильно слинкованной библиотеки резал глаза.

Посему я задался вопросом, а как это можно было бы сделать правильнее? Наверняка есть намного более удачное решение. (И организовал ещё один конкурс с призами в конце статьи)

А почему бы не сделать на Rust, и правильно прикрученных библиотеках? При этом, если вы знаете, что делаете, то вы можете запросто уменьшить количество потребляемой оперативной памяти, но при этом написать визуальную игрушку с использованием Windows API.

Причём это не значит, что вы будете использовать какую-то нестандартную библиотеку. Встречайте — windows-rs, проект поддерживаемый Microsoft. Ваш билет в мир Windows, если вы пишете на Rust.
Читать дальше →
Всего голосов 60: ↑56 и ↓4 +52
Просмотры 6.6K
Комментарии 31

Лезем в сорцы компилятора — как работает goscheduler (Часть I)

Блог компании FirstVDS Программирование *Анализ и проектирование систем *Системное программирование *Компиляторы *

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

Всё это замечательно, и большинство книг и курсов по golang приводят множество примеров того, насколько быстр го и как он запросто может справиться с бесконечным количеством задач. К сожалению, все эти книги не рассказывают, что же происходит под капотом голанга. Что же, давайте откроем сорцы суслика и посмотрим, что там внутри.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры 4.2K
Комментарии 10

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