В предыдущих двух материалах (часть 1, часть 2) этой серии речь шла об общих вопросах работы epoll
, и о том, как epoll
получает уведомления о новых событиях от файловых дескрипторов, за которыми наблюдает. Здесь я расскажу о том, как epoll
хранит уведомления о событиях, и о том, как эти уведомления получают приложения, работающие в пользовательском режиме.
Рубрика «системное программирование» - 8
Реализация epoll, часть 3
2020-11-08 в 13:15, admin, рубрики: epoll, linux, ruvds_перевод, Блог компании RUVDS.com, Программирование, разработка, Разработка под Linux, системное программирование, системные вызовыО кэшах в микроконтроллерах ARM
2020-11-04 в 15:23, admin, рубрики: armv7-m, cache, embox, mcu, open source, stm32, Блог компании Embox, программирование микроконтроллеров, Процессоры, системное программированиеПривет!
В предыдущей статье мы для ускорения графики на микроконтроллере в Embox применяли процессорный кэш. При этом мы использовали режим «write-through». Тогда мы писали о некоторых преимуществах и недостатках связанных с «write-through» режимом, но это был лишь беглый обзор. В этой статье я, как и обещал, хочу подробней рассмотреть типы кэшей в ARM микроконтроллерах, а также сравнить их. Конечно, все это будет рассмотрено с точки зрения программиста, и вдаваться в детали работы контроллера памяти в данной статье мы не планируем.
Читать полностью »
Реализация epoll, часть 1
2020-10-20 в 13:15, admin, рубрики: epoll, linux, Блог компании RUVDS.com, Программирование, разработка, Разработка под Linux, системное программированиеСегодня мы публикуем перевод первой статьи из серии материалов, посвящённых реализации epoll
в ядре Linux 3.16.1*. Автор исходит из предположения о том, что читатели знакомы с API и с использованием epoll
. Он уделяет основное внимание реализации подсистемы epoll
в ядре Linux, а не особенностям её применения. Если вы не знаете о том, как пользоваться epoll
— автор рекомендует сначала почитать документацию. Это значительно облегчит понимание деталей реализации этого механизма.
* — Linux 3.16.1 достаточно старое ядро, но информация работы с epoll актуальна и сегодня (прим. переводчика).
Читать полностью »
Rust 1.47.0: const generics для массивов, LLVM 11, Control Flow Guard и сокращение трассировок
2020-10-09 в 9:18, admin, рубрики: cargo, clippy, open source, release, Rust, rustc, rustdoc, rustfix, rustfmt, stable, выпуск версий, Компиляторы, новости технологий, перевод, Программирование, системное программирование, стабильная версия, языки программированияКоманда Rust рада сообщить о выпуске новой версии, 1.47.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если вы установили предыдущую версию Rust средствами rustup
, то для обновления до версии 1.47.0 вам достаточно выполнить следующую команду:
rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Что вошло в стабильную версию 1.47.0
Данный выпуск не содержит новых языковых особенностей, хотя он добавляет одну долгожданную функцию стандартной библиотеки. По большей части, в этом выпуске повышается качество жизни, добавляются константные функции и стабилизируется стандартная библиотека, а также улучшается инструментарий. Смотрите подробные примечания к выпуску, чтобы узнать о других изменениях, не представленных в данном анонсе.
Архитектура операционной системы для ZX Spectrum-совместимых компьютеров
2020-09-28 в 13:08, admin, рубрики: zx spectrum, Демосцена, ненормальное программирование, системное программирование, старое железоNedoOS – многозадачная операционная система для «русского ZX Spectrum» со средами программирования на ассемблере, Basic, Pascal, C, NedoLang. Работает на TR-DOS, FAT16 и FAT32 с длинными именами, поддерживает tar, gz, zip, rar2 и практически все реально используемые форматы спектрумовских файлов, сетевые утилиты включают Web-браузер и Web-сервер, Telnet-клиент и Telnet-сервер, IRC-клиент и др. Под ОС пишутся игры, в том числе сетевые. Сейчас в репозитории 6 участников. Исходный код всей системы (58 программ) составляет 230 тысяч строк на ассемблере и 70 тысяч строк на Си.
Попробуем выдвинуть аргументы против Rust
2020-09-28 в 12:30, admin, рубрики: Rust, критика, Программирование, системное программирование, эффект ЛиндиНедавно я прочитал статью c критикой Rust. Хотя в ней было много правильных вещей, она мне не понравилось — слишком многое там очень спорно. В целом, я вообще не могу рекомендовать к прочтению никакой статьи с критикой Rust. Это нехорошо, ведь важно обсуждать недостатки, а шельмование низкокачественной и неумелой критики, к сожалению, заставляет пропустить мимо внимания действительно хорошие аргументы.
Итак, попробую привести аргументы против Rust.
Читать полностью »
Что нового в ядре Linux
2020-09-28 в 9:15, admin, рубрики: linux, linux kernel, Rust, Разработка под Linux, системное программирование
После всех этих лет, разработчики ядра Linux продолжают внедрять новшества. Новые версии будут быстрее и стабильнее.
Linux работает практически на всем: все 500 из 500 самых быстрых суперкомпьютеров мира; большинство общедоступных облаков, даже Microsoft Azure; и 74 процента смартфонов. Действительно, благодаря Android, Linux является самой популярной операционной системой для конечных пользователей, чуть обойдя Windows на 4 процента (39% против 35%).
Итак, что же будет дальше с Linux? После освещения Linux на протяжении всех 29 лет его истории и зная практически любого, кто хоть как-то связан с разработкой Linux, включая Линуса Торвальдса, я думаю, что у меня есть ответ на этот вопрос.
История двух стандартных библиотек Си
2020-09-28 в 7:50, admin, рубрики: glibc, musl, musl-vs-glibc, Анализ и проектирование систем, безумие отладки, ненормальное программирование, Программирование, Си, системное программирование, стандартная библиотекаСегодня мне пришел баг-репорт от пользователя Debian, который скормил какую-то ерунду в утилиту scdoc и получил SIGSEGV
. Исследование проблемы позволило мне провести отличное сравнение между musl libc
и glibc
. Для начала посмотрим на стектрейс:
==26267==ERROR: AddressSanitizer: SEGV on unknown address 0x7f9925764184
(pc 0x0000004c5d4d bp 0x000000000002 sp 0x7ffe7f8574d0 T0)
==26267==The signal is caused by a READ memory access.
0 0x4c5d4d in parse_text /scdoc/src/main.c:223:61
1 0x4c476c in parse_document /scdoc/src/main.c
2 0x4c3544 in main /scdoc/src/main.c:763:2
3 0x7f99252ab0b2 in __libc_start_main
/build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
4 0x41b3fd in _start (/scdoc/scdoc+0x41b3fd)
В исходниках на данной строчке написано вот что:
if (!isalnum(last) || ((p->flags & FORMAT_UNDERLINE) && !isalnum(next))) {
Подсказка: p
— это корректный, ненулевой указатель. Переменные last
и next
имеют тип uint32_t
. Сегфолт случается на втором вызове функции isalnum
. И, самое важное: воспроизводится только при использовании glibc, но не musl libc. Если вам пришлось перечитать код несколько раз, вы не одиноки: тут попросту нечему вызывать сегфолт.Читать полностью »
Разбираемся в особенностях графической подсистемы микроконтроллеров
2020-09-08 в 10:32, admin, рубрики: embox, graphics, mcu, open source, stm32, stm32f7discovery, Блог компании Embox, программирование микроконтроллеров, системное программированиеПривет!
В этой статье я бы хотел рассказать об особенностях реализации графического пользовательского интерфейса с виджетами на микроконтроллере и как при этом иметь и привычный пользовательский интерфейс и приличный FPS. Внимание я хотел бы акцентировать не на какой-то конкретной графической библиотеке, а на общих вещах — память, кэш процессора, dma и так далее. Поскольку я являюсь разработчиком команды Embox, приведенные примеры и эксперименты будут на данной ОС РВ.
“Чистый код”: пять ключевых моментов из обязательной к прочтению книги для программистов
2020-09-08 в 7:06, admin, рубрики: Блог компании ГК ЛАНИТ, Ланит, перевод, Программирование, системное программирование, чистый код, Читальный залНедавно я написал о «Пять книг, которые изменили то как я кодирую». В комментариях несколько читателей рекомендовали «Чистый код» Роберта С. Мартина. В результате я прочитал книгу и нашел ее достойной углубленного обзора.