Многозадачность

Материал из Posmotreli
Перейти к навигации Перейти к поиску
« Говорят, что Юлий Цезарь делал много дел одновременно. Да, поездил бы он в нашей маршрутке и посмотрел на водителя. »
— Задорнов

Многозадачность – свойство системы, которое позволяет выполнять 2 и более задачи одновременно.

Мультизадачность является весьма неплохой суперспособностью.

  • Командовать всей армией на уровне отрядов?
  • Оперативно разруливать проблемы?
  • Одновременно читать сопромат перед экзаменом, писать бестселлер, а ещё вести дискуссию по троповедению и все без потери эффективности?

Пф, круто же.

Но бессердечная реальность, как всегда, вставляет свои палки в колёса, о чём в 2 разделах ниже.

Биологическая сторона вопроса

В некоторой степени многозадачность есть у всех людей. Человек может, например, одновременно:

  • идти;
  • есть;
  • дышать;
  • выполнять простейшие физ. упражнения и т. п.

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

Но большинству, вероятно, интересно а можно ли такой финт выкатить с умственными задачами…

Что ж, ответ нет — человек не может выполнять несколько умственных задач одновременно.

А вот переключаться с одной на другую мозг вполне может, только следует быть готовым последствиям:

  • Повышается риск совершения ошибок.
  • Мозг начинает жрать много энергии просто на переключение с одной задачи на другую Комментарий: у некоторых технических реализаций многозадачности также.
  • Стресс.
  • Усталость.

Техническая сторона вопроса

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

Прежде всего следует понимать, что у человека один «процессор»[1], а у компьютера их… ну… существенно больше.

Поэтому компьютер может выполнять задачи одновременно тупо их-за своей многоядерности и это не считая специальных архитектурных решений[2]

Но есть же ещё и программы, которые сводят это преимущество на нет. Возможные причины:

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

Казалось бы, всё просто: программы нужно писать хорошо, а плохо писать не нужно. Но и с этим уйма сложностей, начиная, например, с архитектуры приложения, самого языка программирования и т. п.

Именно поэтому некоторые игры-песочницы плохо оптимизируются. Dwarf Fortress[3], RimWorld[4], Stellaris грустно кивают в сторонке.

Примеры

Тут помню тут не помню.jpgДа миллион раз же было!
Автор этой статьи уверен, что неоднократно видел примеры этого тропа, но не может вспомнить достаточное их количество. Может быть, вам придёт на ум ещё хотя бы парочка?

Фольклор

Литература

  • Цикл «Ник» от Анджея Ясинского — заглавный герой получил такую фичу. Сам он её описывает как этакую шизофрению, когда в голове два голоса думают одновременно.

Кино

  • Человек-Паук 2 – у Октавиуса, видимо, в каждом щупальце свои ИИ, что и позволяет ему выполнять несколько задач одновременно.

Комиксы

  • Неуязвимый — Робот/Руди после возвращения на Землю от флексианцев знатно прокачался на этом поприще. Управлять одновременно несколькими отрядами роботов, несколькими командами супергероев в разных частях планеты, играя при этом в видеоигру? Как два пальца.

Аниме, манга, ранобэ

  • Да, я паук и что с того? — навык «параллельные сознания» у героини. Одно дерётся телом, другое продумывает стратегию, третье кастует магию и пр.

Видеоигры

  • Stellaris — один из признаков у разогнанных обеспечивает сабж. В тело пропихивается куча мозгов, которые и решают задачи. Согласно описанию могут спорить друг с другом.

Примечания

  1. Хотя некоторые работы говорят, что это не так.
  2. Например, инструкции процессора о параллельных вычислениях (MMX, SSE в интеле).
  3. Всё же добавили немного параллелизма.
  4. Всё же добавили немного параллелизма.