Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

[Питер] Встреча с техлидом OpenSource ОС Embox: Современное встроенное ПО и классика Таненбаума

Блог компании JUG Ru GroupСистемное программирование
В последнее время все более активно развивается тематика встроенных (embedded) систем и многие крупные компании такие как Google, Microsoft, Intel вкладывают огромные ресурсы в исследования и разработки в данной области. Взять, например, проект Майкрософт по созданию специализированной ОС для умных домов homeos или процессоры от Intel для встроенных решений Intel Quark, а о различных исследовательских проектах от Google по робототехнике и говорить не стоит, они и так на слуху.

Подобные системы всегда имели свои особенности: ограниченность вычислительных ресурсов, различные процессорные архитектуры, порядок байт и многое другое. Всё это накладывает отпечаток на процесс разработки встроенного ПО. Несмотря на то, что в последнее время для создания встроенных систем все чаще применяются принципы и технологии из области “обычных” десктопных систем, сам процесс остается специфичным. Поэтому считается, что порог вхождения при разработке системного и встроенного ПО очень высокий. Для подготовки хороших специалистов в этой области на Мат-Мехе СПбГУ организовали исследовательский проект по созданию ОС реального времени для встроенных применений Embox, в котором активную роль играют студенты.



В четверг, 27 ноября, в 20:00 в бизнес-инкубаторе «Ингрия» состоится встреча CodeFreeze с Антоном Бондаревым, техническим руководителем проекта Embox. В докладе будет раскрыты аспекты разработки встроенного ПО на примере этой ОС.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры7.9K
Комментарии 12

Многозадачность в ядре Linux: прерывания и tasklet’ы

Блог компании EmboxСистемное программированиеC
Котейка и младшие братьяВ предыдущей своей статье я затронула тему многопоточности. В ней речь шла о базовых понятиях: о типах многозадачности, планировщике, стратегиях планирования, машине состояний потока и прочем.

На этот раз я хочу подойти к вопросу планирования с другой стороны. А именно, теперь я постараюсь рассказать про планирование не потоков, а их “младших братьев”. Так как статья получилась довольно объемной, в последний момент я решила разбить ее на несколько частей:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

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

Рассказывать я постараюсь подробно, описывая основное API и иногда углубляясь в особенности реализации, особо заостряя внимание на задаче планирования.
Читать дальше →
Всего голосов 94: ↑93 и ↓1 +92
Просмотры69K
Комментарии 31

Многозадачность в ядре Linux: workqueue

Блог компании EmboxСистемное программированиеC
Продолжаем тему многопоточности в ядре Linux. В прошлый раз я рассказывала про прерывания, их обработку и tasklet’ы, и так как изначально предполагалось, что это будет одна статья, в своем рассказе о workqueue я буду ссылаться на tasklet’ы, считая, что читатель уже с ними знаком.
Как и в прошлый раз, я постараюсь сделать мой рассказ максимально подробным и детальным.

Статьи цикла:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность


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

Protothread и кооперативная многозадачность

Блог компании EmboxСистемное программированиеC
Продолжаем изучать планирование маленьких потоков. Я уже рассказала про два средства в ядре Linux, которые часто используются для отложенной обработки прерываний. Сегодня речь пойдет о совсем другой сущности — protothread Adam Dunkels, которые хоть и выбиваются из ряда, но в контексте рассматриваемой темы совсем не лишние.

А также:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

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

Проблема PID 1 zombie reaping в Докере

Блог компании «Hexlet»
Перевод
Привет, Хабр!
Мы в Хекслете активно используем Докер как для запуска самого приложения и сопутствующих серверов, так и для запуска пользовательского кода в практических упражнениях по программированию. Без этих легковесных контейнеров нам было бы в разы сложнее справиться с этими задачами. Докер –замечательная технология, но иногда возникают неожиданные проблемы. Одна из таких проблем (и ее решение) описана в блоге Phusion (это создатели Phusion Passenger), сегодня мы публикуем ее перевод.


