Упреждение (вычисления)
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2009 г. ) |
В вычислительной технике упреждение — временное прерывание задачи выполнения это с намерением возобновить его позже. Это прерывание выполняется внешним планировщиком без какой-либо помощи или сотрудничества со стороны задачи. [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 .
Первой операционной системой для микрокомпьютеров, обеспечивающей вытесняющую многозадачность, была Microware от OS-9 , доступная для компьютеров на базе Motorola 6809 , включая домашние компьютеры, такие как TRS-80 Color Computer 2 , сконфигурированные с дисководами. [4] с операционной системой, предоставленной Tandy в качестве обновления. [5] Синклер QDOS [6] : 18 и AmigaOS на Amiga также были операционными системами для микрокомпьютеров, предлагающими вытесняющую многозадачность в качестве основной функции. Оба они работали на Motorola 68000 семейства микропроцессорах без управления памятью. ОС Amiga использовала динамическую загрузку перемещаемых блоков кода (« кусочки » на жаргоне Amiga) для упреждающей многозадачности всех процессов в одном и том же плоском адресном пространстве.
Ранние операционные системы, совместимые с IBM PC , такие как MS-DOS и PC DOS , вообще не поддерживали многозадачность, однако альтернативные операционные системы, такие как MP/M-86 (1981) и Concurrent CP/M-86, поддерживали вытесняющую многозадачность. Другие Unix-подобные системы, включая MINIX и Coherent, обеспечивали вытесняющую многозадачность на персональных компьютерах 1980-х годов.
Более поздние системы, совместимые с MS-DOS , изначально поддерживающие вытесняющую многозадачность/многопоточность, включают Concurrent DOS , Multiuser DOS , Novell DOS (позже названную Caldera OpenDOS и DR-DOS 7.02 и выше). Начиная с версии Concurrent DOS 386 , они также могли одновременно запускать несколько программ DOS на виртуальных машинах DOS .
Самой ранней версией Windows, поддерживавшей ограниченную форму вытесняющей многозадачности, была Windows/386 2.0 , которая использовала Intel 80386 процессора режим Virtual 8086 для запуска приложений DOS на виртуальных машинах 8086 , широко известных как «коробки DOS», которые можно было вытеснять. . В Windows 95, 98 и Me 32-битные приложения были вытеснены за счет запуска каждого из них в отдельном адресном пространстве, но 16-битные приложения оставались совместимыми для обратной совместимости. [7] В Windows 3.1x (защищенный режим) ядро и драйверы виртуальных устройств работали преимущественно, но все 16-разрядные приложения были невытесняющими и использовали одно и то же адресное пространство.
Вытесняющая многозадачность всегда поддерживалась Windows NT (все версии), OS/2 (родные приложения), Unix и Unix-подобными системами (такими как Linux , BSD и macOS ), VMS , OS/360 и многими другими операционными системами, разработанными для использования на академических рынках, а также на рынках среднего и крупного бизнеса.
Хотя были планы обновить кооперативную многозадачность, присутствующую в классической Mac OS, до модели с вытеснением (и вытесняющий API действительно существовал в Mac OS 9 , хотя и в ограниченном смысле). [8] ), от них отказались в пользу Mac OS X (теперь называемой macOS) , которая, являясь гибридом старого стиля Mac System и NeXTSTEP , представляет собой операционную систему, основанную на ядре Mach и частично производную от BSD , которая всегда обеспечивала Unix-подобная вытесняющая многозадачность.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б Таненбаум, Эндрю (2015). Современные операционные системы . Бостон: Пирсон. ISBN 978-0-13-359162-0 . OCLC 870646449 .
- ^ Ханна, С.; Себри, М.; Зольновский Дж. «Планирование в реальном времени в SunOS 5.0». Материалы зимней конференции USENIX, 1992 : 375–390.
- ^ «Примечания к выпуску v2.5.4» . Архивы ядра Linux . Организация ядра Linux, Inc. Проверено 03 июля 2021 г.
- ^ Даунард, Дэн (сентябрь 1983 г.). «Динамический Уно» . Радуга . стр. 236–240 . Проверено 9 мая 2024 г.
- ^ 1984 Каталог ТРС-80 . Корпорация Танди. 1984. стр. 53–54 . Проверено 14 мая 2024 г.
- ^ Пеннелл, Эндрю (1985). Компаньон Sinclair QDOS . Солнечные книги . Проверено 12 мая 2024 г.
- ^ «Как 16-битные и 32-битные программы выполняют многозадачность в Windows 95 (Q117567)» . Архивировано из оригинала 17 января 2008 г. Проверено 17 января 2008 г.
- ^ «Re: Вопрос новичка: Что такое синяя задача» . Архивировано из оригинала 13 октября 2007 г. Проверено 29 марта 2007 г.