Многозадачность компьютера

редактировать
Одновременное выполнение нескольких процессов Современные настольные операционные системы способны обрабатывать большое количество различных процессов одновременно. На этом снимке экрана показан Linux Mint, одновременно работающий Xfce среда рабочего стола, Firefox, программа-калькулятор, встроенный календарь, GIMP и VLC media player. Возможности многозадачности Microsoft Windows 1.0 1, выпущенной в 1985 году, здесь показано выполнение программ MS-DOS Executive и Calculator

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

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

Многозадачность - обычная черта компьютерных операционных систем. Это позволяет более эффективно использовать компьютерное оборудование; если программа ожидает какого-либо внешнего события, такого как ввод пользователя или передача ввода / вывода с периферийным устройством для завершения, центральный процессор все еще может использоваться с другой программой. В системе с разделением времени несколько человек-операторов используют один и тот же процессор, как если бы он был выделен для их использования, в то время как за кулисами компьютер обслуживает множество пользователей, выполняя их отдельные программы одновременно. В многопрограммных системах задача выполняется до тех пор, пока ей не придется ждать внешнего события или пока планировщик операционной системы принудительно не выгрузит текущую задачу из ЦП. Системы реального времени, например, системы, предназначенные для управления промышленными роботами, требуют своевременной обработки; один процессор может использоваться совместно для вычислений движения машины, обмена данными и пользовательского интерфейса.

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

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

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

Содержание

  • 1 Мультипрограммирование
  • 2 Кооперативная многозадачность
  • 3 Вытесняющая многозадачность
  • 4 Реальное время
  • 5 Многопоточность
  • 6 Защита памяти
  • 7 Перестановка памяти
  • 8 Программирование
  • 9 См. Также
  • 10 Ссылки

Мультипрограммирование

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

Первым компьютером, использующим систему мультипрограммирования, был британский Leo III, принадлежавший Дж. Lyons and Co. Во время пакетной обработки в память компьютера было загружено несколько различных программ, и первая из них начала выполняться. Когда первая программа достигла инструкции, ожидающей периферийного устройства, контекст этой программы сохранялся, а второй программе в памяти давалась возможность выполнить. Процесс продолжался до тех пор, пока все программы не завершили работу.

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

Мультипрограммирование не дает никаких гарантий, что программа будет выполняться своевременно. Действительно, первая программа вполне может работать часами, не требуя доступа к периферийным устройствам. Поскольку у интерактивного терминала не было пользователей, ожидавших результатов, это не было проблемой: пользователи передавали колоду перфокарт оператору и возвращались через несколько часов для распечатки результатов. Мультипрограммирование значительно сокращало время ожидания при обработке нескольких пакетов.

Совместная многозадачность

Ранние многозадачные системы использовали приложения, которые добровольно уступали время друг другу. Этот подход, который в конечном итоге был поддержан многими компьютерными операционными системами, сегодня известен как совместная многозадачность. Хотя сейчас она редко используется в более крупных системах, за исключением конкретных приложений, таких как CICS или JES2 подсистема, совместная многозадачность когда-то была единственной схемой планирования, используемой Microsoft Windows и Classic Mac OS для одновременного запуска нескольких приложений. Кооперативная многозадачность до сих пор используется в системах RISC OS.

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

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

Вытесняющая многозадачность позволяет компьютерной системе более надежно гарантировать каждому процессу регулярный «кусок» рабочего времени. Это также позволяет системе быстро обрабатывать важные внешние события, такие как входящие данные, которые могут потребовать немедленного внимания того или иного процесса. Операционные системы были разработаны для использования этих аппаратных возможностей и упреждающего запуска нескольких процессов. Вытесняющая многозадачность была реализована в PDP-6 Monitor и MULTICS в 1964 году, в OS / 360 MFT в 1967 году и в Unix в 1969 году и был доступен в некоторых операционных системах для компьютеров размером с PDP-8 от DEC; это основная функция всех Unix-подобных операционных систем, таких как Linux, Solaris и BSD с его производными, а также современные версии Windows.

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

Самой ранней операционной системой с вытесняющей многозадачностью, доступной домашним пользователям, была Sinclair QDOS на Sinclair QL, выпущен в 1984 году, но мало кто покупал машину. Commodore Amiga, выпущенная в следующем году, была первым коммерчески успешным домашним компьютером, использующим эту технологию, а его мультимедийные возможности сделали его явным предком современных многозадачных персональных компьютеров. Microsoft сделала вытесняющую многозадачность основной функцией своей флагманской операционной системы в начале 1990-х при разработке Windows NT 3.1, а затем Windows 95. Позже он был принят на Apple Macintosh в Mac OS X, которая, как Unix-подобная операционная система, использует вытесняющую многозадачность для всех собственных приложений.

Подобная модель используется в Windows 9x и семействе Windows NT, где собственные 32-разрядные приложения выполняют многозадачность с вытеснением. 64-разрядные версии Windows для архитектур x86-64 и Itanium больше не поддерживают устаревшие 16-разрядные приложения и, таким образом, обеспечивают вытесняющую многозадачность для всех поддерживаемых приложений.

Реальное время

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

Многопоточность

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

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

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

Некоторые системы напрямую поддерживают многопоточность на оборудовании.

Защита памяти

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

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

В хорошо спроектированной и правильно реализованной многозадачной системе данный процесс никогда не может напрямую обращаться к памяти, принадлежащей другому процессу. Исключением из этого правила является общая память; например, в механизме межпроцессного взаимодействия System V ядро ​​выделяет память для совместного использования несколькими процессами. Такие функции часто используются программным обеспечением для управления базами данных, например PostgreSQL.

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

Подкачка памяти

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

Программирование

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

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

Более крупные системы иногда строились с центральным процессором (-ами) и некоторым количеством процессоров ввода-вывода, что-то вроде асимметричного многопроцессорность.

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

См. Также

Ссылки

Последняя правка сделана 2021-05-15 08:35:28
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте