Многозадачность
Многозадачность (англ. multitasking) — это способность вычислительной системы, операционной системы или человека выполнять несколько задач (процессов, потоков, действий) одновременно или в режиме быстрого переключения между ними, создавая иллюзию параллельного исполнения. В контексте информационных технологий многозадачность является фундаментальным свойством современных операционных систем, позволяющим эффективно использовать ресурсы процессора и памяти. В психологии и нейробиологии многозадачность рассматривается как когнитивная способность, которая, вопреки распространённому мнению, часто приводит к снижению продуктивности и увеличению числа ошибок.
История развития многозадачности
Ранние вычислительные системы
Первые компьютеры, такие как ENIAC (1945), работали в однозадачном режиме: одна программа загружалась в память и выполнялась до завершения, после чего запускалась следующая. Такой подход, называемый пакетной обработкой, был крайне неэффективен, так как процессор простаивал во время операций ввода-вывода (например, чтения с перфокарт или магнитных лент).
Появление мультипрограммирования
В 1950-х годах для повышения загрузки процессора была разработана концепция мультипрограммирования. В операционной системе одновременно находилось несколько программ, и когда одна из них ожидала завершения операции ввода-вывода, процессор переключался на выполнение другой. Первой системой, реализовавшей эту идею, считается Atlas (1962, Манчестерский университет), а также система CTSS (Compatible Time-Sharing System, 1961, Массачусетский технологический институт).
Развитие многозадачности в операционных системах
В 1960-х годах появились системы разделения времени (time-sharing), которые позволяли нескольким пользователям одновременно работать с компьютером через терминалы. Примером является система MULTICS (1965). В 1970-х годах многозадачность стала стандартом для Unix-подобных систем. В 1980-х годах многозадачность появилась в персональных компьютерах: сначала кооперативная (в Mac OS до версии 9 и Microsoft Windows 3.x), а затем вытесняющая (в Windows NT, Linux, macOS X). В 2000-х годах с распространением многоядерных процессоров многозадачность стала аппаратно поддерживаемой, что позволило выполнять несколько потоков буквально одновременно.
Типы многозадачности в вычислительной технике
Кооперативная многозадачность
В кооперативной (или невытесняющей) модели операционная система передаёт управление процессу, который сам решает, когда вернуть управление системе. Если процесс зависает или входит в бесконечный цикл, вся система может перестать отвечать. Эта модель использовалась в ранних версиях Windows (до Windows 95) и в классической Mac OS. Основной недостаток — низкая надёжность.
Вытесняющая многозадачность
В вытесняющей модели операционная система с помощью планировщика задач распределяет процессорное время между процессами, принудительно прерывая выполнение одного процесса и передавая управление другому. Это обеспечивает более стабильную работу и предотвращает зависание всей системы из-за сбоя одного приложения. Вытесняющая многозадачность является стандартом для всех современных операционных систем (Windows NT, Linux, macOS, iOS, Android).
Реальная многозадачность (параллельное выполнение)
С появлением многоядерных и многопроцессорных систем стало возможным одновременное выполнение нескольких потоков на разных ядрах. Это называется параллелизмом. В отличие от псевдопараллелизма (быстрого переключения на одном ядре), реальная многозадачность позволяет увеличить общую производительность системы за счёт одновременного использования нескольких вычислительных единиц.
Многозадачность в операционных системах
Планировщик задач
Планировщик — ключевой компонент ядра операционной системы, отвечающий за распределение процессорного времени между процессами и потоками. Он использует различные алгоритмы, такие как:
- Round Robin (RR) — каждому процессу выделяется фиксированный квант времени (например, 10 мс), после чего управление передаётся следующему.
- Priority-based scheduling — процессы с более высоким приоритетом получают больше процессорного времени.
- Completely Fair Scheduler (CFS) — используется в Linux, стремится к равномерному распределению времени между всеми процессами.
- Multi-level Feedback Queue — процессы перемещаются между очередями с разными приоритетами в зависимости от их поведения (например, интерактивные процессы получают более высокий приоритет).
Контекстное переключение
При переключении между процессами операционная система сохраняет состояние текущего процесса (регистры, счётчик команд, память) в структуре, называемой контекстом, и загружает контекст следующего процесса. Это требует определённых накладных расходов (времени и ресурсов), поэтому слишком частое переключение может снизить производительность.
Проблемы многозадачности
- Deadlock (взаимная блокировка) — ситуация, когда два или более процессов ожидают освобождения ресурсов, занятых друг другом.
- Race condition (состояние гонки) — ошибка, возникающая, когда результат работы программы зависит от порядка выполнения потоков.
- Голодание (starvation) — процесс с низким приоритетом может никогда не получить процессорное время, если постоянно поступают более приоритетные задачи.
Многозадачность у человека
Когнитивные аспекты
В психологии под многозадачностью понимается одновременное выполнение двух или более задач, требующих внимания. Исследования, проведённые, в частности, в Стэнфордском университете (2009), показывают, что люди, которые часто занимаются многозадачностью, на самом деле хуже справляются с каждой из задач по отдельности. Мозг человека не способен обрабатывать два потока информации, требующих сознательного внимания, одновременно. Вместо этого происходит быстрое переключение между задачами, что приводит к потере времени на «перезагрузку» контекста (так называемый «эффект переключения»).
Типы многозадачности у человека
- Последовательная многозадачность — переключение между задачами с задержкой. Является наиболее распространённой и наименее эффективной.
- Параллельная многозадачность — выполнение задач, одна из которых автоматизирована (например, ходьба и разговор). В этом случае одна задача не требует сознательного контроля.
Влияние на продуктивность
Согласно исследованиям, многозадачность может снижать продуктивность на 40% и более (по данным Университета Мичигана). Постоянное переключение между задачами повышает уровень стресса, увеличивает количество ошибок и снижает качество работы. Особенно вредна многозадачность для творческих задач, требующих глубокого погружения (состояния «потока»).
Многозадачность в цифровой среде
Современные пользователи часто одновременно работают с несколькими приложениями, вкладками браузера, мессенджерами и социальными сетями. Это явление получило название «медиамногозадачность» (media multitasking). Исследования показывают, что чрезмерная медиамногозадачность может негативно влиять на способность к концентрации, память и эмоциональное состояние.
Критика и ограничения
Критика многозадачности в IT
Хотя многозадачность является неотъемлемой частью современных операционных систем, она не лишена недостатков. Высокая нагрузка на планировщик, накладные расходы на контекстное переключение и проблемы синхронизации могут приводить к снижению производительности в реальных сценариях. В системах реального времени (например, в автопилотах или медицинском оборудовании) многозадачность часто заменяется более предсказуемыми моделями выполнения.
Критика многозадачности у человека
Многие эксперты по продуктивности (например, Дэвид Аллен, автор методики GTD) утверждают, что многозадачность — это миф, и что эффективная работа возможна только при фокусировке на одной задаче за раз. В 2010-х годах в деловой среде получила распространение концепция «однозадачности» (single-tasking) как альтернатива многозадачности.
Интересные факты
- Термин «многозадачность» впервые был использован в контексте вычислительной техники в 1960-х годах в компании IBM.
- В операционной системе Linux планировщик CFS (Completely Fair Scheduler) был внедрён в версии ядра 2.6.23 в 2007 году.
- Некоторые исследования показывают, что женщины в среднем лучше справляются с многозадачностью, чем мужчины, хотя данные остаются спорными.
- В 2012 году компания Google провела исследование, согласно которому средний пользователь переключается между вкладками браузера более 30 раз в час.
Источники
- Таненбаум Э., Бос Х. «Современные операционные системы» (4-е издание, 2015)
- Стивенс У. Р. «UNIX: взаимодействие процессов» (1999)
- Ophir E., Nass C., Wagner A. D. «Cognitive control in media multitaskers» (Proceedings of the National Academy of Sciences, 2009)
- Рубинштейн С. Л. «Основы общей психологии» (1946)
- Дэвид Аллен. «Как привести дела в порядок: искусство продуктивности без стресса» (2001)
- Документация по ядру Linux: «CFS Scheduler» (kernel.org)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →