Многозадачность позволила улучшить использование компьютеров на уровне операционной системы, поскольку в случае блокировки выполняющейся программы (например, операций ввода-вывода) процессор автоматически назначается другому (ожидающему) процессу. Это позволяет максимально использовать доступное оборудование.
Вскоре программисты начали сознательно использовать многозадачность, запрограммировав несколько отдельных программ для решения одной задачи, которые могли работать вместе благодаря многозадачности. Типичное использование многозадачности — реализация сетевых служб, таких как веб-сервер (например, HTTP-сервер Apache ), транспорт электронной почты (например, Sendmail ) и т.д., Где родительский процесс прослушивает сетевой интерфейс и передает входящие запросы своим потомкам для обработки. Другой пример — распараллеливание вычислений, где можно использовать преимущества многопроцессорной системы .
Однако такое использование многозадачности привело к проблемам с производительностью, которые привели к увеличению накладных расходов операционной системы на переключение между задачами и узкому месту в виде низкой пропускной способности данных между процессами .
Для решения этих основных проблем в операционных системах была реализована поддержка так называемых потоков (так называемых облегченных процессов, этот метод называется многопоточностью). Основная особенность потоков — разделяемая память (работающая в одном адресном пространстве.), что также является их основным преимуществом (снижает накладные расходы на изменение контекста и упрощает передачу данных между потоками). Операционная система, которая не включает поддержку потоков, может работать с обычными процессами с помощью настроек совместного использования памяти (но за счет более высоких накладных расходов). Также имеется аппаратная поддержка потоков.
Защита памяти
При реализации многозадачности важно, чтобы операционная система поддерживала защиту памяти, которая предотвращает намеренные или непреднамеренные изменения в адресном пространстве различных одновременно запущенных процессов или даже в пространстве ядра операционной системы. Если запущенный процесс пытается получить доступ к памяти, которая ему не принадлежит (не выделенная ему модулем управления памятью в ядре операционной системы), он обычно завершается ядром операционной системы перед выполнением этой машинной инструкции . Аппаратная поддержка (модуль управления памятью, являющийся частью процессора) требуется для включения защиты памяти.). Существуют также операционные системы, которые поддерживают многозадачность, но без защиты памяти, которые были разработаны для процессоров без аппаратной поддержки (процессоры Intel и совместимые до появления Intel 80386 ).
Виртуальная память
Виртуальная память позволяет запущенным процессам предлагать больше оперативной памяти, чем физически присутствует на вашем компьютере, путем расширения ее за счет места на жестком диске. Хотя механизм виртуальной памяти не имеет прямого отношения к многозадачности, эти два метода обычно используются вместе в продвинутых операционных системах.