Pull to refresh
35
0
Send message

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

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

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

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

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

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

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

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

Как в Яндексе используют PyTest и другие фреймворки для функционального тестирования

Reading time19 min
Views125K
Всем привет! Меня зовут Сергей, и в Яндексе я работаю в команде автоматизации тестирования сервисов монетизации. Перед каждой командой, которая занимается задачами автоматизации тестирования, встает вопрос: «Какой [фреймворк|инструмент] выбрать для написания своих тестов?» В этом посте я хочу помочь вам на него ответить. Если быть конкретнее, речь пойдет об инструментах тестирования на языке Python, но многие из идей и выводов можно распространить на другие языки программирования, поскольку подходы часто не зависят от конкретной технологии.



В Python существует множество инструментов для написания тестов и выбор между ними неочевиден. Я опишу интересные варианты использования PyTest и расскажу о его [плюсах|минусах|неявных возможностях]. В статье вы найдёте развёрнутый пример использования Allure, который служит для создания простых и понятных отчётов автотестов. Также в примерах будет применяться фреймворк для написания матчеров — Hamcrest для Python. Надеюсь, что в итоге, те, кто сейчас в поиске инструментов для тестирования, смогут на основе изложенных примеров быстро внедрить функциональное тестирование в своем окружении. Те же, кто уже использует какой-то инструмент, смогут узнать новые подходы, варианты использования и концепции.
Читать дальше →
Total votes 62: ↑60 and ↓2+58
Comments10

Расширенный «Hello! World» на микрофреймворке Flask

Reading time5 min
Views8K
image

Добрый день, хабраюзер.

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

Мы используем Python, в частности микрофреймворк Flask.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments7

GTD на кухне: чем накормить голодного программиста

Reading time9 min
Views56K
imageИтак, как и обещал в первой части, продолжаем упрощать бытовую жизнь хабражителя. Сегодня 8 марта (кстати, девушки, поздравляю!) и части мужчин хочется порадовать своих женщин и освободить их от «рабского труда» на кухне, а другой части – приготовить для себя не традиционные пельмени\вареники\сосиски, а что-то посущественней.
Вот несколько проверенных рецептов, которые пригодятся и первым, и вторым.

Осторожно, много картинок. Голодным не входить!
Читать дальше →
Total votes 220: ↑168 and ↓52+116
Comments214

Интеллектуальные идеи, которые должен знать каждый

Reading time4 min
Views37K
Перевод статьи Скотта Янга "What are the Intellectual Ideas Everybody Should Know?"

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

Рассмотрим уравнение Френеля в физике. Приложив некоторые усилия, можно построить аналогию между этим уравнением и какой-либо другой областью знаний. Но вряд ли можно сказать, что понимание уравнения приводит к бурным озарениям в области истории или искусства.

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

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

С этой позиции я ставлю следующий вопрос: какие интеллектуальные идеи, могущие быть широко применимы в познании мира, усвоены вами?
Читать дальше →
Total votes 80: ↑67 and ↓13+54
Comments34

Жизнь разработчика (в картинках)

Reading time1 min
Views66K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Total votes 884: ↑700 and ↓184+516
Comments132

А вы хотите программировать вверх тормашками?

Reading time10 min
Views34K


Всем добрый вечер/день/утро, кому, что ближе в данный момент. Давненько читаю данный ресурс и всегда с особенной любовью относился к статьям, которые так или иначе мотивировали меня, заставляли задуматься и подталкивали что-нибудь изменить в моей жизни. Поэтому, решил попробовать вдохновить или так сказать, морально помочь тем, кто чего-то хочет, но, как и все нормальные люди сомневается. А конкретно рассказать о моей иммиграции в страну Оззи. Сразу оговорюсь, тем кто любит писать что-то вроде: «многобукв»,«неосилил»… заранее приношу извинения, потому как сам «многобукв» люблю, а когда не люблю иду в твиттер, чего и Вам советую.
Читать дальше →
Total votes 142: ↑124 and ↓18+106
Comments156

Жонглирование. Теория. Практика

Reading time5 min
Views41K
Настороженно отношусь к непрофильным топикам, но решил написать этот по следующим причинам:
  • У жонглирования есть своя теория — стройная и математически привлекательная!
  • Мы живем не только работой. Жонглирование — отличное развлечение и разминка после долгого сидения за компом.
  • В пятницу приятно немного расслабиться и почитать не очень серьезные статьи. К тому же, будет чем заняться на выходные, особенно если у вас не было определенных планов.

Теория


Утверждать, что жонглирование — это последовательность бросков, все равно, что сказать, что музыка — это просто последовательность нот. Нельзя назвать это неправдой, но любой, хоть немного знакомый с музыкальной теорией, возмутится последним определением — столь поверхностным и недалеким.
Читать дальше →
Total votes 252: ↑242 and ↓10+232
Comments45

Как открыть свой интернет-магазин Ecwid на Facebook и Google Sites

Reading time6 min
Views70K
Никаких веб-студий, техзаданий, кодов и программ. Самостоятельно и бесплатно. Быстро и без лишних заморочек. Просто пара-тройка дружеских советов как всего за 1 час открыть свой собственный магазин в Интернете.
Порядок действий укладывается в 3 приема.
— Создание магазина на Ecwid
— Установка магазина на странице Facebook
— Установка магазина на странице Google Sites
Вся информация из официальных хелпов и баз знаний. Поэтому для разработчиков магазинов эти советы очевидны, элементарны и примитивны. Однако надеюсь, что советы будут полезны тем, кто интересуется интернет торговлей, но пока не имеет специальных знаний и опыта.


Читать дальше →
Total votes 34: ↑21 and ↓13+8
Comments38

Ядерная энергетика — кратки над Й

Reading time5 min
Views12K
Судя по комментариям к посту о небесной воде, среди читателей есть некое недопонимание вопросов ядерной энергетики. Я хочу внести некую ясность в этот вопрос. Многим то, что я напишу, покажется элементарщиной, но, к сожалению, не всем.
Читать дальше →
Total votes 147: ↑138 and ↓9+129
Comments244

Как думает программист

Reading time4 min
Views6.7K
Способ мышления влияет на восприятие окружающей среды — это факт. Тем не менее данный факт обычно не принимается во внимание и уж тем более не анализируется достаточно глубоко, в соотношении с повседневной жизнью. Это кажется мне странным — так как от нашего восприятия зависит любая интеракция с тем самым внешним миром, а также и обратная связь с ним. В результате — мы все обычно даже и не задумываемся о том, от чего зависит наша жизнь, наше окружение и эмоциональное состояние.

Хотя, может все таки не все мы? Быть может у программистов с таким самоанализом дела обстоят несколько иначе? Надеюсь что это так, и подобные мысли возникают не у меня одного. В качестве более наглядного примера произведу тут небольшой самоанализ, возможно он поможет кому нибудь взглянуть на обыденные вещи немного с другой стороны. Быть может мое мышление на самом деле ошибочно и сообщество укажет мне на это. Все может быть, но пока-что слишком рано подводить какие либо итоги, так что — приступим!
Читать дальше →
Total votes 65: ↑37 and ↓28+9
Comments92

Ребенок в семье гика или у нас свой подход

Reading time2 min
Views18K
Когда в семье рождается ребенок, это, черт возьми, здорово! Как говорил Гришковец в фильме «сатисфакция»: «все становится сложно, но в то же время все становится просто». Так вот, о простом: существует огромное количество литературы, рассчитанной на молодых мам. Существует даже пара книжек о детях, написанной для мужчин (причем очень дурным языком). Но почему-то очень мало информации, рассчитанной на технарей. Считается, видимо, что у нас до детей не доходит.

Лично мне, когда я читал эти книжки (первое правило — RTFM), очень не хватало каких-то четких инструкций и вариантов использования техники и разных приспособ. А поскольку все мы, сидящие тут, не просто технари, а немного техногики и живем в окружении бешеного количества техники, давайте посмотрим, как ее можно было применить для пользы ребенка.


Читать дальше →
Total votes 256: ↑211 and ↓45+166
Comments324

Живой обзор Samsung Galaxy Tab 10.1

Reading time4 min
Views10K
Сегодня читая Хабр наткнулся на топик «Демонстрация Samsung Galaxy Tab 10.1» и подумал — я уже неделю как счастливый обладатель данного девайса и было бы неплохо познакомить с ним аудиторию поближе.
Читать дальше →
Total votes 53: ↑51 and ↓2+49
Comments89

Android UI. Делаем кнопки в стиле Twitter Bootstrap

Reading time4 min
Views63K
Ниже рассказывается как создать кнопки в стиле Twitter Bootstrap для Android приложения. Данный стиль взят для примера что бы разобраться в концпеции создания собственных стилей. Пример кода выложен на github. Репозиторий будет попoлняться примерами для других элементов. Так что можно подписываться.


Android SDK предлагает несколько вариантов для создания собственных стилей.

Начнём с самого простого. Создададим кнопку на основе нескольких графических файлов отображающих отдельные состояни кнопок. (default, selected, focused, pressed и т.д.) Поддерживаются форматы .png, .jpg, или .gif.

Читать дальше →
Total votes 38: ↑23 and ↓15+8
Comments18

Baldur's Gate на Android: эмулятор GemRB в действии

Reading time3 min
Views51K
Hamsters and rangers everywhere, rejoice!!!

Необязательное предисловие о личном

На рубеже веков все прогрессивное человечество вовсю рассекало по Побережью Мечей: от Кэндлкипа до самых Врат Балдура. А я — я отыгрывал правого хавбека во дворовой команде и проц мой был 386-й, а монитор черно-белый. Приобщился к искусству ролевых игр лишь через 9 лет. И легендарная Baldur's Gate мне не покорилась. Мышкой камеру крутить нельзя — неудобно!..

Так и жил бы, стыдясь своей попсовости, кабы не добрые люди — создатели GemRB, свободно распространяемой реализации Bioware Infinity Engine с открытым исходным кодом.

Матчасть

Стараниями петербургского разработчика Дмитрия Матвеева aka Beholder GemRB портирован на Android. Позволяет запускать игры серии Baldur's Gate, а также — с некоторыми ограничениями — Icewind Dale и Planescape: Torment. Требует:
  • Android >= 1.6;
  • VGA, WVGA, HVGA или большее разрешение;
  • 150 мб RAM;
  • наличие ресурсов оригинальной игры и места под них на смартфоне/планшете.

Читать дальше →
Total votes 77: ↑69 and ↓8+61
Comments62

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

Reading time3 min
Views22K
Доброго времени суток всем хабражителям.

Я по первому образованию математик, а магистратуру заканчивал уже по специальности «Информационные технологии» в США.

Не работаю по специальности (айтишником) уже полтора года, но все равно не могу отпустить айти навсегда. Год назад завел блог на вордпресс (self hosted) и решил писать о наболевших вопросах. Кроме того, это бы дало мне возможность ковыряться в кодах и базах, чего я забыть просто не могу. Писал для друзей и друзей друзей. Хотел собрать некое сообщество приятных в общении и интеллектуальных людей. Забегая вперед скажу, что получилось.
Читать дальше →
Total votes 26: ↑12 and ↓14-2
Comments17

Пошаговая инструкция к созданию торгового робота на Python

Reading time4 min
Views117K
Тема онлайн торгов (будь то форекс, акции, полезные ископаемые) обычно вызывает интерес. Но вместе с тем многие люди думают: «я в этом не разбираюсь, мне спец. терминология неизвестна. Да и непонятно, как начать». Вот над этим мы и поработаем! К концу статьи у вас будет достаточно знаний и примеров, чтобы начать играть на финансовых рынках.

Покроем следующие моменты:
  • Суть биржевой игры;
  • Брокеры;
  • API для торговли/Пример робота;
  • Деплоймент онлайн;
  • Заключительные мысли.

Читать дальше →
Total votes 30: ↑19 and ↓11+8
Comments25

Почему биржа это IT-компания?

Reading time5 min
Views23K
“А какой материал вы собираетесь размещать в корпоративном блоге, вы же не ИТ-компания?” – именно такой вопрос нам задали, когда мы обратились в Habrahabr с просьбой открыть корпоративный аккаунт. И в очередной раз убедились, что пора выходить из тени, и рассказывать о том, что любая биржа — и Московская Биржа в том числе – это, в первую очередь, высокотехнологичная компания со своими торгово-клиринговыми системами, продвинутой IT-инфраструктурой, масштабными разработками и широким набором различных сервисов.

Успешная работа большинства крупных компаний зависит от IT-разработок, в частности, их современности, надежности и производительности. Для примера, в среднем до 30% сотрудников ведущих мировых бирж – это IT-специалисты, занятые разработкой торговых платформ, их сопровождением, а также аппаратной части. И Московская Биржа полностью в тренде.

Биржа – это торговая площадка, основная задача которой – чтобы конечный клиент купил или продал необходимый ему объем актива по устраивающей его цене, в определенный им самим момент времени, и гарантированно получил этот актив на свой счет депо или денежные средства от его продажи на свой расчетный счет.

Любая из всех вышеперечисленных процедур сегодня происходит в электронном виде.
image
Читать дальше →
Total votes 22: ↑16 and ↓6+10
Comments14

Погружаемся в Docker: Dockerfile и коммуникация между контейнерами

Reading time8 min
Views383K
В прошлой статье мы рассказали, что такое Docker и как с его помощью можно обойти Vendor–lock. В этой статье мы поговорим о Dockerfile как о правильном способе подготовки образов для Docker. Также мы рассмотрим ситуацию, когда контейнерам нужно взаимодействовать друг с другом.


В InfoboxCloud мы сделали готовый образ Ubuntu 14.04 с Docker. Не забудьте поставить галочку «Разрешить управление ядром ОС» при создании сервера, это требуется для работы Docker.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments23

Information

Rating
Does not participate
Registered
Activity