Примерно год назад, когда Докер был в версии 0.6, мы первыми представили Baseimage-docker. Это минимальный образ Ubuntu, модифицированный специально для Докера. Люди могут пуллить этот базовый образ из Docker Registry и использовать его как основу для своих образов.

Мы были ранними пользователям Докера, используя его для CI и для создания рабочего окружения задолго до выхода версии 1.0. Базовый образ мы сделали чтобы решить проблемы, специфичные для принципов работы Докера. Например, Докер не запускает процессы под специальным процессом init, который бы правильно обрабатывал дочерние процессы, поэтому возможна такая ситуация, когда зомби-процессы вызывают кучу проблем. Докер также не делает ничего с syslog, поэтому важные сообщения могут быть утеряны. И так далее.

Однако, мы выяснили, что многие люди не понимают проблем, с которыми мы столкнулись. Да, это довольно низкоуровневые системные механизмы Unix, которые понятны далеко не всем. Поэтому в этом посте мы опишем самую главную проблему, которую мы решаем – PID 1 zombie reaping problem.


Читать дальше →
Всего голосов 41: ↑40 и ↓1 +39
Просмотры17.7K
Комментарии 9

Релиз elementary OS «Freya»

Настройка Linux
Спустя два года с момента выхода elementary OS Luna, мы дождались релиза следующий версии, под названием Freya. Напомню, отличительной особенностью elementary OS является графическая оболочка собственной разработки — Pantheon. Дополнительно стоит отметить, что Freya основана на Ubuntu 14.04.
image
Читать дальше →
Всего голосов 58: ↑49 и ↓9 +40
Просмотры146.5K
Комментарии 177

Организация виртуальной памяти

Блог компании EmboxПрограммированиеСистемное программирование
Привет, Хабрахабр!

В предыдущей статье я рассказал про vfork() и пообещал рассказать о реализации вызова fork() как с поддержкой MMU, так и без неё (последняя, само собой, со значительными ограничениями). Но прежде, чем перейти к подробностям, будет логичнее начать с устройства виртуальной памяти.

Конечно, многие слышали про MMU, страничные таблицы и TLB. К сожалению, материалы на эту тему обычно рассматривают аппаратную сторону этого механизма, упоминая механизмы ОС только в общих чертах. Я же хочу разобрать конкретную программную реализацию в проекте Embox. Это лишь один из возможных подходов, и он достаточно лёгок для понимания. Кроме того, это не музейный экспонат, и при желании можно залезть “под капот” ОС и попробовать что-нибудь поменять.
Читать дальше →
Всего голосов 39: ↑39 и ↓0 +39
Просмотры52.6K
Комментарии 4

Легкие потоки в Embox

Блог компании EmboxOpen sourceСистемное программированиеC

Сегодня, как и обещала, я продолжу тему планирования легких сущностей, которую уже начала в своем цикле статей. В нем я рассказала о внутреннем устройстве tasklet, workqueue и protothread. Конечно, тема не ограничивается лишь этими примерами: есть еще FreeRTOS с ее coroutine, или GNU Portable threads; или можно отойти от структур и библиотек, применяющихся в ОС, и вспомнить различные green threads, которых становится все больше и больше.

На этот раз я хочу поделиться тем, как мы реализовали легкие потоки в проекте Embox. С одной стороны мы постарались учесть опыт предыдущих разработок, с другой — привнести что-то новое.
Мышь Embot не несет ответственности за код в статье
Всего голосов 23: ↑21 и ↓2 +19
Просмотры8.5K
Комментарии 3

Разработка OS на Go+asm Part 0x00

Ненормальное программированиеСистемное программированиеGo
Tutorial
Доброго времени суток %username%.

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

Как некоторым известно, я очень люблю язык Go ну, и решил попробовать написать на нем. Что из этого получилось — под хабракатом.

Part 0x00
Part 0x01
Читать дальше →
Всего голосов 51: ↑50 и ↓1 +49
Просмотры24.2K
Комментарии 27

