Какие операции замедляют работу компьютера в многозадачных системах

Обновлено: 05.07.2024

Поддержка многозадачности (Лекция)

ПЛАН ЛЕКЦИИ

1. Многозадачность – определение, история развития

2. Режимы многозадачности

3. Невытесняющая многозадачность

4. Многозадачность в защищенном режиме

1. Многозадачность – определение, история развития

Многозадачность ( multitasking ) - это способность операционной системы выполнять несколько программ одновременно. В основе этого принципа лежит использование операционной системой аппаратного таймера для выделения отрезков времени ( time slices ) для каждого из одновременно выполняемых процессов. Если эти отрезки времени достаточно малы, и машина не перегружена слишком большим числом программ, то пользователю кажется, что все эти программы выполняются параллельно.

В обязанности процессора входит обеспечение одновременного выполнения нескольких задач. Для реализации многозадачности применяются системные регистры процессора.

Для каждой из задач процессор выделяет очень короткий промежуток (квант) времени. Процессор переключается с выполнения одной задачи на другую, это происходит настолько быстро, что создается иллюзия одновременности выполняемых операций.

Для того чтобы программы MS DOS могли работать внутри защищенной многозадачной среды, используется режим работы процессора виртуальной адресации i86 РМ 86 ( Protected Mode 86). В результате включения механизма РМ 86 реализуется не четыре х- , а менее эффективная двухуровневая система защиты. Память разбивается на страницы. В каждой странице формируются окна емкостью 1 Мбайт. В подобном окне может храниться отдельная программа DOS или другой операционной системы. Совокупность хранимых подобным образом программ называется виртуальными машинами, которые работают в многозадачном режиме.

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

Для того , чтобы многозадачность стала реальностью на персональных компьютерах, потребовалось достаточно много времени. Но, кажется, сейчас мы приближаемся к эпохе использования многозадачности на ПК (PC). Как мы увидим вскоре, некоторые расширенные 16-разрядные версии Windows поддерживают многозадачность, а имеющиеся теперь в нашем распоряжении Windows NT и Windows 95 - 32-разрядные версии Windows, поддерживают кроме многозадачности еще и многопоточность ( multithreading ).
Многопоточность - это возможность программы самой быть многозадачной. Программа может быть разделена на отдельные потоки выполнения ( threads ), которые, как кажется, выполняются параллельно. На первый взгляд эта концепция может показаться едва ли полезной, но оказывается, что программы могут использовать многопоточность для выполнения протяженных во времени операций в фоновом режиме, не вынуждая пользователя надолго отрываться от машины.

2. Режимы многозадачности

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

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

Микропроцессор Intel 8088, использовавшийся в первых ПК, не был специально разработан для реализации многозадачности. Частично проблема (как было показано в предыдущей главе) заключалась в недостатках управления памятью. В то время , как множество программ начинает и заканчивает свое выполнение, многозадачная операционная система должна осуществлять перемещение блоков памяти для объединения свободного пространства. На процессоре 8088 это было невозможно реализовать в стиле, прозрачном для приложений.

Сама DOS не могла здесь чем-либо существенно помочь. Будучи разработанной таким образом, чтобы быть маленькой и не мешать приложениям, DOS поддерживала, кроме загрузки программ и обеспечения им доступа к файловой системе, еще не так много средств.
Тем не менее, творческие программисты, работавшие с DOS на заре ее появления, нашли путь преодоления этих препятствий, преимущественно при использовании резидентных ( terminate-and-stay-resident , TSR) программ. Некоторые TSR-программы, такие как спулер печати, использовали прерывание аппаратного таймера для выполнения процесса в фоновом режиме. Другие, подобно всплывающим ( popup ) утилитам, таким как SideKick , могли выполнять одну из задач переключения - приостановку выполнения приложения на время работы утилиты. DOS также была усовершенствована для обеспечения поддержки резидентных программ.
Некоторые производители программного обеспечения пытались создать многозадачные оболочки или оболочки, использующие переключение между задачами, как надстройки над DOS (например, Quarterdeck's DeskView ), но только одна из этих оболочек получила широкое распространение на рынке. Это, конечно, Windows.

3. Невытесняющая многозадачность

Когда Microsoft выпустила на рынок Windows 1.0 в 1985 году, это было еще в большой степени искусственным решением, придуманным для преодоления ограничений MS DOS. В то время Windows работала в реальном режиме ( real mode ), но даже тогда она была способна перемещать блоки физической памяти (одно из необходимых условий многозадачности) и делала это, хотя и не очень прозрачно для приложений, но все-таки вполне удовлетворительно.

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

Оконная оболочка позволяет нескольким программам выполняться совместно, разделяя один экран. Переключение вперед и назад становится тривиальным, существует возможность быстро передавать данные из одной программы в другую, например, разместить картинку , созданную в программе рисования, в текстовом файле, образованном с помощью текстового процессора. Передача данных поддерживалась в различных версиях Windows: сначала с использованием папки обмена ( clipboard ), позднее - посредством механизма динамического обмена данными (Dynamic Data Exchange, DDE), сейчас - через внедрение и связывание объектов ( Object Linking and Embedding , OLE).

Хотя невытесняющая многозадачность была основным типом многозадачности в 16-разрядных версиях Windows, некоторые элементы вытесняющей (примитивной, preemptive ) многозадачности в них тоже присутствовали.

Windows использовала вытесняющую многозадачность для выполнения DOS-программ, а также позволяла библиотекам динамической компоновки (DLL) получать прерывания аппаратного таймера для задач мультимедиа.

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

В многозадачной системе каждый вид деятельности, который может осуществляться одновременно с другими, называется процессом или задачей. Каждый процесс выполняет программу, состоящую из команд и исходных данных. Одна и та же программа может выполняться несколькими процессами. Процесс - это совокупность инструкций, выполняемых процессором, данных и информации о выполняемой задаче, такой как размещенная память , открытые файлы и статус процесса.

4. Многозадачность в защищенном режиме

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

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

Каждая задача описывается селектором дескриптора сегмента TSS - Task State Segment или сегмент состояния задачи. Сегмент TSS для каждой задачи должен быть описан в таблице GDT (загрузка дескриптора из LDT вызывает ошибку). Сегмент состояния задачи представляет собой 0x67 байт данных, в которых сохраняется состояние задачи (т.е. - содержание регистров процессора и некоторые другие данные) при прекращении ее выполнения.

Пример дескриптора сегмента TSS в таблице GDT:
67 00 00 00 00 89 40 00

Первые 0x67 байт линейного адресного пространства будут использованы для хранения состояния задачи, селектор которой указывает на этот дескриптор Бит 4 пятого байта дескриптора определяет дескриптор как системный. В этом случае биты 0-3 определяют тип дескриптора. Для TSS это:

0001 - свободный 16 битный сегмент состояния задачи
0011 - занятый 16 битный TSS
1001 - свободный 32 битный TSS
1011 - занятый 32 битный TSS

А также:
0101 - шлюз задачи

Селектор выполняющейся в текущий момент времени задачи содержится в регистре TR. В ОС обычно этот регистр загружается командой LTR при запуске первой задачи, выполняющейся в многозадачном режиме

Переключение задач производится с помощью дальнего JMP или CALL, если селектор указывает на TSS или шлюз задачи (а также при прерывании, если сегмент обработчика - TSS). При переключении на задачу, ее тип в дескрипторе изменяется на занятый, т.е. задачи не обладают повторной входимостью . Попытка переключения на занятую задачу вызывает ошибку защиты.

mnogozadachnost-k-kakim-posledstvija-privodit-odnovremennoe-vypolnenie-neskolkih-zadach

Жизнь современного человека наполнена бесконечными потоками информации и дел. В попытках все узнать и успеть мы вынуждены (а иногда и сами выбираем) делать несколько дел одновременно.

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

До сих пор много вопросов, касающихся многозадачности, остаются открытыми:

  • Способны ли мы эффективно выполнять несколько задач одновременно?
  • К каким последствиям приводит многозадачность?
  • Должны ли мы работать и жить в этом режиме или нам следует избегать его?

На эти и многие другие смежные вопросы мы попытаемся ответить в нашей статье.

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

Исследования многозадачности

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

Параллельная многозадачность

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

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

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

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

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

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

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

Последовательная многозадачность

Это одновременное выполнение двух чередующихся действий, которое характеризуется постоянным переключением между ними. При таком типе многозадачности фокус внимания переключается с одной задачи на другую.

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

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

  • во время решения одной задачи левая и правая доли префронтальной коры мозга работают вместе;
  • во время решения двух задач каждая из долей отвечает только за одну из них, не принимая никакого участия в выполнении другой;
  • при решении трех задач мозг периодически забывает про одну из задач [S. Charron, E. Koechlin, 2010].

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

Некоторые люди способны мгновенно переключаться с одной задачи на другую, в то время как для других это является крайне сложным, а иногда и вовсе непосильным. Почему же так происходит? Американские исследователи в результате проведенных экспериментов выявили, что только 2% населения способно эффективно выполнять одновременно более чем одну задачу. Дело в том, что степень эффективности многозадачности зависит от когнитивной гибкости – способности находить различные решения одной и той же задачи, а также адаптироваться к трудностям и изменениям окружающей среды, которая зависит от уровня реструктуризации в соединениях фронтальной коры головного мозга и количества ее связей с другими областями мозга.

Эти различия обусловлены генетическими особенностями строения головного мозга, т.е. склонность к многозадачности является для человека редкой особенностью, а не обыденным качеством [J. Watson, D. Strayer, 2010].

Когнитивный нейробиолог из Университета Юты Дэвид Стрэйер даже разработал тест, который позволяет каждому желающему оценить свою склонность к многозадачности. Для тех, кто не владеет английским языком на должном уровне существует адаптированный вариант этого теста на русском языке.

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

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

Цифровая многозадачность

Система многозадачности включает в себя еще один ее вид – цифровую многозадачность, которая проявляется в привычке смотреть телевизор, общаясь в социальных сетях, переключаться между различными социальными сетями и другими ресурсами Интернета.

Мы живем в век информационных онлайн-технологий и для нас обыденно загружать фото в Instagram, параллельно переписываясь ВКонтакте, писать в Twitter, смотря новое видео на YouTube и т.д., однако исследования цифровой многозадачности также неоднозначны.

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

Однако существует и ряд исследований, доказывающих, что цифровая многозадачность способна принести человеку пользу. Например, ученые Портленда доказали, что подростки имеют больше склонностей к многозадачности, чем представители других возрастов. Эти способности обусловлены тем, что у подростков, выросших на пике развития информационных технологий, произошло расширение рабочей памяти, ввиду чего они лучше справляются с задачами, предполагающими отвлечение, чем с теми, на которых необходимо фокусироваться долгое время [M. Uncapher, A. Wagner, 2018]

Ложная многозадачность

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

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

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

Польза и вред многозадачности

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

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

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

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

  • Снижение познавательных способностей. Если вы пытаетесь выполнить больше, чем две задачи, полушария мозга буквально разрываются между этими задачами, чтобы обеспечить их выполнение. Такое положение дел наносит физический ущерб вашему мозгу: плотность префронтальной коры мозга уменьшается, в результате чего снижаются не только когнитивные способности, но и эмоциональный интеллект, а также уровень IQ [E. Ophir, C. Nass, A. Wagner, 2009].
  • Потеря продуктивности. Постоянное переключение с одной задачи на другую требует дополнительного времени на фокусировку, в результате чего вы тратите до 40% больше времени на решение задач, чем если решаете их последовательно.
  • Снижение эффективности. Еще один минус многозадачности заключается в том, что помимо увеличения времени на выполнение задач, работа в режиме многозадачности приводит к гораздо большему количеству ошибок и недочетов ввиду недостаточно глубокого внимания.
  • Дефицит внимания. Исследования показывают, что люди, которые постоянно живут и работают в режиме многозадачности, зачастую имеют трудности с концентрацией внимания: их внимание рассеивается и им сложно сфокусироваться на чем-то одном.
  • Формирование зависимостей. Когда мы выполняем какую-либо задачу, в организме происходит выброс гомона удовольствия – дофамина. Поэтому работа в режиме многозадачности способствует тому, что мозг привыкает к его выбросу и ему требуется постоянно получать его любыми доступными способами. Чтобы это сделать, человек начинает браться за абсолютно бесполезные задачи с единственной целью – получить дофамин, в результате чего тратит все свое время на выполнение каких-либо дел, но на самом деле не делает ничего значимого и полезного. Таким образом у людей формируется, например, зависимость от социальных сетей [D. Levitin, 2014].
  • Повышение стресса. Кроме дофамина многозадачность стимулирует выработку гормона стресса – кортизола, поэтому такой режим повышает уровень тревожности.
  • Физическое истощение. Постоянное переключение внимания требует высокого потребления кислорода и глюкозы, которые являются жизненно необходимым топливом для нашего организма, поэтому работа в режиме многозадачности в конечном итоге приводит к постоянному ощущению усталости.

Из этого внушительного списка видно, что постоянная работа в режиме многозадачности способна привести к серьезным проблемам. Поэтому если вы все-таки хотите придерживаться режима многозадачности или вас к этому обязывает трудовая деятельность или жизненная ситуация, научитесь использовать его с минимальным вредом для своего здоровья.

Общие рекомендации для тех, кто работает в режиме многозадачности, можно представить в следующем виде:

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

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

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

Желаем вам успехов и искренне верим в то, что вы сможете подчинить себе время! И еще предлагаем пройти небольшой тест на проверку знаний по теме статьи:

МНОГОЗАДАЧНОСТЬ И ПРОЦЕССОРЫ

Многозадачность, multitasking — свойство операционной системы или среды программирования, обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов. Истинная многозадачность операционной системы возможна только в распределенных вычислительных системах.

Примитивные многозадачные среды обеспечивают чистое “разделение ресурсов”, когда за каждой задачей закрепляется определённый участок памяти, и задача активизируется в строго определённые интервалы времени.

Более развитые многозадачные системы проводят распределение ресурсов динамически, когда задача стартует в памяти или покидает память в зависимости от её приоритета и от стратегии системы. Такая многозадачная среда обладает следующими особенностями:

Типы псевдопараллельной многозадачности

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

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

Кооперативную многозадачность можно назвать многозадачностью “второй ступени” поскольку она использует более передовые методы, чем простое переключение задач, реализованное многими известными программами (например, МS-DOS shell из МS-DOS 5.0 при простом переключении активная программа получает все процессорное время, а фоновые приложения полностью замораживаются. При кооперативной многозадачности приложение может захватить фактически столько процессорного времени, сколько оно считает нужным. Все приложения делят процессорное время, периодически передавая управление следующей задаче.

Вид многозадачности, в котором операционная система сама передает управление от одной выполняемой программы другой. Распределение процессорного времени осуществляется планировщиком процессов. Этот вид многозадачности обеспечивает более быстрый отклик на действия пользователя.

Вытесняющая многозадачность — это вид многозадачности при котором планирование процессов основывается на абсолютных приоритетах. Процесс с меньшим приоритетом (например пользовательская программа) может быть вытеснен при его выполнении более приоритетным процессом (например системной или диагностической программой). Иногда этот вид многозадачности называют приоритетным.

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

Процессы, потоки выполнения

Многозадачная (multi-process) система позволяет двум или более программам выполняться одновременно. Многопотоковая (multi-threaded) система позволяет одной программе выполнять сразу несколько потоков одновременно. Современные операционные системы сочетают в себе оба эти свойства.

Процесс — это понятие, относящееся к операционной системе. Каждый раз, как вы запускаете приложение, система создает и запускает новый процесс. С каждым процессом система связывает такие ресурсы, как:

Поток (thread) — это основной элемент системы, которому ОС выделяет машинное время. Поток может выполнять какую-то часть общего кода процесса, в том числе и ту часть, которая в это время уже выполняется другим потоком.

Скалярные, супер-скалярные, векторные, SMT процессоры

Классификация параллельных архитектур по Флинну (M. Flynn)

Вычислительная система с одним потоком команд и данных (однопроцессорная ЭВМ — SISD, Single Instruction stream over a Single Data stream).

Вычислительная система с общим потоком команд (SIMD, Single Instruction, Multiple Data — одиночный поток команд и множественный поток данных).

Вычислительная система со множественным потоком команд и одиночным потоком данных (MISD, Multiple Instruction Single Data — конвейерная ЭВМ).

Вычислительная система со множественным потоком команд и данных (MIMD, Multiple Instruction Multiple Data).

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

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

Термин "конвейер" в компьютерной архитектуре обозначает . конвейер. Идея конвейера состоит в том, чтобы сложную операцию разбить на множество более простых, которые могут выполняться одновременно. При движении объектов по конвейеру на разных его участках выполняются разные операции, а при достижении каждым объектом конца конвейера он окажется полностью обработанным. Конвейеры применяются как при обработке команд, так и в арифметических операциях. Для эффективной реализации конвейера должны выполняться следующие условия:

Количество подопераций называют глубиной конвейера. Важным условием нормальной работы конвейера является отсутствие конфликтов, то есть данные, подаваемые в конвейер, должны быть независимыми. В том случае, когда очередной операнд зависит от результата предыдущей операции, возникают такие периоды работы конвейера ("пузыри"), когда он пуст. Это еще одна проблема в работе конвейерных систем.

Увеличение быстродействия, которое можно получить с помощью конвейера приблизительно дается следующей формулой: nd/(n+d)

где n - количество операндов, загружаемых в конвейер, d - глубина конвейера. Пусть требуется выполнить операцию сложения над двумя одномерными массивами по 200 элементов, причем выполнение сложения требует пять операций. В этом случае ускорение составит (200*5)/(200+5)=4.88. Разумеется, это идеальная ситуация, недостижимая в реальной жизни, в частности, считается, что нет "пузырей" и т.д. Это предполагает, как уже упоминалось, взаимную независимость данных.

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

Примером компьютера с суперскалярным процессором является IBM RISC/6000. Тактовая частота процессора у ЭВМ была 62.5 МГц, а быстродействие системы на вычислительных тестах достигало 104 Mflop (Mflop - единица измерения быстродействия процессора - миллион операций с плавающей точкой в секунду). Суперскалярный процессор не требует специальных векторизующих компиляторов, хотя компилятор должен в этом случае учитывать особенности архитектуры.

Векторный процессор — это процессор, в котором операндами некоторых команд могут выступать упорядоченные массивы данных — векторы (SIMD процессор). Отличается от скалярных процессоров, которые могут работать только с одним операндом в единицу времени. Абсолютное большинсто процессоров являются скалярными или близкими к ним. Векторные процессоры были распространены в сфере научных вычислений, где они являлись основой большинства суперкомпьютеров начиная с 1980-х до 1990-х. Но резкое увеличение производительности и активная разработка новых процессоров привели к вытеснению векторных процессоров со сферы повседневных процессоров.

Одновременная многопоточность (SMT — simultaneous multithreading) — следующий шаг в расширении возможностей процессора, ориентированный на приложения, требовательные к производительности, и поддерживающий метод распараллеливания задач на уровне инструкций на несколько каналов обработки процессора.

Одновременная многопоточная обработка на уровне приложений позволяет “видеть” два процессора вместо одного задействованного. В случае когда режим SMT отключен (однопоточная обработка), каждый физический процессор использует один логический. Когда же режим SMT активирован, каждый процессор, исполняющий в данный момент команды приложения, использует два логических процессора вместо одного. Технология многопоточности реализуется за счет того, что при выполнении разных команд приложения используются разные устройства процессора, что позволяет распределять по ним потоки.

Шины доступа к памяти и NUMA

Шины микрокомпьютера образует группа линий передачи сигналов с адресной информацией, данных, а также управляющих сигналов. Фактически ее можно разделить на три части: адресную шину, шину данных и шину управляющих сигналов (здесь рассматривается 80286 процессор).

Уровни этих сигналов в данный момент времени определяют состояние системы в этот момент.

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

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

Шина управления формируется сигналами, поступающими непосредственно от микропроцессора, сигналами от шинного контроллера, а также сигналами, идущими к микропроцессору от других микросхем и периферийных адаптеров.

Микропроцессор использует шинный контроллер для формирования управляющих сигналов, определяющих перенос данных по шине. Он выставляет три сигнала -SO, -SI, M/-IO, которые определяют тип цикла шины (подтверждение прерывания, чтение порта ввода/вывода, останов, чтение памяти, запись в память). На основании значений этих сигналов шинный контроллер формирует управляющие сигналы, контролирующие динамику данного типа шины.

Для того, чтобы понять динамику работы, разберем, каким образом осуществляется процессором чтение слов из оперативной памяти. Это происходит в течение 4 тактов CLK, или 2 состояний процессора (т.е. каждое состояние процессора длится 2 такта синхросигнала CLK). Во время первого состояния, обозначаемого, как Т 4s 0, процессор выставляет на адресную шину значение адреса, по которому будет читаться слово. Кроме того, он формирует на шине совместно с шинным контроллером соответствующие значения управляющих сигналов. Эти сигналы и адрес обрабатываются схемой управления памятью, в результате чего, начиная с середины второго состояния процессора

Т 4c 0 (т.е. в начале четвертого такта CLK), на шине данных появляется значение содержимого соответствующего слова из оперативной памяти. И наконец, процессор считывает значение этого слова с шины данных. На этом перенос (копирование) значения слова из памяти в процессор заканчивается.

Таким образом, если частота кварцевого генератора, определяющая частоту CLK, равна 20 МГц, то максимальная пропускная способность шины данных равна (20/4) миллионов слов в секунду, или 10 В/сек. Реальная пропускная способность существенно ниже.

Cимметричное мультипроцессирование (англ. Symmetric Multiprocessing, или SMP) это архитектура многопроцессорных компьютеров, в которой два или более одинаковых процессоров подключаются к общей памяти. Большинство многопроцессорных систем сегодня используют архитектуру SMP. SMP системы позволяют любому процессору работать над любой задачей независимо от того, где в памяти хранятся данные для этой задачи; с должной поддержкой операционной системы, SMP системы могут легко перемещать задачи между процессорами эффективно распределяя нагрузку. С другой стороны, память гораздо медленнее процессоров, которые к ней обращаются, даже однопроцессорным машинам приходится тратить значительное время на получение данных из памяти. В SMP ситуация ещё более усугубляется, так как только один процессор может обращаться к памяти в данный момент времени.

SMP это лишь один подход к построению многопроцессорной машины; другим подходом является NUMA, которая предоставляет процессорам отдельные банки памяти.

NUMA, Non-Uniform Memory Architecture — “Архитектура с неравномерной памятью”) — схема реализации компьютерной памяти, используемая в мультипроцессорных системах, когда время доступа к памяти определяется её расположением по отношению к процессору.

Системы NUMA состоят из однородных базовых узлов, содержащих небольшое число процессоров с модулями основной памяти.

Практически все архитектуры ЦПУ используют небольшое количество очень быстрой неразделяемой памяти, известной как кеш, который ускоряет обращение к часто требуемым данным. В NUMA поддержка когерентности через разделяемую память даёт существенное преимущество в производительности.

Хотя системы с некогерентным доступом к NUMA проще проектировать и создавать, становится предельно сложно создавать программы в классической модели архитектуры фон Неймана. В результате, все продаваемые NUMA-компьютеры используют специальные аппаратные решения для достижения когерентности кеша, и классифицируются как кеш-когерентные системы с распределенной разделяемой памятью, или ccNUMA.

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



Когда в начале 60-х годов прошлого века создали первую операционную систему IBM, пользователей поразила возможность компьютера выполнять несколько функций одновременно. То есть процессор легко переключался с одной задачи на другую, постепенно доводя их все до логического завершения. Впечатлившись таким эффектом, мультизадачность попробовали перенести в сферу человеческой деятельности. Тогда показалось, что умение выполнять несколько дел одновременно – это очень полезный навык, овладев которым можно кратно повысить эффективность в работе при этом сэкономив уйму времени. Так ли это на самом деле? Давайте разбираться.

Что такое многозадачность?

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



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

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

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



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

Как работать в таком режиме?



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

Многозадачность – это капризное и довольно сложное свойство психики человека. Если мы не сможем его обуздать, чтобы использовать себе во благо, то оно оседлает нас и выжмет все соки. Помните об этом!

Плюсы и минусы

Рассмотрим преимущества мультизадачности:

  1. При надлежащем планировании действительно можно эффективно решать несколько задач одновременно. То есть, выполняя дела, вы должны четко понимать, каких результатов должны достичь.
  2. Многозадачность помогает развить пластичность мышления и способность удержать в поле внимания несколько задач. Это неплохой тренажер для мозга.
  3. Способность делать несколько дел одновременно и делать это хорошо, помогает быстро реагировать на форс-мажорные обстоятельства, улучшает стратегическое мышление и видение ситуации. В некоторых нишах действительно полезно сразу охватить несколько направлений одновременно, проанализировать их перспективность и только потом принимать решения по каждому из них.



  1. Поверхностная обработка информации. Когда много всего, то мозг скользит по верхушках, не вникая в суть процессов. Такой человек берет общее изо всех сфер, но ни в одной не является профи.
  2. Высока вероятность ошибок. При недостаточной концентрации на задаче или при эффекте переноса данных с одной задачи на другую, неизменно совершаются ошибки. Внимание у многостаночника рассеивается, и это сильно вредит результату.
  3. Повышается утомляемость. Попытки ухватиться за всё сразу требует больших затрат энергии как физической, так и умственной. Человек быстрее устает, а продуктивность стремится к нулю.
  4. Растут горы неоконченных дел. Лихо начать 10-20 дел одновременно никто не запрещает, но не стоит ждать такого же быстрого их завершения. Из 10 начатых дел к финишной черте доводят 1-2 задачи, при этом сорвав все сроки и потратив в разы больше усилий. А что с остальными? Они лежат и ждут своей участи – годами, десятилетиями.

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

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

Совмещение дел может быть опасным для жизни и здоровья. Например, вы находитесь за рулем автомобиля и пытаетесь одновременно вести переговоры с партнером. Вероятность аварии возрастает в разы.

Резюме

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

Читайте также: