В связи с отрицательными отзывами пробной статьи «Разработка микроядерной Unix подобной OC — планировщик» я решил перезапустить серию статей с учетом некоторых замечаний. Теперь, осознав свою целевую аудиторию, я смог сместить фокус с подобных себе на тех кому это действительно нужно.
Читать полностью »
Рубрика «системное программирование» - 18
Разработка монолитной Unix подобной OS — Начало
2019-09-05 в 14:58, admin, рубрики: C, разработка операционных систем, системное программирование, ядро, ядро ОСМониторинг .NET приложений
2019-09-03 в 20:05, admin, рубрики: .net, C#, clrium, monitoring, Блог компании Семинары Станислава Сидристого, Программирование, системное программирование.NET – управляемая среда выполнения. Это означает, что в ней представлены высокоуровневые функции, которые управляют вашей программой за вас (из Introduction to the Common Language Runtime (CLR), 2007 г.):
Среда выполнения предусматривает множество функций, поэтому их удобно разделить по следующим категориям:
- Основные функции, которые влияют на устройство других. К ним относятся:
- сборка мусора;
- обеспечение безопасности доступа к памяти и безопасности системы типов;
- высокоуровневая поддержка языков программирования.
- Дополнительные функции– работают на базе основных. Многие полезные программы обходятся без них. К таким функциям относятся:
- изолирование приложений с помощью AppDomains;
- защита приложений и изолирование в песочнице.
- Другие функции – нужны всем средам выполнения, но при этом они не используют основные функции CLR. Такие функции отражают стремление создать полноценную среду программирования. К ним относятся:
- управление версиями;
- отладка/профилирование;
- обеспечение взаимодействия.
Видно, что хотя отладка и профилирование не являются основными или дополнительными функциями, они находятся в списке из-за ‘стремления создать полноценную среду программирования’.
LuaVela: реализация Lua 5.1, основанная на LuaJIT 2.0
2019-08-29 в 9:59, admin, рубрики: announce, C, highload, IPONWEB, Lua, luajit, анонс, Блог компании IPONWEB, системное программированиеНекоторое время назад мы анонсировали публичный релиз и открыли под лицензией MIT исходный код LuaVela – реализации Lua 5.1, основанной на LuaJIT 2.0. Мы начали работать над ним в 2015 году, и к началу 2017 года его использовали в более чем 95% проектов компании. Сейчас хочется оглянуться на пройденный путь. Какие обстоятельства подтолкнули нас к разработке собственной реализации языка программирования? С какими проблемами мы столкнулись и как их решали? Чем LuaVela отличается от остальных форков LuaJIT?
Разработка многозадачной микроядерной ОС — Планировщик
2019-08-24 в 7:53, admin, рубрики: kernel development, куча, планировщик, разработка ос, системное программированиеПосле того, как вы прочитали базовые шаги по написанию Hello World ядра из цикла имеющихся на Хабре статей, самое время приступить к серьезной разработке самых базовых инструментов: аллокатора кучи и планировщика.
Честно говоря я долго думал стоит ли начинать писать статьи и делать видеоуроки на столь изьезженную тему. Но страсть к системному программированию и отсутствие структурированной информации на русском языке все же подтолкнули меня на этот эксперимент. Посему, если труд мой окажется востребованным, статьи планирую выпускать не реже чем раз в месяц и не чаще чем раз в неделю.
Читать полностью »
Инструментарий для анализа и отладки .NET приложений
2019-08-18 в 18:33, admin, рубрики: .net, C#, clr, clrium, Блог компании Семинары Станислава Сидристого, Программирование, системное программированиеЗаглянуть «под капот» кода или посмотреть на внутреннее устройство CLR можно с помощью множества инструментов. Этот пост родился из твита, и я должен поблагодарить всех, кто помог составить список подходящих инструментов. Если я пропустил какие-то из них, напишите в комментариях.
Во-первых, я должен упомянуть, что хороший отладчик уже присутствует в Visual Studio и VSCode. Также существует множество хороших (коммерческих) профилировщиков .NET и инструментов мониторинга приложений, на которые стоит взглянуть. Например, недавно я попробовал поработать с Codetrack и был впечатлён его возможностями.
Однако оставшийся пост посвящён инструментам для выполнения отдельных задач, которые позволят лучше понять, что происходит. Все инструменты имеют открытый исходный код.
Введение в Си. Послание из прошлого столетия
2019-08-18 в 11:20, admin, рубрики: C, minix, open source, PL/1, изучение языков, системное программирование, язык c, языки программированияПРЕДИСЛОВИЕ
Я несколько раз в своих комментариях ссылался ссылался на книгу Эндрю Таненбаума «Operating Systems Design and Implementation» на ее первое издание и на то, как в ней представлен язык Си. И эти комментарии всегда вызывали интерес. Я решил, что пришло время опубликовать перевод этого введения в язык Си. Оно по-прежнему актуально. Хотя наверняка найдутся и те, кто не слышал о языке программировании PL/1, а может даже и об операционной системе Minix.
Это описание интересно также и с исторической точки зрения и для понимания того, как далеко ушел язык Си с момента своего рождения и IT-отрасль в целом.Читать полностью »
Выпуск Rust 1.37.0: Profile-Guided Optimization, неименованные константы и cargo vendor
2019-08-15 в 15:00, admin, рубрики: cargo, clippy, open source, release, Rust, rustc, rustdoc, rustfix, rustfmt, stable, выпуск версий, новости технологий, перевод, системное программирование, стабильная версия, языки программированияПредставляем вашему вниманию перевод публикации о новой версии всеми любимого языка программирования Rust.
Введение
Команда разработчиков Rust рада сообщить о выпуске новой версии, 1.37.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.37.0 вам достаточно выполнить следующую команду:
$ rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Портирование ОС на Aarch64
2019-08-13 в 11:27, admin, рубрики: AArch64, Cortex A53, ассемблер, Блог компании Embox, портирование, Программирование, системное программированиеAarch64 — это 64-битная архитектура от ARM (иногда её называют arm64). В этой статье я расскажу, чем она отличается от "обычных" (32-битных) ARM и насколько сложно портировать на него свою систему.
Эта статья — не детальный гайд, скорее обзор тех модулей системы, которые придётся переделать, и насколько сильно архитектура в целом отличается от обычных 32-битных ARM-ов; всё это по моему личному опыту портирования Embox на эту архитектуру. Для непосредственного портирования конкретной системы так или иначе придётся разбираться с документацией, в конце статьи я оставил ссылки на некоторые документы, которые могут оказаться полезны.
У 17 вендоров найдены серьезные уязвимости в драйверах
2019-08-12 в 11:51, admin, рубрики: вендоры, драйвера, информационная безопасность, ошибка, производитель, системное программирование, уязвимость, ядро
На конференции DEF CON 2019 в Лас-Вегасе (штат Невада, США) эксперты по безопасности из компании Eclypsium представили доклад о стандартных ошибках и уязвимостях при разработке ПО, которые они нашли в 42 драйверах режима ядра, исследовав программное обеспечение почти двух десятков различных производителей. Причем, их обращения и вопросы по этому исследованию некоторые производители оборудования просто проигнорировали.
Читать полностью »
Первые опыты использования потокового протокола на примере связи ЦП и процессора в ПЛИС комплекса REDD
2019-08-07 в 12:00, admin, рубрики: fpga, Redd, Компьютерное железо, ПЛИС, потоковый протокол, программирование микроконтроллеров, системное программирование, шина
В предыдущих статьях мы уже познакомились с шиной Avalon-MM, где MM означает Memory Mapped, то есть проецируемая на память. Эта шина вполне себе универсальная. К ней может быть подключено несколько ведущих (Master) и несколько ведомых (Slave) устройств. Мы уже подключали сразу два ведущих устройства (Instruction Master и Data Master), потому что у процессора NIOS II гарвардская архитектура, так что шины команд и данных у него разные, но многие авторы для упрощения разработки ПО снаружи подключают их к одной и той же общей шине.
Если какой-то блок на шине имеет функциональность прямого доступа к памяти (DMA), то он также будет содержать ведущее устройство для шины.
Собственно, на этом факте (много ведущих, много ведомых) и основано главное неудобство данной шины. Когда мы проектировали своё ведомое устройство, нам приходилось декодировать адрес. Когда же мне доводилось делать своего ведущего, возни с арбитражем было существенно больше. А ведь красной нитью через весь цикл статей идёт утверждение, что разработка под Redd — вспомогательная часть проекта, она не должна требовать слишком много трудозатрат. И если можно освободиться от рутины, мы должны от неё освободиться.
Читать полностью »