История о том, как я ОС в Minecraft писал

Lua
Из песочницы
image

В далеком 2011 году мир увидел такую игру как Minecraft — воксельную песочницу, где каждый творит все, что душе угодно. Спустя некоторое время народные умельцы стали писать различные модификации для нее, делающие геймплей более разнообразным. Не так давно появился мод под названием «OpenComputers», добавляющий полноценные компьютеры, программируемые на скриптовом языке Lua. И в этой статье я хочу поделиться с вами небольшим опытом, приобретенным при изучении этого крайне интересного мода.
Читать дальше →
Всего голосов 107: ↑101 и ↓6 +95
Просмотры90.6K
Комментарии 125

System 6 (Systemicus) GUI, некоторые аспекты

AssemblerСистемное программирование
Recovery mode
image

Продолжается работа над OS System 6 (ранее Systemicus). Немного разобрался с GUI – кроме некоторых недочетов, она уже близка к рабочему варианту. О чем эта краткая статья.
Читать дальше →
Всего голосов 11: ↑6 и ↓5 +1
Просмотры4.5K
Комментарии 12

Создаем новую OS. Действительно новую, реально операционную, и правда – систему

Блог компании IntelПрограммированиеАнализ и проектирование систем

О создании новой операционной системы в последнее время говорят немало, особенно в России. В сумме размер всех публикаций по данной теме наверняка превышает размеры исходного кода любой операционной системы. Так что остается только одна проблема – от этих разговоров никаких новых OS не появляется. Всё, что предъявляется публике (и на что тратятся бюджетные деньги), на поверку оказывается кастомизированными сборками OS семейства Linux, а значит, не содержит ничего принципиально нового. Но, если о чем-то не говорят, это не значит, что его не существует.
В этой статье – проект принципиально новой OS, созданный в нерабочее время одним из ведущих сотрудников (Principal Engineer) российского подразделения Intel.
Читать дальше →
Всего голосов 88: ↑85 и ↓3 +82
Просмотры79.5K
Комментарии 157

Пишем свой мессенджер P2P

PythonTwisted

На фоне обсуждения будущего интернет мессенджеров и прочтения статьи «Почему ваш любимый мессенджер должен умереть», решил поделиться своим опытом создания P2P приложения для общения независимо от сторонних серверов. Точнее — это просто заготовка, передающая одно сообщение от клиента серверу, дальнейшее расширение функционала зависит только от Вашей фантазии.
Читать дальше →
Всего голосов 20: ↑16 и ↓4 +12
Просмотры66.6K
Комментарии 46

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5)

Смартфоны
Tutorial
SailfishOS on nexus5 Moto g2

В этой статье я расскажу, как установить Sailfish OS на свой смартфон и все тонкости этого процесса.

У меня был самый первый телефон от Jolla и он мне вполне нравился. Но время его не пощадило: у него сломался слот СИМ-карты и он превратился в оффлайн-смартфон. Какое-то время я пользовался Андроидом, но хочется возвратиться обратно и я начал смотреть в сторону неофицильных прошивок. Первый телефон Jolla морально устарел на сегодня, у него отвратительная камера, железо уже неактуальное и экран с небольшим разрешением. У меня завалялся телефон Moto G 2, на который я попробовал установить SFOS, но она была не совсем готова (камера не работала, Bluetooth работал частично, нету проигрывания видео и многие другие недочёты) и её польский автор как-то не торопился её допиливать. Поэтому я посидел несколько недель на eBay и нашёл для себя б/у телефон Nexus 5 для экспериментов. Сегодня я постараюсь вам описать все подводные камни процесса установки SailfishOS на Андроид-смартфон.
Читать дальше →
Всего голосов 27: ↑24 и ↓3 +21
Просмотры51.5K
Комментарии 33

Собственная платформа. Часть 0.1 Теория. Немного о процессорах

КомпиляторыCFPGAПрограммирование микроконтроллеров

Здравствуй, мир! Сегодня у нас серия статьей для людей со средними знаниями о работе процессора в которой мы будем разбираться с процессорными архитектурами (у меня спелл чекер ругается на слово Архитектурами/Архитектур, надеюсь я пишу слово правильно), создавать собственную архитектуру процессора и многое другое.


4004


Принимаются любые замечания!


Читать дальше →
Всего голосов 53: ↑43 и ↓10 +33
Просмотры32.3K
Комментарии 58

(Не) любителям protothreads посвящается: Высокоуровневые функции для работы с 1-Wire

Системное программированиеCSCADAПрограммирование микроконтроллеровРазработка для интернета вещей
Подразумевается, что мы будем писать прошивку под «голое железо». В противном случае применение protothreads смысла не имеет, т.к. мультизадачность должна обеспечиваться средствами ОС. Подразумевается также, что нам необходимо реализовать несколько более-менее сложных алгоритмов, связанных с операциями ввода-вывода. Ну и, как всегда в микроконтроллерах, очевидные требования по экономии RAM и энергопотребления.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры6.1K
Комментарии 1

Реализация fork() без MMU

Блог компании EmboxНенормальное программированиеOpen sourceСистемное программированиеC
Здравствуй, читатель! Пару лет назад в статье про vfork() я обещал рассказать про реализацию fork() для систем без MMU, но руки до этого дошли только сейчас :)

В этой статье я расскажу, как мы реализовали такой странный fork(). Проверять работоспособность буду на сторонней программе — dash — интерпретаторе, который использует fork() для запуска приложений.

Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 43: ↑42 и ↓1 +41
Просмотры7.2K
Комментарии 1

Mandriva прекращает свое существование

Настройка Linux
image

Это печальные вести для поклонников Linux. Французская техническая компания Mandriva ликвидируется согласно размещенной информации в каталоге организаций, сообщает Business Insider.

В 2013 году Mandriva получила доход в размере 553 000 евро, однако этого было недостаточно для того, чтобы удержать компанию на плаву в 2015 году.

В течение десятилетий Mandriva пыталась сместить с трона ОС для настольных ПК Windows, детище компании Майкрософт. Первой заявкой на успех была сделка, заключенная в 2007 году с нигерийским правительством. Тогда Mandriva убедила их отказаться от Windows в пользу своего продукта, который, в последствии, был установлен на 17 000 компьютеров в нигерийских школах.

Также некоторым успехом Mandriva пользовалась в Малайзии.
Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры20.1K
Комментарии 30

Canonical прекратит разработку Unity, Mir и Ubuntu Phone

Open source
Recovery mode
image

Что же, очередная громкая новость про Ubuntu за моим авторством, но повод в этот раз очень грустный: компания Canonical забрасывает разработку Ubuntu Phone, а так же дисплейного сервера Mir и оболочки Unity (и 7, и 8 версии). Интерес к убунтуфону более или менее плавно затухал, закрытие проекта не такая уж неожиданность, но решение касаемо Unity — полный шок. В версии 18.04 планируется снова вернуться к Gnome. Иначе говоря, компания отказывается от идеи «сходимости» (convergence) пользовательского интерфейса на девайсах разных форм-факторов. Под катом немного моих размышлений по теме.
Читать дальше →
Всего голосов 64: ↑62 и ↓2 +60
Просмотры43.7K
Комментарии 380

Современное автомобилестроение — ликбез. Вводная часть

Производство и разработка электроники

Автомобили интересны если не только лишь всем, то очень многим. По разным причинам.

Заглянем в будущее
(В следующих нескольких абзацах — немного сухих тезисов, выгравированных шершавым языком научпопа)

В современном быстро меняющемся обществе мир автомобилестроения — один из локомотивов (не побоимся логической тавтологии) многих государственных экономик и, одновременно, «горнило техник наших дней».

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

«Доколе?!» — спросите вы. И будете правы — ситуацию необходимо исправлять.
Исправляем статус-кво
Всего голосов 32: ↑28 и ↓4 +24
Просмотры18.1K
Комментарии 147