- Многозадачность в операционных системах, виды многозадачности
- По типу наименьшего элемента управляемого кода
- Процессная многозадачность.
- Поточная многозадачность.
- По способу организации времени выполнения каждого процесса
- Параллельная многозадачность
- Типы псевдопараллельной многозадачности
- Многозадачность в операционной системе Windows
- Многозадачная ОС
Многозадачность в операционных системах, виды многозадачности
Многозада́чность — свойство ОС или среды выполнения обеспечивать возможность параллельной обработки нескольких процессов. Иными словами, многозадачность — способ выполнения нескольких задач в один период времени. При этом задачи делят между собой общие ресурсы (resources sharing), помимо этого осуществляется планирование (scheduling). [1]
Система называется однозадачной,если она не обладает свойством многозадачности, т.е. задачи в ней выполняются последовательно. DOS — однозадачная ОС.
Многозадачность имеет место при наличии нескольких потоков исполнения.
Поток исполнения — набор последовательных инструкций, выполняемых процессором во время работы программы. На одном процессорном ядре одновременно выполняется лишь один поток исполнения, который называется активным. Процесс выбора активного исполнительного потока носит название планирование.
По типу наименьшего элемента управляемого кода
Процессная многозадачность.
Здесь программа — наименьший элемент управляемого кода, которым может управлять планировщик операционной системы. Известна большинству пользователей (одновременная работа в текстовом редакторе и прослушивание музыки). Многозадачная система позволяет двум или более программам выполняться одновременно.
Поточная многозадачность.
Многопоточность — специализированная форма многозадачности. Наименьший элемент управляемого кода — поток. Многопотоковая (multi-threaded) система предоставляет возможность одновременного выполнения одной программой 2 и более задач
По способу организации времени выполнения каждого процесса
Параллельная многозадачность
Параллельная многозадачность, когда каждая задача исполняется в своём аппаратном микропроцессорном ядре действительно одновременно друг с другом. Реализация данного типа многозадачности требует больших материальных вложений. Альтернативой параллельной многозадачности является применение псевдопараллельной многозадачности или совокупности параллельной и псевдопараллельной многозадачности при наличии нескольких процессорных ядер.
Типы псевдопараллельной многозадачности
Невытесняющая многозадачность. Существенным ограничением такого подхода является то, что время, затрачиваемое программой на обработку сообщения может быть очень большим, а управление операционной системе передается только после обработки сообщения.
Совместная или кооперативная многозадачность. ОС передает управление от одного приложения другому не в любой момент времени, а только когда текущее приложение отдает управление системе, получил, как было упомянуто, название кооперативной многозадачности
Вытесняющая, или приоритетная, многозадачность (режим реального времени)
С Windows 95 ОС действительно контролирует и управляет процессами, потоками и их переключением. Способность ОС прервать выполняемый поток практически в любой момент времени и передать управление другому ожидающему потоку определяется термином preemptive multitasking — преимущественная, или вытесняющая, многозадачность.
Многозадачность в операционной системе Windows
ТЕОРЕТИЧЕСКОЕ ОПИСАНИЕ
Многозадачность
Под многозадачностью понимается организация одновременного выполнения нескольких прикладных программ с помощью разделения между ними процессорного времени. Таким образом, можно говорить о переключении задач, которое происходит незаметно для пользователя и самих программ. Следует иметь в виду, что одновременное выполнение нескольких машинных команд на одном процессоре невозможно. Операционная система сама выделяет каждой задаче требуемые ресурсы и корректно решает проблемы распределения контроля над ними. Такими ресурсами могут быть оперативная память, внешние устройства и т. п. Быстрота, с которой процессор переключается с выполнения одной задачи на другую, создает впечатление одновременного их выполнения.
Распределение процессорного времени между несколькими задачами реализуется специальной компонентой операционной системы, называемой планировщиком. При каждой смене задачи планировщик должен сохранить статус (состояние) прерванной задачи, загрузить в процессор статус новой задачи и передать ей управление в той точке, где она была прервана в предыдущий раз. Статус задачи определяется содержимым счетчика команд, регистров общего назначения и т. п., и обычно сохраняется в специальной структуре данных, называемой управляющим блоком процесса, или РСВ (Process Control Block).
В принципе существуют два основных метода позволяющие организовать переключение задач в рамках какой — либо операционной системы:
- Переключение по событию
- Переключение по времени
Переключение по событию
Переключение задач по событию показано на рис 1.
В этом режиме операционная система не определяет самостоятельно момент смены текущей задачи. Он может быть указан активной задачей, «добровольно» приостанавливающей свое выполнение с помощью специального обращения к операционной системе. Кроме того, задача прерывается, если она обращается к функциям операционной системы, например, с запросом на ввод/вывод. Поскольку на время выполнения запроса к операционной системе задача ожидает результата затребованной операции, она переходит в режим ожидания, и операционная система может передать управление процессором другой задаче, которая на данный момент готова к выполнению. Этот метод требует организации системы приоритетов, позволяющей избежать ситуации, когда какая – либо программа, не осуществляющая обращений к функциям операционной системы, будет выполняться, фактически, в монопольном режиме. Поэтому самые высокие приоритеты назначаются задачам с большим количеством обращений к функциям операционной системы.
Переключение по времени
Переключение задач по времени показано на рис 2.
Рис 2. Переключение задач по времени.
Этот метод основан на использовании внешнего сигнала, поступающего на процессор через равные интервалы времени. Обычно используется аппаратное прерывание от внешнего таймера. Когда возникает такое прерывание, операционная система прекращает выполнение активной в данный момент задачи и сохраняет ее состояние. Планировщик анализирует затем список ожидающих задач и передает управление процессором выбранной задаче. Таким образом, метод основан на разделении, что позволяет выделить каждой задаче заранее определенный интервал времени.
Многозадачность в операционной системе Windows
В операционной системе Windows реализован метод разделения времени в сочетании с системой приоритетов. На практике переключение задач происходит в одном из следующих случаев:
1. Прерывание от таймера. Это означает, что время, предоставленное активной задаче, истекло. Планировщик прекращает ее выполнение и передает управление задаче с наибольшим приоритетом. Такое переключение происходит наиболее часто.
2. Текущая задача запрашивает операцию ввода/вывода. Поскольку задача должна ожидать окончания этой операции, планировщик приостанавливает ее выполнение и активизирует задачу с наибольшим приоритетом.
3. Активная задача освобождает ресурс, который ожидала задача с большим приоритетом. Планировщик приостанавливает выполнение текущей задачи в пользу другой, более приоритетной.
4. Внешнее, т. е., аппаратное прерывание сигнализирует о завершении операции ввода/вывода на периферийное устройство, которое ожидалось другой, более приоритетной задачей. Последняя начинает выполняться вместо текущей задачи.
В Windows каждая запущенная 32- х битовая программа называется процессом. Процесс в основном имеет дело с распределением ресурсов системы. Исполняемый код для системы является другим объектом, называемым нитью, или потоком управления (thread). Когда запускается новый процесс, ему автоматически придается одна нить. Нити (потоки) используются операционной системой Windows для диспетчеризации времени процессора. Диспетчеризация — это метод выделения времени каждой из нитей (не процессов, поскольку процесс может иметь несколько нитей). Операционная система рассматривает все готовые к запуску потоки и выбирает для выполнения один из них. Диспетчер также определяет квант времени, предоставляемый для выполнения каждому из потоков.
Из вышеизложенного следует, что механизм процессов и потоков позволяет программному обеспечению, работающему под управлением Windows, реализовать внутри программную многозадачную работу. Такая возможность является большим достоинством этой операционной системы. Например, в электронных таблицах нужно пересчитывать данные при изменении пользователем содержимого ячеек. Пересчет сложной таблицы может занять несколько секунд, но тщательно продуманная программа не должна тратить время на эту операцию после каждого изменения. Вместо этого можно выделить функциональный блок повторных расчетов в отдельный поток с более низким (чем у первичного) приоритетом. Таким образом, пока пользователь набирает данные, исполняется первичный поток, т. е., система не выделяет времени потоку, занимающемуся пересчетом. В случае возникновения паузы в процессе ввода система приостановит выполнение первичного потока и отдаст процессор в распоряжение потока, занимающегося пересчетом. При возобновлении ввода данных первичный поток (более приоритетный) вытеснит поток, занимающийся расчетами. Создание дополнительного потока в данном случае сделает всю программу более реактивной на действия пользователя.
ОПИСАНИЕ ЛАБОРАТОРНОЙ РАБОТЫ
В данной лабораторной работе изучаются методы создания и запуска процессов и потоков в рамках операционной системы Windows.
Многозадачная ОС
Многозадачные операционные системы
Почти все современные операционные системы (Windows 95, Windows NT, Windows 2000, Unix) поддерживают преимущественную многозадачность
Основным признаком многозадачной ОС является способность совмещать выполнение нескольких прикладных программ. Большое значение при этом имеет способ совмещения, то есть на каком уровне или как конкретно реализовано совмещение. Если однопроцессорная, но многозадачная, система выделяет каждой прикладной программе определенный квант времени
В настоящее время, когда каждый пользователь имеет достаточно мощный персональный компьютер, акценты в развитии ОС снова изменились. Теперь большое значение приобретает развитие сетевых, многозадачных ОС. В сущности, теперь пользователь имеет возможность установить на отдельном персональном компьютере многозадачную ОС и разрабатывать приложения, совмещающие вы-полнение нескольких процессов. Каждый процесс, в свою очередь, может состоять из нескольких потоков, выполняемых в адресном пространстве процесса.
Первые операционные системы, реализованные на персональных компьютерах, сильно уступали в концептуальном плане и по своим реальным возможностям системам с разделением времени, давно реализованным в mainframe- компьютерах. В Win 16, например, тоже существует понятие многозадачности. Реализовано оно следующим образом: обработав очередное сообщение, приложение передает управление операционной системе, которая может передать управление другому приложению. Такой вид многозадачности, при котором операционная система передает управление от одного приложения другому не в любой момент времени, а только когда текущее приложение отдает управление системе, получил, как было упомянуто, название кооперативной многозадачности (cooperative multi-tasking).
Если при таком подходе обработка сообщения затягивается, то пользователь увидит реакцию системы только после завершения обработки текущим приложением • текущего сообщения. Обычно при выполнении длительных операций программист изменяет форму курсора (песочные часы), вызвав API-функцию BeginWaitCursor. Иногда, если это предусмотрел разработчик программы, в таких случаях застрявшее приложение даже вызывает функцию PeekMessage, сообщая системе, что она может обработать очередное сообщение, а текущее приложение способно и подождать. Но главная неприятность при таком подходе заключается в том, что в случае бесконечного цикла, вызванного ошибкой в программе, ОС не имеет шансов получить управление и также зависнет. Пользователю придется перезагружать систему.
В Windows начиная с Windows 95 реализован принципиально другой вид многозадачности, в котором операционная система действительно контролирует и управляет процессами, потоками и их переключением. Способность операционной системы прервать выполняемый поток практически в любой момент времени и передать управление другому ожидающему потоку определяется термином preemptive multitasking — преимущественная, или вытесняющая, многозадачность. Реализация ее выглядит так: все существующие в данный момент потоки, часть из которых может принадлежать одному и тому же процессу, претендуют на процессорное время и, с точки зрения пользователя должны выполняться одновременно. Для создания этой иллюзии система через определенные промежутки времени забирает управление, анализирует свою очередь сообщений, распределяет сообщения по другим очередям в пространстве процессов и, если считает нужным, переключает потоки (рис. 12.5).
Реализация вытесняющей многозадачности в Windows 2000 дает не только возможность плавного переключения задач, но и устойчивость среды к зависаниям, так как ни одно приложение не может получить неограниченные права на процессорное время и другие ресурсы. Так система создает эффект одновременного выполнения нескольких приложений. Если компьютер имеет несколько процессоров, то системы Windows NT/2000 могут действительно совмещать выполнение нескольких приложений. Если процессор один, то совмещение остается иллюзией. Когда заканчивается квант времени, отведенный текущей программе, система ее прерывает, сохраняет контекст и отдает управление другой программе, которая ждет своей очереди. Величина кванта времени (time slice)зависит от ОС и типа процессора, в Windows NT она в среднем равна 20 мс. Следует отметить, что добиться действительно одновременного выполнения потоков можно только на машине с несколькими процессорами и только под управлением Windows NT/2000, ядра которых поддерживают распределение потоков между процессорами и процессорного времени между потоками на каждом процессоре. Windows 95 работает только с одним процессором. Даже если у компьютера несколько процессоров, под управлением Windows 95 задействован лишь один из них, а остальные простаивают.