Вытеснение (вычисление) - Preemption (computing)

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

Пользовательский режим и режим ядра

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

Большинство современных систем имеют вытесняющие ядра, разработанный, чтобы разрешить выполнение задач даже в режиме ядра. Примеры таких систем: Солярис 2.0 / SunOS 5.0,[1] Windows NT, Ядро Linux (2.6.x и новее), AIX и немного BSD системы (NetBSD, начиная с версии 5).

Вытесняющая многозадачность

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

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

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

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

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

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

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

Срез времени

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

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

Системная поддержка

Сегодня почти все операционные системы поддерживают вытесняющую многозадачность, включая текущие версии Windows, macOS, Linux (включая Android ) и iOS.

Некоторые из первых операционных систем, доступных для домашних пользователей с вытесняющей многозадачностью, были Синклер QDOS (1984[2]) и Amiga OS (1985). Они оба работали Motorola 68000 -семья микропроцессоры без управления памятью. ОС Amiga используется динамическая загрузка перемещаемых блоков кода ("скряга "на жаргоне Amiga), чтобы все процессы в одном плоском адресном пространстве выполняли одновременно несколько задач одновременно.

Рано ПК операционные системы, такие как MS-DOS и ПК DOS, совсем не поддерживает многозадачность, однако альтернативные операционные системы, такие как МП / М-86 (1981) и Параллельный CP / M-86 поддерживает вытесняющую многозадачность. Другой Unix-подобный системы, включая МИНИКС и Последовательный обеспечивала вытесняющую многозадачность на персональных компьютерах 1980-х годов.

Потом ДОС версии, изначально поддерживающие вытесняющую многозадачность / многопоточность, включают Параллельная DOS, Многопользовательская DOS, Novell DOS (позже названный Кальдера OpenDOS и DR-DOS 7.02 и выше). С Параллельная DOS 386, они также могли запускать несколько программ DOS одновременно в виртуальные машины DOS.

Самая ранняя версия Windows, поддерживающая ограниченную форму вытесняющей многозадачности, была Windows 2.1x, который использовал Intel 80386 с Виртуальный режим 8086 запускать приложения DOS в виртуальные 8086 машины, широко известные как «блоки DOS», которые можно было вытеснить. В Windows 95, 98 и Me 32-разрядные приложения были сделаны вытесняющими, каждое из них запускалось в отдельном адресном пространстве, но 16-разрядные приложения оставались совместимыми для обеспечения обратной совместимости.[3] В Windows 3.1x (защищенный режим) драйверы ядра и виртуальных устройств выполнялись с приоритетом, но все 16-разрядные приложения не выполняли вытеснение и использовали одно и то же адресное пространство.

Вытесняющая многозадачность всегда поддерживалась Windows NT (все версии), OS / 2 (собственные приложения), Unix и Unix-подобный системы (такие как Linux, BSD и macOS ), VMS, OS / 360, и многие другие операционные системы, разработанные для использования в академических кругах и на рынках среднего и крупного бизнеса.

Хотя были планы обновить кооперативную многозадачность, найденную в классическая Mac OS к вытесняющей модели (и вытесняющий API существовал в Mac OS 9, хотя в ограниченном смысле[4]), от них отказались в пользу Mac OS X (теперь называется macOS) это как гибрид старого стиля Mac System и Следующий шаг, это операционная система, основанная на Мах ядро и частично получено из BSD, которая всегда обеспечивала вытесняющую многозадачность в стиле Unix.

Смотрите также

Рекомендации

  1. ^ Khanna, S .; Sebree, M .; Зольновский, Дж. "Планирование в реальном времени в SunOS 5.0". Материалы Зимней конференции USENIX, 1992 г.: 375–390.
  2. ^ QL History FAQ: Прошивка
  3. ^ Как 16-разрядные и 32-разрядные программы работают в многозадачном режиме в Windows 95 (Q117567)
  4. ^ "Re: вопрос для новичков: что такое синяя задача". Архивировано из оригинал на 2007-10-13. Получено 2007-03-29.