Как стать автором
Обновить
58.37

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

Обеспечение работы прикладного ПО

Сначала показывать
Порог рейтинга
Уровень сложности

Xv6: учебная Unix-подобная ОС. Глава 1: Интерфейсы операционной системы

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 3.1K

Эта книга рассказывает о принципах работы операционных систем на примере xv6. Операционная система xv6 реализует базовый интерфейс, который Кен Томпсон и Деннис Ритчи предложили в операционной системе Unix, и подражает внутреннему устройству Unix. Комбинации простейших механизмов Unix дают удивительную свободу действий. Современные операционные системы признали успех Unix и реализуют похожие интерфейсы - BSD, Linux, macOS, Solaris, и даже Microsoft Windows. Изучение xv6 поможет понять работу и других операционных систем.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 2

Новости

Рыцарь-демон, Intel Xeon Phi в 2024-м, часть 0

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 6.6K

Вы точно знаете о процессорах Intel. Вероятно, вы что-то слышали о видеокартах Intel. Но об этом устройстве не знает никто (effectively никто). Триста ватт, двести пятьдесят ядер, архитектура x86 (почти). Это чудовище из 2014-го зовут Intel Knights Corner или же Intel Xeon Phi... и это карта-сопроцессор для слота PCI-E.

И что дальше?
Всего голосов 40: ↑40 и ↓0 +40
Комментарии 25

Высокоскоростной SPI to Ethernet конвертер, при чем здесь DMA?

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 3.6K

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

Относительно использования Ethernet, дальше нескольких упоминаний речь не идет. Как-то, к слову, не пришлось, еще пока. Не обессудьте.

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

Можно ли использовать DMA вместо memcpy в Linux

Время на прочтение 7 мин
Количество просмотров 4.1K

В интернете можно найти описание проблем, связанных с использованием DMA для стандартной функции копирования данных из памяти в память:

Linux – DMA memcpy operation in Linux

Давайте попробуем разобраться, как можно использовать интерфейс к DMA для реализации стандартной операции копирования memcpy и есть ли в этом смысл.

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 46

Истории

Разработка HID-драйвера: шаг за шагом

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 2.8K


Предлагаем погрузиться в мир Human Interface Device (HID) в контексте операционной системы реального времени «Нейтрино». В статье мы расскажем про архитектуру HID и коснемся практических аспектов создания драйверов для устройств ввода.


Кроме того, затронем вопросы системной разработки и изучения драйверного API для встраиваемых систем реального времени. Расскажем, почему создание драйверов для взаимодействия с HID-устройствами является достаточно важным, но, при этом, достаточно простым процессом.

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

Загрузка драйверов в ядре Linux

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 5.8K

Почти все знают, как написать простой драйвер под Linux. На эту тему много материалов в сети. Очень мало информации о том, что находится "под капотом" у процедуры загрузки драйверов.

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

Какие бывают Cortex-M7 ARM-ы, периферия, шины, память, … DMA

Уровень сложности Сложный
Время на прочтение 11 мин
Количество просмотров 4.8K

На рисунке приведена структурная схема современного, одного из самых навороченных (я подозреваю) 32-битного ARM процессора или микроконтроллера-microcontroller, в документации используются оба термина: high-performance Flash microcontroller (MCU) based on the 32-bit ARM Cortex-M7 RISC (х.хх CoreMark/MHz) processor.

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

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

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 5

Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 13K
image


Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 63: ↑62 и ↓1 +61
Комментарии 37

Эльфы и пингвины: что такое ELF и как он работает в Linux?

Уровень сложности Простой
Время на прочтение 37 мин
Количество просмотров 17K

image


Всем привет! С вами как всегда я, Аргентум. Сегодня я расскажу и поведаю вам древние тайны, которые хранят горные старцы-сисадмины — тайны об эльфах, и как они взаимодействуют с древним народцем пингвинов. Дамы и господа, встречайте — статья о работе ELF и двоичных файлов в Linux!


Что такое ELF? Чем он отличается от PE в Windows? И многие другие ответы на ваши вопросы.


Перед тем как погрузиться в технические детали, будет нелишним объяснить, почему понимание формата ELF полезно. Это позволяет изучить внутреннюю работу операционной системы. Когда что-то пошло не так, эти знания помогут лучше понять, что именно случилось, и по какой причине. Также возможность изучения ELF-файлов может быть ценна для поиска дыр в безопасности и обнаружения подозрительных файлов. И наконец, для лучшего понимания процесса разработки. Даже если вы программируете на высокоуровневом языке типа Go или Rust, вы всё равно будет лучше знать, что происходит за сценой.


Итак, зачем изучать ELF?


  • Для общего понимания работы операционной системы
  • Для разработки ПО
  • Цифровая криминалистика и реагирование на инциденты (DFIR)
  • Исследование вредоносных программ (анализ бинарных файлов)
Читать дальше →
Всего голосов 58: ↑52 и ↓6 +46
Комментарии 22

Rust 1.75.0: API адресной арифметики, async fn и impl Trait в трейтах, уcкорение rustc

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 3.6K

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


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


rustup update stable

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


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 1

Выделение памяти для DMA в Linux

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 2.2K

Это перевод Поста Allocating Memory for DMA in Linux

В этом посте мы рассмотрим распределение памяти в Linux с использованием очень больших страниц с тем, чтобы совместно использовать эту память с устройствами PCIe, использующими DMA.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 2

Анализ виртуальной машины на примере VMProtect. Часть 1

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 1.2K

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

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

Анализировать!
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 5

Тайны пингвина: как работают исключения и прерывания в Linux?

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 11K

image


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


Что это, как они работают в ОС и Linux? Давайте разберемся вместе!

Читать дальше →
Всего голосов 41: ↑35 и ↓6 +29
Комментарии 8

Ближайшие события

GNU Shepherd — что это за альтернатива systemD?

Время на прочтение 10 мин
Количество просмотров 8K

Привет, хабр! На связи Аргентум. Сегодня мы поговорим о системах инициализации в Linux, а точнее - об малоизвестной GNU Shepherd.

Мы изучим самые популярные известные системы инициализации - и попытаемся изучить GNU Shepherd.

Ну, друзья, да благословит нас Столлман!

Вперёд!
Всего голосов 21: ↑14 и ↓7 +7
Комментарии 14

Что такое операционная система и зачем она нужна?

Уровень сложности Средний
Время на прочтение 25 мин
Количество просмотров 9.3K

 

Всем привет!

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

Приятного чтения!

Читать далее
Всего голосов 21: ↑12 и ↓9 +3
Комментарии 14

Перенос вашего проекта под Embox на новую плату STM32

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 2K

Всем привет

В этой статье я хочу показать, насколько в Embox легко перенести существующий проект на новую платформу. За основу возьмем уже описанный ранее демонстрационный проект с ModBus и расскажем, как портировать наш проект на новую плату на примере STM32 NUCLEO-F2207ZG.

В статье про ModBus уже было показано, как важны для уменьшения “времени выхода на рынок” (time-to-market), переносимость ПО и удобство разработки и отладки. А теперь предположим, что мы хотим сделать новую версию нашего устройства на новой аппаратной платформе, более дешевой, менее энергопотребляющей или просто доступной на рынке.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 14

Rust 1.74.0: конфигурация проверки в Cargo, авторизация для приватных реестров, проекции возвращаемых типов

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 2.1K

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


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


rustup update stable

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


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 4

Диспетчер Задач для Микроконтроллера

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 9.6K

В программировании микроконтроллеров часто нужно написать простые тестировочные прошивки. При этом надо некоторые функции вызывать чаще, а некоторые реже. Для этого, конечно, можно запустить FreeRTOS, однако тогда этот код не будет переносим на другие RTOS например Zephyr RTOS или TI-RTOS. Поэтому надо держать наготове какой-нибудь простенький NoRTOS планировщик.

В этот тексте я представил основные идеи алгоритма такого кооперативного планировщика.

Читать далее
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 26

Запуск ОСРВ Embox на Banana Pi M1

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 2.9K

Об этой операционной системе я узнал на данном ресурсе, из многочисленных публикаций её разработчиков. Для тех кто не в курсе - это отечественная операционная система реального времени для встраиваемых устройств с открытым исходным кодом. Её официальный репозиторий расположен тут. Возникло желание опробовать этот проект в деле. Благодаря документации к проекту на виртуальной машине qemu удалось запустить конфигурации для разных платформ. Однако, виртуальная машина - это не для настоящих джедаев).

Тщательно изучив список поддерживаемых одноплатников, остановил свой выбор на Banana Pi M1 с ARM-процессором Allwinner A20. Плата была заказана на Aliexpress, и когда она прибыла, настало время экспериментов. Но всё, как и ожидалось, оказалось не так просто...

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 12

Книга «BPF: профессиональная оценка производительности»

Время на прочтение 19 мин
Количество просмотров 1.9K
image Привет, Хаброжители!

Инструменты оценки производительности на основе BPF дают беспрецедентную возможность анализа систем и приложений. Вы сможете улучшить производительность, устранить проблемы в коде, повысить безопасность и сократить расходы. Книга «BPF: профессиональная оценка производительности» — ваш незаменимый гайд по применению этих инструментов.

Брендан Грегг — эксперт и пионер проекта BPF — представляет более 150 готовых инструментов анализа и отладки, рекомендации по их применению, а также пошаговые инструкции по разработке ваших собственных инструментов. Вы узнаете, как анализировать процессоры, память, дисковый ввод/вывод, файловую систему, сети, языки программирования, приложения, контейнеры, гипервизоры, безопасность и ядро. Вы сможете выработать глубокое понимание того, как улучшить буквально любую Linux-систему или приложение.
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 1

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