Многозадачность в операционной системе Windows

ТЕОРЕТИЧЕСКОЕ ОПИСАНИЕ

Многозадачность

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

Распределение процессорного времени между несколькими задачами реализуется специальной компонентой операционной системы, называемой планировщиком. При каждой смене задачи планировщик должен сохранить статус (состояние) прерванной задачи, загрузить в процессор статус новой задачи и передать ей управление в той точке, где она была прервана в предыдущий раз. Статус задачи определяется содержимым счетчика команд, регистров общего назначения и т. п., и обычно сохраняется в специальной структуре данных, называемой управляющим блоком процесса, или РСВ (Process Control Block).

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

  • Переключение по событию
  • Переключение по времени

Переключение по событию

Переключение задач по событию показано на рис 1.

Многозадачность в операционной системе Windows - student2.ru

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

Переключение по времени

Переключение задач по времени показано на рис 2.

Многозадачность в операционной системе Windows - student2.ru

Рис 2. Переключение задач по времени.

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

Многозадачность в операционной системе Windows

В операционной системе Windows реализован метод разделения времени в сочетании с системой приоритетов. На практике переключение задач происходит в одном из следующих случаев:

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

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

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

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

В Windows каждая запущенная 32- х битовая программа называется процессом. Процесс в основном имеет дело с распределением ресурсов системы. Исполняемый код для системы является другим объектом, называемым нитью, или потоком управления (thread). Когда запускается новый процесс, ему автоматически придается одна нить. Нити (потоки) используются операционной системой Windows для диспетчеризации времени процессора. Диспетчеризация - это метод выделения времени каждой из нитей (не процессов, поскольку процесс может иметь несколько нитей). Операционная система рассматривает все готовые к запуску потоки и выбирает для выполнения один из них. Диспетчер также определяет квант времени, предоставляемый для выполнения каждому из потоков.

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

ОПИСАНИЕ ЛАБОРАТОРНОЙ РАБОТЫ

В данной лабораторной работе изучаются методы создания и запуска процессов и потоков в рамках операционной системы Windows.

Наши рекомендации