ВУЗ:
Составители:
Рубрика:
- 9 -
лельное выполнение не является приоритетным - передача управления от
одной задачи к другой производится в явном виде самими этими задачами.
WINDOWS функционирует как многозадачная ОС каждый раз, когда при-
кладная программа анализирует очередь сообщений. Если предназначенных
данной программе сообщений не оказывается, WINDOWS начинает искать
сообщения для других активных в данный момент программ и
передает
управление той, для которой сообщение имеется; далее процесс повторяется.
При разработке предназначенной для WINDOWS программы ее необхо-
димо структурировать таким образом, чтобы она могла поддерживать пере-
дачу управления по вышеописанной схеме. Если не принять соответствую-
щих мер, внешне корректная вновь созданная программа, возможно, будет
работоспособной, но запущенные вместе с ней другие
программы сильно
рискуют остановиться вовсе (программа монопольно займет ресурсы всей
ОС).
Заметим, что вышеприведенный метод реализации многозадачности в
WINDOWS носит название кооперативной многозадачности (cooperative
multitasking) и является единственным для WINDOWS'3.1; в ОС
WINDOWS'9x (и, соответственно, WINDOWS’NT) реализован метод так на-
зываемой вытесняющей многозадачности (preemptive multitasking), при
этом ОС сама решает, у какой программы отобрать управление
и какой его
передать (кооперативная многозадачность оставлена в WINDOWS'9x только
в целях поддержки 16-битных приложений). Каждое 32-битное приложение в
WINDOWS'9x имеет отдельную очередь сообщений и не зависит от того, как
другие задачи работают со своими очередями (поэтому ситуация 'повисания
системы' вследствие слишком редкой проверки очереди сообщений 16-
битным приложением теоретически невозможна).
Кроме сказанного
, 32-битные приложения в WINDOWS'9x могут исполь-
зовать особый механизм - многопоточность (multithreading). В принятой
для WINDOWS'9x терминологии исполняемое 32-битное приложение назы-
вается процессом (process); процесс состоит как минимум из одного потока.
Поток (thread) - часть кода программы, которая может выполняться од-
новременно с другими частями кода; потоки в пределах одного процесса ис-
пользуют одно
адресное пространство, описатели оьъектов и иные общие ре-
сурсы, но имеют отдельные счетчики команд; приоритетностью выполнения
потоков (как и процессов) управляет ядро ОС на основе системы приорите-
тов. Потоки являются средством обеспечения параллельности обработки
данных и часто используются для выполнения в программе асинхронных опе-
раций (asynchronous operations) - операций, которые могут быть инициали
-
зированы в любое время безотносительно к основному течению программы
(лежащий на поверхности пример - периодическое сохранение редактируе-
мого документа или опрос устройства пользовательского ввода - например,
‘мыши’ или клавиатуры). Потоки требуют меньших издержек, создаются (и
-9- лельное выполнение не является приоритетным - передача управления от одной задачи к другой производится в явном виде самими этими задачами. WINDOWS функционирует как многозадачная ОС каждый раз, когда при- кладная программа анализирует очередь сообщений. Если предназначенных данной программе сообщений не оказывается, WINDOWS начинает искать сообщения для других активных в данный момент программ и передает управление той, для которой сообщение имеется; далее процесс повторяется. При разработке предназначенной для WINDOWS программы ее необхо- димо структурировать таким образом, чтобы она могла поддерживать пере- дачу управления по вышеописанной схеме. Если не принять соответствую- щих мер, внешне корректная вновь созданная программа, возможно, будет работоспособной, но запущенные вместе с ней другие программы сильно рискуют остановиться вовсе (программа монопольно займет ресурсы всей ОС). Заметим, что вышеприведенный метод реализации многозадачности в WINDOWS носит название кооперативной многозадачности (cooperative multitasking) и является единственным для WINDOWS'3.1; в ОС WINDOWS'9x (и, соответственно, WINDOWS’NT) реализован метод так на- зываемой вытесняющей многозадачности (preemptive multitasking), при этом ОС сама решает, у какой программы отобрать управление и какой его передать (кооперативная многозадачность оставлена в WINDOWS'9x только в целях поддержки 16-битных приложений). Каждое 32-битное приложение в WINDOWS'9x имеет отдельную очередь сообщений и не зависит от того, как другие задачи работают со своими очередями (поэтому ситуация 'повисания системы' вследствие слишком редкой проверки очереди сообщений 16- битным приложением теоретически невозможна). Кроме сказанного, 32-битные приложения в WINDOWS'9x могут исполь- зовать особый механизм - многопоточность (multithreading). В принятой для WINDOWS'9x терминологии исполняемое 32-битное приложение назы- вается процессом (process); процесс состоит как минимум из одного потока. Поток (thread) - часть кода программы, которая может выполняться од- новременно с другими частями кода; потоки в пределах одного процесса ис- пользуют одно адресное пространство, описатели оьъектов и иные общие ре- сурсы, но имеют отдельные счетчики команд; приоритетностью выполнения потоков (как и процессов) управляет ядро ОС на основе системы приорите- тов. Потоки являются средством обеспечения параллельности обработки данных и часто используются для выполнения в программе асинхронных опе- раций (asynchronous operations) - операций, которые могут быть инициали- зированы в любое время безотносительно к основному течению программы (лежащий на поверхности пример - периодическое сохранение редактируе- мого документа или опрос устройства пользовательского ввода - например, ‘мыши’ или клавиатуры). Потоки требуют меньших издержек, создаются (и
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »