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

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

Бесполезный отложенный неблокирующий обмен сообщениями в MPI: лайт-аналитика и туториал для тех, кто немножечко «в теме» - 1

Наше &laquoДано: &raquo

Итак, суть нашей, в сущности вычислительной задачи, заключается в том, чтобы сравнить во сколько раз программа, использующая неблокирующие отложенные двухточечные передачи быстрее той, что использует блокирующие двухточечные передачи. Измерения будем проводить для входных массивов размерностью 64, 256, 1024, 4096, 8192, 16384, 65536, 262144, 1048576, 4194304, 16777216, 33554432 элементов. По умолчанию предлагается решать ее четырьмя процессами. А вот, собственно, и то, что мы будем считать:

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

image
Доброго времени суток, дорогой читатель, скорее всего, ты видел мою предыдущую статью о том, что самому можно написать работоспособную ОС за достаточно короткий срок. Что же, сегодня мы поговорим о реализации многозадачности в моей ОС. Читать полностью »

image

Предыстория

Здравствуйте! Всех категорически приветствую, сегодня хотел бы рассказать Вам о своём опыте написание работоспособной ОС под архитектуру x86.
Как-то весенней ночью у меня родилась гениальная идея — попробовать себя в написании собственной ОС, которая может позволить запускать программы, работать с устройствами, да и в общем выжимать всю мощь из Intel'овской архитектуры в своих нуждах: к примеру, для своей фабрики или чего-либо иного. Моей целью было и есть написание такой ОС, которая могла бы позволить максимальную производительность для каких-то конкретных задач, не тратя процессорное время на всяческие излишества. В основном я преследую лишь спортивный интерес, получение опыта для себя в системном программировании и написания драйверов для устройств, которые используются повсеместно. Что из этого вышло — решать вам, сразу говорю, что не надо писать комментарии про создание собственного дистрибутива линукса, и преследовал интерес написать всё «From stratch» — с нуля, дабы хорошо погрузиться в тему ОСдева. Сразу хочу выразить огромную благодарность Бенджамину Лунту и форуму OSDev, так же как их Вики. Бен помог мне разобраться с EHCI, что несомненно внесло огромный вклад в мою ОС — USB устройства, они везде! Так же передо мной стояла задача создать собственную архитектуру, удобную мне, не исключая использование стандартов ELF-файлов.Читать полностью »

Введение

Доброго времени суток, сегодня хотелось бы затронуть достаточно простую тему, которая почти никем из обычных программистов неизвестна, но каждый из вас, скорее всего, ей пользовался.
Речь пойдет о симметричной мультипроцессорности(в народе — SMP) — архитектура, которая встречается во всех многозадачных операционных системах, и конечно же, является неотъемлемой их частью. Каждый знает, что чем больше ядер у процессора — тем мощнее будет процессор, да, это так, но как ОС может использовать несколько ядер одновременно? Некоторые программисты не спускаются до такого уровня абстракции — им это попросту не надо, но думаю, всем будет интересно то, как же SMP работает.
Читать полностью »

image

Введение

Всех приветствую. Сегодня хочу поделиться опытом и всё-таки по-моему внятно объяснить про такой, на первый взгляд, простой стандарт для USB 2.0 хост-контроллера.

Изначально можно представить себе что USB 2.0 порт — это всего лишь 4 пина, по двум из которых просто передаются данные(Как, к примеру, COM-порт), но самом деле всё не так, и даже совсем наоборот. USB-контроллер в принципе не даёт нам возможности передавать данные как через обычный COM-порт. EHCI — довольно замысловатый стандарт, который позволяет обеспечить надежную и быструю передачу данных от софта до самого девайса, и в обратную сторону.

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

Загрузка конфигурации в ПЛИС через USB или разбираем FTDI MPSSE - 1

В жизни каждого плисовода наступает момент, когда требуется написать собственный загрузчик файла конфигурации в ПЛИС. Пришлось мне участвовать в разработке учебного стенда для кафедры одного технического вуза. Стенд предназначен для изучения цифровой обработки сигналов, хотя в рамках этой статьи это не имеет особого значения. А значение имеет то, что в основе стенда стоит ПЛИС (Altera Cyclone IV), на которой по задумке автора стенда студенты собирают всякие схемы ЦОС. Стенд подключается к компьютеру через USB. Требуется выполнить загрузку ПЛИС с компьютера через USB.

Принято решение для подключения к ПК использовать FTDI в ее двухканальной ипостаси — FT2232H. Один канал будет использован для конфигурации ПЛИС, другой может быть использован для высокоскоростного обмена в режиме FIFO.

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

кдпв

Мой комментарий к новости про Rust 1.28 с обзором ржавых событий за месяц неплохо зашел, так что вот держите очень субъективный срез ржавых новостей за прошлый месяц.

В этой подборке: Rust 1.29, записи докладов с Rustconf 2018, gfx-rs, Rust2018, порт Flatbuffers, новые версии ripgrep и Alacritty.

Rust 1.29

Вышел Rust 1.29. Основные нововведения — доступные сразу из rustupcargo fix и cargo clippy (подробнее в хабропереводе).

Следом была выпущена версия 1.29.1, закрывшая ошибку в std::repeat (обсуждение).

Rust 1.30 и 1.31 будут очень значительными.

Точного списка пока нет, но ожидается что:

  • в 1.30 (2018.10.26) войдет частичная стабилизация процедурных макросов;
  • в 1.31 (2018.12.07) войдут Rust 2018 + non-lexical lifetimes (NLL).

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

Для большинства разработчиков использование expression tree ограничивается лямбда-выражениями в LINQ. Зачастую мы вообще не придаем значения тому, как технология работает «под капотом».

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

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

Деревья выражений в enterprise-разработке - 1

Под катом — видео и текстовая расшифровка моего доклада с DotNext 2018 Piter.
Читать полностью »

Добрый день! Несколько дней назад столкнулся с небольшой проблемой в нашем проекте — в обработчике прерывания gdb неправильно выводил stack trace для Cortex-M. Поэтому в очередной раз полез выяснять, а какими способами можно получать stack trace для ARM? Какие флаги компиляции влияют на возможность трассировки стека на ARM? Как это реализовано в ядре Linux? По результатам исследований решил написать эту статью.
Читать полностью »

Многие из нас ходят на конференции по Java только из-за хардкора. Это статья о том, что в этом плане изменилось за год.

Хардкор бывает нескольких видов. Можно выделить как минимум:

  • перформансные оптимизации в любых проявлениях;
  • внутренности достаточно сложных технологий (OpenJDK, GraalVM);
  • компиляторы и рантаймы в целом;
  • дизайн языков программирования;
  • проблемы computer science и прикладной математики;
  • и многое другое.

Заряди мозги напрямую! Рантаймы, компиляторы и перформанс на Joker 2018 - 1

В чем разница между обычным докладом и хардкорным? Это как разница между статьей по квантовой гравитации и руководством по вкусной и здоровой пище. Правильно приготовить Spring — это, безусловно, очень сложная и интересная задача, которая для многих из нас является большой частью повседневных задач, и, соответственно, доклады Жени Борисова имеют большое практическое значение. Грубо говоря, это способ стать более хорошим специалистом и поднять больше денег. Но блеск далёких звезд находится не там.

Поэтому — только хардкор по заветам старой школы. Под катом небольшая заметка о том, как все это выглядит с точки зрения человека, который помешан на чтении статей, посещении докладов и отсмотру роликов на Ютубе, посвященных Java в широком смысле слова.

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


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