stringtranslate.com

Упреждение (вычисления)

В вычислительной технике упреждение это временное прерывание выполнения задачи с намерением возобновить его позже. Это прерывание выполняется внешним планировщиком без какой-либо помощи или сотрудничества со стороны задачи. [1] : 153  Этот упреждающий планировщик обычно работает в самом привилегированном защитном кольце , а это означает, что прерывание и последующее возобновление считаются действиями с высокой степенью безопасности. Такие изменения в текущей задаче процессора известны как переключение контекста .

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

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

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

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

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

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

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

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

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

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

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

Временной интервал

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

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

Поддержка системы

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

Одними из первых операционных систем, доступных домашним пользователям с вытесняющей многозадачностью, были Sinclair QDOS [ нужна ссылка ] (1984 [4] ) и AmigaOS (1985). Оба они работали на микропроцессорах семейства Motorola 68000 без управления памятью. ОС 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/386 2.0 , которая использовала режим Virtual 8086 процессора Intel 80386 для запуска приложений DOS на виртуальных машинах 8086 , широко известных как «коробки DOS», которые можно было вытеснять. . В Windows 95, 98 и Me 32-битные приложения были вытеснены за счет запуска каждого из них в отдельном адресном пространстве, но 16-битные приложения оставались совместимыми для обратной совместимости. [5] В Windows 3.1x (защищенный режим) ядро ​​и драйверы виртуальных устройств работали преимущественно, но все 16-разрядные приложения были невытесняющими и использовали одно и то же адресное пространство.

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

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

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

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

  1. ^ Аб Таненбаум, Эндрю (2015). Современные операционные системы . Бостон: Пирсон. ISBN 978-0-13-359162-0. ОСЛК  870646449.
  2. ^ Ханна, С.; Себри, М.; Зольновский Дж. «Планирование в реальном времени в SunOS 5.0». Материалы зимней конференции USENIX, 1992 : 375–390.
  3. ^ «Примечания к выпуску v2.5.4» . Архивы ядра Linux . Организация ядра Linux, Inc. Проверено 03 июля 2021 г.
  4. ^ «Часто задаваемые вопросы по истории QL: Прошивка» .
  5. ^ «Как 16-битные и 32-битные программы выполняют многозадачность в Windows 95 (Q117567)» . Архивировано из оригинала 17 января 2008 г. Проверено 17 января 2008 г.
  6. ^ «Re: Вопрос новичка: Что такое синяя задача» . Архивировано из оригинала 13 октября 2007 г. Проверено 29 марта 2007 г.