Pull to refresh
6
0
Роман Цегельский @RomanTsegelskyi

User

Send message

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

Reading time6 min
Views75K
Котейка и младшие братьяВ предыдущей своей статье я затронула тему многопоточности. В ней речь шла о базовых понятиях: о типах многозадачности, планировщике, стратегиях планирования, машине состояний потока и прочем.

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

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

Рассказывать я постараюсь подробно, описывая основное API и иногда углубляясь в особенности реализации, особо заостряя внимание на задаче планирования.
Читать дальше →
Total votes 94: ↑93 and ↓1+92
Comments31

Организация многозадачности в ядре ОС

Reading time22 min
Views77K
Волею судеб мне довелось разбираться с организацией многозадачности, точнее псевдо-многозадачности, поскольку задачи делят время на одном ядре процессора. Я уже несколько раз встречала на хабре статьи по данной теме, и мне показалось, что данная тема сообществу интересна, поэтому я позволю себе внести свою скромную лепту в освещение данного вопроса.
Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
Ну, и многопоточные котики для привлечения внимания.

Читать дальше →
Total votes 92: ↑92 and ↓0+92
Comments19

Метапрограммирование: какое оно есть и каким должно быть

Reading time11 min
Views37K

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

Хотя, конечно, самомодифицирующийся код — это скорее отдельная большая тема, достойная отдельного исследования; здесь под метапрограммированием мы будем понимать процессы, происходящие во время компиляции программы.

Метапрограммирование реализовано в той или иной мере в очень разных языках; если не рассматривать экзотические и близкие к ним языки, то самым известным примером метапрограммирования является С++ с его системой шаблонов. Из «новых» языков можно рассмотреть D и Nim. Одна из самых удачных попыток реализации метапрограммирования — язык Nemerle. Собственно, на примере этой четверки мы и рассмотрим сабж.

Метапрограммирование — интереснейшая тема; в этой статье я попытаюсь разобраться, что же это такое, и каким оно должно быть в идеальном случае.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments26

69 бизнес-моделей ИТ-компаний

Reading time3 min
Views43K


С ростом конкуренции возрастает и многообразие бизнес-моделей технологических стартапов, которые мы и постарались классифицировать. Мы адаптировали оригинальную подборку примеров, которую вы сможете дополнить, добавляя свои варианты в комментарии.
Читать дальше →
Total votes 33: ↑25 and ↓8+17
Comments1

16 месяцев функционального программирования

Reading time16 min
Views67K
Предлагаю читателям «Хабрахабра» перевод статьи «16 Months of Functional Programming». Все мои замечания будут выделены курсивом.

В этой статье я хочу поделиться с вами моим опытом в функциональном программировании. Я чувствую, что в целом за прошедшие 16 месяцев стал лучше разбираться в информатике и компьютерах, чем за предыдущие 10 лет и всё это благодаря моему погружению в Scala и мир функционального программирования. Причина по которой функциональное программирование побуждает вас к постоянному развитию заключается в том, что каждую задачу необходимо переосмысливать заново. Порой невозможно поверить в то, что большинство стандартных задач могут быть решены иным путём и — бум! — функциональный подход предлагает лучшее решение и это шокирует.
Читать дальше →
Total votes 57: ↑56 and ↓1+55
Comments97

Хакер/фрикер 1903 года: взлом «защищенного» беспроводного канала связи

Reading time6 min
Views40K
«Другим моим увлечением, также обнаруженным в раннем возрасте, была практическая магия (фокусы). Узнав, как действует та или иная уловка, я отрабатывал её много раз, пока не достигал совершенства. В какой-то степени именно через фокусы я открыл удовольствие от получения секретных знаний.» Кевин Митник
«manage the adversary’s sensory perception» in order to «confuse, delay, inhibit, or misdirect [his] actions» DARPA`s project «Battlefield Illusion».


В рамках подготовки молодых авторов Хабра в категории «Саурон» появился второй номинант. Позвольте представить — Trephs (Леша), он сделал большую часть работы по переводу с английского (так что с вопросами по переводу к нему).
В этот раз мы решили осветить тему, на мой взгляд вполне достойную Хабра, а именно историю первого взлома информационной системы, про которую я уже упоминал вскользь в посте «История хакерских взломов информационных систем (1903-1971)».
Стоит особо отметить, так это то, что взлом имел исключительно «троллинговый» характер.

Маскелины — та еще семейка. Дед-астроном изучал Венеру и увековечил род Мескелинов тем, что в честь него назвали кратер на Луне, папаша героя нижеприведенного текста, Джон Маскелин, изобрел платный туалет-кабинку и прочие фокусы, а его сынуля, Джаспер Маскелин водил Гитлера за нос (а может и Черчилля) и был настоящим боевым магом-иллюзионистом, «спрятал» Александрийскую гавань, наколдовал немецкий крейсер «Адмирал граф Шпее» и кучу «надувных» танков, а так же помогал пленным с побегами.

О том, как же Невил Маскелин хакнул Маркони с его «суперзащищенным» радио читайте под катом.
Читать дальше →
Total votes 71: ↑66 and ↓5+61
Comments20

Information

Rating
Does not participate
Location
West Lafayette, Indiana, США
Date of birth
Registered
Activity