Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по ОС.doc
Скачиваний:
38
Добавлен:
21.08.2019
Размер:
574.46 Кб
Скачать

Тема 7 Многопоточность и многозадачность

Существует еще одно техническое различие между Windows 95/98 и Windows 2000, которое не следует упускать из виду. Многозадачность — одно из тех расплывчатых понятий, используемых всеми, определить которое, однако, никто не удосуживается. Чтобы понять смысл многозадачности, сначала нужно определиться с понятием задача. В конечном счете, задачей является запущенное приложение. При загрузке Windows может создаться впечатление, что ни одной задачи не выполняется, однако несколько приложений на компьютере уже работает. Щелкните правой кнопкой мыши панель задач Windows 2000 и выберите команду Диспетчер задач (Task Manager). Перейдите на вкладку Процессы (Processes), чтобы просмотреть список системных процессов, выполняемых для поддержки Windows 2000. Например, проводник считается задачей. Сетевые подключения или очереди печати также считаются задачами, как и заставка. Кроме того, существует несколько системных задач. Считается задачей и ядро Windows.

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

Теперь, определив понятие задачи, можно рассмотреть определение многозадачности. Очевидно, что многозадачность — это одновременное выполнение нескольких задач (или процессов) на одном компьютере. Это неплохое начало определения, но этого не достаточно. Важно понять, как операционная система распределяет время между задачами. Для ОС Windows важно определить способ управления задачами и разницу между различными видами многозадачности. В Windows 2000 поддерживается два вида многозадачности: кооперативная и приоритетная.

Кооперативная многозадачность должна работать следующим образом: сначала недолго (в течение времени, достаточного для завершения одного компонента задачи) выполняется приложение А. затем управление системой передается обратно Windows для обработки стандартных операций (например, нажатий клавиш), и в течение некоторого времени выполняется приложение Б. Этот цикл выполняется по кругу для всех задач, выполняемых в данный момент времени.

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

Все устаревшие (16-разрядные) приложения в Windows 2000 все равно выполняются в режиме кооперативной многозадачности. В Windows 2000 этот режим вообще используется только по этой причине. Однако в Windows 2000 влияние этих приложений сведено к минимуму за счет выполнения каждого из них в отдельном адресном пространстве. (В Windows 95/98 все 16-разрядные приложения выполняются в общем адресном пространстве.) В Windows 2000 обеспечена приоритетная многозадачность для всех 16-разрядных адресных пространств с 32-разрядными приложениями в системе. В отличие от Windows 95/98, 16-разрядные приложения не конкурируют друг с другом и не влияют на 32-разрядные приложения, выполняемые на компьютере с операционной системой Windows 2000. Это относится к проводнику, а также к другим системным приложениям.

Для всех выполняемых 32-разрядных приложений в Windows 2000 поддерживается приоритетная многозадачность. Чтобы понять, как работает приоритетная многозадачность, представьте себе светофор на перекрестке. Сначала движение идет в одну сторону, но затем загорается другой свет и движение идет в другую сторону. Фактическое количество времени, которое отводится для каждой задачи, определяется пользователем и операционной системой по определенным критериям, но доступ должен распределяться честно. Каждое приложение должно получить свою долю времени процессора, и это обеспечивается за счет приоритетной многозадачности. Windows 2000 наблюдает за каждым приложением и прерывает его выполнение, когда его время заканчивается. Windows 2000 все время управляет системой независимо от приложений.

Существует еще одно, более важное, отличие в работе системы приоритетной многозадачности от кооперативной. В предыдущих версиях Windows значок песочных часов означал, что система полностью загружена. До тех пор, пока отображается значок песочных часов, никакие действия выполнять нельзя. С другой стороны, этот значок в Windows 2000 означает, что занята только текущая задача. В это время можно запустить другую задачу или переключиться на другую, выполняющуюся в настоящее время, задачу. Если эта задача не занята, можно работать с ней, пока завершается работа исходной задачи. О завершении работы исходного приложения можно узнать, поместив указатель на окно этой задачи. Значок песочных часов исчезнет.

Приоритетная многозадачность означает, что не нужно, как часто это бывает, обязательно ждать, когда освободиться система. (Фактически, в Windows 95/98 и Windows 2000 есть два указателя в форме песочных часов. Первый, простой указатель в форме песочных часов, означает, что системой выполняется задача, которая не может быть прервана; второй, комбинированный указатель со значком песочных часов, означает, что можно перейти к другой задаче.)

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

Примечание. Благодаря возможностям безопасности Windows 2000 фактически выполняет приоритетную многозадачность лучше, чем Windows 95/98. Тот же интерфейс безопасности, игнорируемый Windows 95/98 для обеспечения большей гибкости, также снижает возможность принудительного освобождения процессора от ненужных приложений. В результате, время от времени в Windows 95/98 отображается значок песочных часов, чего в аналогичных условиях в Windows 2000 не происходит никогда (или практически никогда). Кроме того, на возможность многозадачности в Windows 95/98 влияет тот факт, что для 16-разрядных приложений используется одно общее адресное про­странство. Помещение каждого 16-разрядного приложения в собственную среду может потребовать немного большего объема памяти и чуть больше загрузить операционную систему, но также это обеспечит более рациональное распределение ресурсов между различными потоками и снизит вероятность полной загрузки системы каким-либо потоком.

Кооперативная многозадачность имеет еще один серьезный недостаток. Когда управление системой переходит от Windows к приложению, нельзя завершить работу приложения, если компьютер зависнет. Однако, поскольку Windows 2000 поддерживает постоянный контроль над компьютером, не нужно беспокоиться о зависании компьютера в процессе выполнения задачи. Если даже приложение зависнет, надо всего лишь завершить работу этой задачи, а перезагружать компьютер не требуется. Компьютер с системой Windows 2000 при нажатии сочетания клавиш Ctrl+Alt+Del автоматически не перезагрузится, а будет выведено диалоговое окно. В диспетчере задач Windows 2000 отображается список приложений, из которого можно выбрать задачу для завершения.