Составители:
процесс представляет собой один начальный поток, который иногда называют первич-
ным потоком.
Первичный поток способен создать вторичные потоки. Все потоки, принадлежа-
щие одному процессу, имеют совместный доступ к его ресурсам. Все они работают под
управлением команд одной и той же программы, обращаются к одним и тем же глобаль-
ным переменным, записывают информацию в одну и ту же область памяти и имеют дос-
туп к одним и тем же объектам. В целом следует отметить, что программа может выпол-
нять поставленные задачи и без организации потоков, однако в данном случае для
запуска «дочернего» процесса необходимо временно приостанавливать основной про-
цесс, что приводит к замедлению выполнения программы в целом. Дополнительные по-
токи создаются в первую очередь в том случае, когда программа должна выполнять
асинхронные операции, работает одновременно с несколькими окнами.
Организация многозадачности в MS Windows различается в линейках 9x и NT. В
Windows 9x реализована приоритетная многозадачность. В данном случае каждому
активному потоку предоставляется определенный промежуток времени работы процес-
сора. По истечению данного промежутка управление автоматически передается сле-
дующему потоку. Это не дает возможность программам полностью захватывать ресурсы
процессора.
Windows NT использует вытесняющую многозадачность. Выполнение всех про-
цессов строго контролируется операционной системой. Операционная система выделяет
каждой из программ некоторое количество процессорного времени и периодически про-
изводит переключение между запущенными на компьютере программами. Обратившись
к специальному системному вызову, вы можете как бы приостановить (sleep) выполне-
ние программы, однако если вы этого не сделаете, со временем операционная система
сделает это за вас. Подвисание одной из программ не приведет к подвисанию всей сис-
темы.
В общем и целом, вытесняющая многозадачность, которая ранее рассмотрена бо-
лее подробно, выглядит привлекательней. Однако за все приходится платить. И в пер-
вую очередь расплачиваться приходится программистам, которые разрабатывают при-
ложения, предназначенные для работы в среде с приоритетной многозадачностью.
Представьте себе, что на компьютере работает несколько программ, использующих один
и тот же файл журнала ошибок. Если вам необходимо сделать запись в этом файле, то в
Windows 9x вы можете без лишних сложностей открыть файл, записать в него данные, а
затем закрыть его. Если при этом вы ни разу не обратились к специальным системным
функциям, вы можете быть уверенными, что в то время, пока вы работали с файлом, ни
одна другая программа не обратилась к этому же файлу (так как фактически в ходе ра-
боты с файлом на компьютере работает только одна ваша программа, а все остальные
программы находятся в состоянии ожидания).
В среде Windows NT все не так просто. Предположим, что один из потоков открыл
файл и начал в него запись, но в этот момент операционная система передала управле-
ние другому потоку. Что произойдет, если другой поток попытается открыть тот же са-
мый файл? Либо этого сделать не удастся, либо другой поток откроет файл в режиме со-
вместного доступа (for sharing), что может не соответствовать вашим ожиданиям. Даже
если в ходе работы с файлом операционная система не осуществила передачу управле-
ния другому потоку, получить доступ к файлу может попытаться поток, работающий на
другом процессоре. В результате вы столкнетесь с той же проблемой.
58
процесс представляет собой один начальный поток, который иногда называют первич-
ным потоком.
Первичный поток способен создать вторичные потоки. Все потоки, принадлежа-
щие одному процессу, имеют совместный доступ к его ресурсам. Все они работают под
управлением команд одной и той же программы, обращаются к одним и тем же глобаль-
ным переменным, записывают информацию в одну и ту же область памяти и имеют дос-
туп к одним и тем же объектам. В целом следует отметить, что программа может выпол-
нять поставленные задачи и без организации потоков, однако в данном случае для
запуска «дочернего» процесса необходимо временно приостанавливать основной про-
цесс, что приводит к замедлению выполнения программы в целом. Дополнительные по-
токи создаются в первую очередь в том случае, когда программа должна выполнять
асинхронные операции, работает одновременно с несколькими окнами.
Организация многозадачности в MS Windows различается в линейках 9x и NT. В
Windows 9x реализована приоритетная многозадачность. В данном случае каждому
активному потоку предоставляется определенный промежуток времени работы процес-
сора. По истечению данного промежутка управление автоматически передается сле-
дующему потоку. Это не дает возможность программам полностью захватывать ресурсы
процессора.
Windows NT использует вытесняющую многозадачность. Выполнение всех про-
цессов строго контролируется операционной системой. Операционная система выделяет
каждой из программ некоторое количество процессорного времени и периодически про-
изводит переключение между запущенными на компьютере программами. Обратившись
к специальному системному вызову, вы можете как бы приостановить (sleep) выполне-
ние программы, однако если вы этого не сделаете, со временем операционная система
сделает это за вас. Подвисание одной из программ не приведет к подвисанию всей сис-
темы.
В общем и целом, вытесняющая многозадачность, которая ранее рассмотрена бо-
лее подробно, выглядит привлекательней. Однако за все приходится платить. И в пер-
вую очередь расплачиваться приходится программистам, которые разрабатывают при-
ложения, предназначенные для работы в среде с приоритетной многозадачностью.
Представьте себе, что на компьютере работает несколько программ, использующих один
и тот же файл журнала ошибок. Если вам необходимо сделать запись в этом файле, то в
Windows 9x вы можете без лишних сложностей открыть файл, записать в него данные, а
затем закрыть его. Если при этом вы ни разу не обратились к специальным системным
функциям, вы можете быть уверенными, что в то время, пока вы работали с файлом, ни
одна другая программа не обратилась к этому же файлу (так как фактически в ходе ра-
боты с файлом на компьютере работает только одна ваша программа, а все остальные
программы находятся в состоянии ожидания).
В среде Windows NT все не так просто. Предположим, что один из потоков открыл
файл и начал в него запись, но в этот момент операционная система передала управле-
ние другому потоку. Что произойдет, если другой поток попытается открыть тот же са-
мый файл? Либо этого сделать не удастся, либо другой поток откроет файл в режиме со-
вместного доступа (for sharing), что может не соответствовать вашим ожиданиям. Даже
если в ходе работы с файлом операционная система не осуществила передачу управле-
ния другому потоку, получить доступ к файлу может попытаться поток, работающий на
другом процессоре. В результате вы столкнетесь с той же проблемой.
58
Страницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »
