Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Вытесняющая многозадачность [ править ]

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

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

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

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

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

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

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

Временной отрезок [ править ]

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

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

Поддержка системы [ править ]

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

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

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

Более поздние версии DOS, изначально поддерживающие вытесняющую многозадачность / многопоточность, включают Concurrent DOS , Multiuser DOS , Novell DOS (позже названные Caldera OpenDOS и DR-DOS 7.02 и выше). Начиная с Concurrent DOS 386 , они также могли запускать несколько программ DOS одновременно на виртуальных машинах DOS .

Самая ранняя версия Windows , чтобы поддерживать ограниченную форму вытесняющей многозадачности была Windows 2.1x , который используется в Intel 80386 «сек режима Virtual 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 и NeXTSTEP , представляет собой операционную систему, основанную на ядре Mach и частично унаследованную от BSD , которая всегда обеспечивала Unix-подобную вытесняющую многозадачность.

См. Также [ править ]

  • Многозадачность компьютера
  • Кооперативная многозадачность

Ссылки [ править ]

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