Составители:
Рубрика:
всех процессов строго контролируется операционной системой. Операционная
система выделяет каждой из программ некоторое количество процессорного
времени и периодически производит переключение между запущенными на
компьютере программами. Обратившись к специальному системному вызову,
вы можете как бы приостановить (sleep) выполнение программы, однако если
вы этого не сделаете, со временем операционная система сделает это за вас.
Подвисание одной из программ не приведет к подвисанию всей системы.
В общем и целом вытесняющая многозадачность выглядит более привле-
кательно. Однако за все приходится платить. И в первую очередь расплачи-
ваться приходится программистам, которые разрабатывают приложения,
предназначенные для работы в среде с приоритетной многозадачностью.
Представьте себе, что на компьютере работает несколько программ, исполь-
зующих один и тот же файл журнала ошибок. Если вам необходимо сделать
запись в этом файле, то в Windows 9x вы можете без лишних сложностей от-
крыть файл, записать в него данные, а затем закрыть его. Если при этом вы ни
разу не обратились к специальным системным функциям, то можете быть уве-
рены: в то время, пока вы работали с файлом, ни одна другая программа не об-
ратилась к этому же файлу (так как фактически в ходе работы с файлом на
компьютере работает только одна ваша программа, а все остальные программы
находятся в состоянии ожидания).
В среде Windows 2000 все не так просто. Предположим, что один из пото-
ков открыл файл и начал запись, но в этот момент операционная система пере-
дала управление другому потоку. Что произойдет, если другой поток попыта-
ется открыть тот же самый файл? Либо этого сделать не удастся, либо другой
поток откроет файл в режиме совместного доступа (for sharing), что может не
соответствовать вашим ожиданиям. Даже если в ходе работы с файлом опера-
ционная система не осуществила передачу управления другому потоку, получить
доступ к файлу может попытаться поток, работающий на другом процессоре.
В результате вы столкнетесь с той же проблемой.
1.2. Взаимодействие программ и Windows
Во многих операционных системах взаимодействие между системой
и программой инициализирует программа. Например, в DOS программа за-
прашивает разрешение на ввод и вывод данных. Говоря другими словами, не
Windows-программы сами вызывают операционную систему. Обратного про-
цесса не происходит. В Windows все совершенно наоборот: именно система
вызывает программу. Это осуществляется следующим образом: программа
ожидает получения сообщения от Windows. Когда это происходит, то выпол-
няется некоторое действие. После его завершения программа ожидает сле-
дующего сообщения.
Windows может посылать программе сообщения множества различных
9
всех процессов строго контролируется операционной системой. Операционная система выделяет каждой из программ некоторое количество процессорного времени и периодически производит переключение между запущенными на компьютере программами. Обратившись к специальному системному вызову, вы можете как бы приостановить (sleep) выполнение программы, однако если вы этого не сделаете, со временем операционная система сделает это за вас. Подвисание одной из программ не приведет к подвисанию всей системы. В общем и целом вытесняющая многозадачность выглядит более привле- кательно. Однако за все приходится платить. И в первую очередь расплачи- ваться приходится программистам, которые разрабатывают приложения, предназначенные для работы в среде с приоритетной многозадачностью. Представьте себе, что на компьютере работает несколько программ, исполь- зующих один и тот же файл журнала ошибок. Если вам необходимо сделать запись в этом файле, то в Windows 9x вы можете без лишних сложностей от- крыть файл, записать в него данные, а затем закрыть его. Если при этом вы ни разу не обратились к специальным системным функциям, то можете быть уве- рены: в то время, пока вы работали с файлом, ни одна другая программа не об- ратилась к этому же файлу (так как фактически в ходе работы с файлом на компьютере работает только одна ваша программа, а все остальные программы находятся в состоянии ожидания). В среде Windows 2000 все не так просто. Предположим, что один из пото- ков открыл файл и начал запись, но в этот момент операционная система пере- дала управление другому потоку. Что произойдет, если другой поток попыта- ется открыть тот же самый файл? Либо этого сделать не удастся, либо другой поток откроет файл в режиме совместного доступа (for sharing), что может не соответствовать вашим ожиданиям. Даже если в ходе работы с файлом опера- ционная система не осуществила передачу управления другому потоку, получить доступ к файлу может попытаться поток, работающий на другом процессоре. В результате вы столкнетесь с той же проблемой. 1.2. Взаимодействие программ и Windows Во многих операционных системах взаимодействие между системой и программой инициализирует программа. Например, в DOS программа за- прашивает разрешение на ввод и вывод данных. Говоря другими словами, не Windows-программы сами вызывают операционную систему. Обратного про- цесса не происходит. В Windows все совершенно наоборот: именно система вызывает программу. Это осуществляется следующим образом: программа ожидает получения сообщения от Windows. Когда это происходит, то выпол- няется некоторое действие. После его завершения программа ожидает сле- дующего сообщения. Windows может посылать программе сообщения множества различных 9
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »