В чем разница между мультипрограммированием и многозадачностью

10

Мне трудно четко различать многозадачность и многозадачность.

Моим основным источником была Википедия , но статья WP, кажется, немного расходится с некоторыми менее авторитетными источниками (такими как мой профессор колледжа).

Когда я читаю WP, мультипрограммирование является элементарным способом увеличения пропускной способности процессора путем переключения контекста, когда процесс ожидает ввода-вывода.

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

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

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

  1. Является ли этот обзор правильным? Если нет, то это потому, что WP неправильный или потому что я прочитал WP неправильно?
  2. Почему некоторые источники объединяют многозадачность и многозадачность?
JSJ
источник
1
«с некоторыми менее авторитетными источниками (как мой профессор колледжа)» - о дорогой. Я очень надеюсь, что он более авторитетен, чем Википедия, которая имеет много недоделанного контента по CS.
Рафаэль
«мультипрограммирование» кажется более историческим подходом. современная многозадачность действительно связана с блокировкой ввода-вывода, но это лишь один из факторов, используемых для манипулирования процессами. Более того, почти вся современная многозадачность является преимущественной благодаря поддержке ЦП (которая не всегда имела такую ​​поддержку несколько лет назад, и хорошо функционирующие процессы должны были вызывать методы ожидания на основе ОС, которые поддерживали сотрудничество).
vzn
2
@ Рафаэль, ты можешь сделать одолжение всему миру, выполнив их до совершенства.
vonbrand
1
@vonbrand Я пытался, но, к сожалению, достаточно недоделанных экспертов, чтобы противостоять таким попыткам.
Рафаэль
@ Рафаэль, а эта толпа здесь тоже не появляется?
vonbrand

Ответы:

9

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

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

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

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

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

vonbrand
источник
Статья WP, похоже, подразумевает, что многопрограммному программированию не хватает виртуальной памяти, в отличие от многозадачности (систем). Исторически это может быть правдой, но является ли определение ортогональным?
Didierc
1
У нас был многопрограммный IBM S / 370 здесь, в 70-х годах, и у него точно не было виртуальной памяти (кажется, я помню, у него был диск, используемый только для буферизации). Виртуальная память позволяет вам иметь еще больше программ в ограниченном ОЗУ (так как вы держите под рукой только «наиболее используемые» части), и таким образом еще более эффективное использование. Так что да, я считаю, что они полностью независимы; но на практике сегодня вы не найдете одно без другого. За исключением, может быть, в вашем Wi-Fi маршрутизаторе или мобильном телефоне ...
vonbrand
Хорошо. Я тоже так думал, на самом деле. Встраиваемые системы действительно часто не имеют надлежащей защиты памяти, я знал об этом. Тем не менее, с хорошо управляемыми программами это не должно быть проблемой. Это, конечно, зависит от поставщиков программ.
Didierc
@didierc ортогональный? Вы имеете в виду взаимоисключающее право?
13
2

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

Раджеш Амарнатх
источник
0

Есть много различий между многозадачностью и многозадачностью.

Многозадачность выполняет более одной задачи за один раз. Например, вы слушаете песню, печатаете бумагу и одновременно печатаете в MS-Word.

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

Викаш Джангра
источник