Подразумевается, что мы будем писать прошивку под «голое железо». В противном случае применение protothreads смысла не имеет, т.к. мультизадачность должна обеспечиваться средствами ОС. Подразумевается также, что нам необходимо реализовать несколько более-менее сложных алгоритмов, связанных с операциями ввода-вывода. Ну и, как всегда в микроконтроллерах, очевидные требования по экономии RAM и энергопотребления.
Читать полностью »
Рубрика «многозадачность» - 2
(Не) любителям protothreads посвящается: Высокоуровневые функции для работы с 1-Wire
2017-04-12 в 12:40, admin, рубрики: 1wire, C, dma. isr, DS18B20, interrupt, irq, kernel, maxim, Realtime, scada, stm32, stm32l, stm32l-discovery, stm8, stm8l, stm8l-discovery, task, легковесные потоки, многозадачность, программирование микроконтроллеров, Разработка для интернета вещей, системное программированиеПочему я отказался от нескольких мониторов
2017-04-05 в 6:02, admin, рубрики: 4k, Alconost, dell, dpi, gtd, mac, windows, Блог компании Alconost, виртуальный рабочий стол, дисплеи, многозадачность, монитор, мониторы, окна, экранДа здравствует единственный монитор

Нужен всего один монитор с высоким DPI — и зачастую для специалистов в сфере ИТ это действительно лучше, чем несколько мониторов.
Многие разработчики считают, что использование нескольких мониторов повышает производительность — ведь это подтверждается исследованиями, да? Только следует иметь в виду, что многие исследования проводились производителями мониторов — компаниями Dell, NEC и другими.
Безусловно, если поставить на рабочем месте несколько мониторов, окружающие будут думать, что вы тот еще хакер… но пару лет назад я все же продал свои мониторы и оставил один. Оказывается, в этом я не одинок.
И сейчас я расскажу, почему.
Переведено в Alconost
Читать полностью »
Многозадачность. Как справиться с призраками посторонних дел
2017-02-20 в 2:01, admin, рубрики: gtd, Блог компании SmartProgress, зачем здесь эти тэги?, многозадачность, управление проектами, эффективностьМногозадачность мешает сосредоточиться, довести начатое дело до конца, вызывает беспокойство и усталость, постоянное ощущение спешки, чувство неудовлетворенности, при этом эффективность работы падает.
О многозадачности, а точнее о том как с ней справиться, в статье и пойдет речь.
Читать полностью »
Анатомия веб-сервиса
2016-09-06 в 13:07, admin, рубрики: gevent, highload, node.js, Блог компании Конференции Олега Бунина (Онтико), высокая производительность, многозадачность, нити, Параллелизм, параллельное программирование, Проектирование и рефакторинг, Разработка веб-сайтов
Анатомия веб-сервиса
Андрей Смирнов
Я попытаюсь залезть в «потроха» и «кишки» бэкенда веб-сервиса и расскажу, как это внутреннее устройство влияет на эффективность сервиса, а также на продукт, его характеристики, и как бы мы могли этим воспользоваться, чтобы наше приложение выдерживало большую нагрузку или работало бы быстрее.
Какую часть я называю веб-сервисом, бэкендом, application-сервером? В классической архитектуре это то, что стоит за http rеverse proxy или load-балансировщиком, а с другой стороны у него находятся база данных, memcached и др. Вот только об этом бэкенде и будет идти речь.
Homo Multitaskingus: человек многозадачный
2016-07-14 в 5:05, admin, рубрики: gtd, smartprogress, Блог компании SmartProgress, достижение целей, многозадачность, работа, управление проектами, фриланс, эффективностьЛюди, одновременно выполняющие несколько дел, кажутся нам просто гуру эффективности. Но иногда бывает как в анекдоте: «Да, я печатаю 300 знаков в минуту. Правда, такая ерунда получается». Вы хотите быть эффективным или слыть им?
"
Читать полностью »
Нейробиологи предупреждают: многозадачность истощает энергетические резервы вашего мозга
2016-07-09 в 18:05, admin, рубрики: Здоровье гика, многозадачность, мозг, переключение между задачами, психология, энергия мозга
Постоянная проверка телефона снижает производительность
И вот опять — каждодневная утренняя суета: проверить электронную почту, просмотреть Фейсбук, быстренько выпить чашечку кофе, прогуглить, направляясь к поезду, одну последнюю идею, проверить уведомления, ещё кофе, пролистать рабочую электронную почту … — уф! Бесчисленное множество дел переполняет ваше утро, и постоянное переключение между ними, похоже, заметно утомляет вас.
Когда мы пытаемся заниматься несколькими делами одновременно, мы фактически не делаем больше одного дела сразу, а просто быстро переключаемся между ними. И такое переключение истощает. Оно расходует насыщенную кислородом глюкозу в головном мозге, потребляя то же топливо, которое требуется для сосредоточения на задаче.
Читать полностью »
От шедулера к планировщику
2016-04-22 в 10:06, admin, рубрики: многозадачность, планировщик, планировщик задач, программирование микроконтроллеров, системное программирование, шедулер, метки: шедулерСм. две другие статьи этой группы — Делаем многозадачность и Преемптивность: как отнять процессор.
Сразу просьба к строгим читателям. Если вы не поняли какой-либо термин из применённых — спросите, я подскажу, что я имел в виду. А если вам нравится другое написание или перевод этого термина — укажите его в комментарии. Я применяю те, которые нравятся мне.
Итак, в прошлых статьях описан механизм реализации многозадачности за вычетом планировщика, он же шедулер, он же скедулер, он же Васька меченый, сорри, заговариваюсь я с этими терминами…
Как я уже говорил, шедулер — это просто функция, которая отвечает на вопрос: какую нить и на сколько времени поставить на процессор.
Кстати, в SMP системе шедулер ничем не отличается от однопроцессорного. Вообще, чтобы проще понимать структуру взаимодействия сущностей на одном и нескольких процессорах, проще всего представить себе следующую модель: для каждого процессора есть нить «простоя» (которая работает, если вообще больше некому и просто останавливае процессор до прерывания), которая постоянно пытается «отдать» процессор (которым она как бы владеет) другим нитям, выбирая нить с помощью шедулера.
Говоря о шедулере нельзя не сказать о приоритетах.
Приоритет — свойство нити (или процесса) влияющее на конкуренцию этой нити с другими нитями за процессор.
Приоритет обычно описывается парой <класс приоритета, значение приоритета внутри класса>.
Читать полностью »
Преемптивность: как отнять процессор
2016-04-20 в 14:19, admin, рубрики: многозадачность, многопоточность, ненормальное программирование, нити, программирование микроконтроллеров, системное программирование, шедулерЭта статья не имеет смысла без предыдущей, в которой описывались основные механизмы переключения контекстов в многозадачной ОС.
Здесь я расскажу, как кооперативная многозадачность превращается во враждебную преемптивную.
Суть этого превращения проста. В машине есть таймер, таймер генерирует прерывания, прерывания приостанавливают код нити и отдают процессор в руки механизма многозадачности. Оный уже вполне кооперативно переключает процессор на новую нить, как и описано в предыдущей статье.
Но, как обычно, есть нюансы. См. код для интела.
Сам «отъём» процессора делается как в рамках обычного хардверного прерывания, обычно — по таймеру, так и в рамках «софтверного» прерывания — которое, собственно, такое же прерывание, но вызванное специальной инструкцией процессора. Такой способ переключения контекста нужен, если мы (например, в рамках примитива синхронизации) явно останавливаем нить и не хотим ждать, пока прилетит таймерное прерывание.
Читать полностью »
Делаем мультизадачность
2016-04-20 в 12:25, admin, рубрики: многозадачность, многопоточность, ненормальное программирование, программирование микроконтроллеров, системное программированиеЯ стараюсь чередовать статьи про разработку ОС вообще и специфические для ОС Фантом статьи. Эта статья — общего плана. Хотя, конечно, я буду давать примеры именно из кода Фантома.
В принципе, реализация собственно механизма многозадачности — довольно простая вещь. Сама по себе. Но, во-первых, есть тонкости, и во-вторых, она должна кооперироваться с некоторыми другими подсистемами. Например, та же реализация примитивов синхронизации очень тесно связана с реализацией многозадачности. Есть небанальная связь так же и с подсистемой обслуживания прерываний и эксепшнов. Но об этом позже.
Начнём с того, что есть два довольно мало связанных модуля — собственно подсистема переключения задач (контекстов) и подсистема шедулинга. Вторую мы сегодня обсуждать почти не будем, просто опишем кратко.
Шедулер — это функция, которая отвечает на вопрос «какой нити отдать процессор прямо сейчас». Всё. Простейший шедулер просто перебирает все нити (но, конечно, готовые к исполнению, не остановленные) по кругу (RR алгоритм). Реальный шедулер учитывает приоритеты, поведение нити (интерактивные получают больше, чем вычислительные), аффинити (на каком процессоре нить работала в прошлый раз) и т.п., при этом умеет сочетать несколько классов приоритетов. Типично это класс реального времени (если есть хотя бы одна нить этого класса — работает она), класс разделения времени и класс idle (получает процессор только если два предыдущих класса пустые, то есть в них нет нитей, готовых к исполнению).
На сём пока про шедулер закончим.
Перейдём к собственно подсистеме, которая умеет отнять процессор у одной нити и отдать его другой.
Читать полностью »
Мифы о многозадачности, или Как наш мозг на неё реагирует
2015-09-15 в 16:57, admin, рубрики: gtd, smartprogress, Блог компании SmartProgress, многозадачность, организация рабочего времени, управление проектамиДля большинства из нас выполнение нескольких задач одновременно делает нас менее продуктивными. Так почему же, черт возьми, нам так нелегко сконцентрироваться на одной единственной вещи?
Мы все хорошо знаем о том, что для эффективной работы нужно фокусироваться на чем-то одном и изо всех сил избегать многозадачности. И тем не менее, каким-то образом мы забываем об этом, ужиная перед экраном телевизора с открытым ноутбуком на коленях. Мы пишем письма, просматриваем ленты новостей, заглядываем в Facebook и Twitter, общаемся в чатах – все это одновременно с выполнением нашей главной задачи. И несмотря ни на что в глубине души своей мы убеждены, что способны справиться со всем этим ворохом многозадачности без вреда для нашей продуктивности, ну, или, пожалуй, с минимальными ее потерями.

Недавно я начала свой новый рабочий проект, который направлен на однозадачность. Результаты моей же работы в режиме «не все сразу» меня просто поразили, именно поэтому я решила углубиться в изучение этого вопроса. Мне было интересно понять, что творится в наших головах и получить ответ на давно волнующий меня вопрос:
Почему мы вообще беремся за несколько дел одновременно? Почему мы вырабатываем у себя привычку хвататься за все сразу?
Читать полностью »

