ВУЗ:
Составители:
75
Потоки возникли в операционных системах как средство
распараллеливания вычислений. Конечно, задача распараллеливания
вычислений в рамках одного приложения может быть решена и
традиционными способами.
Во-первых, прикладной программист может взять на себя сложную
задачу организации параллелизма, выделив в приложении некоторую
подпрограмму диспетчер, которая периодически передает управление той или
иной ветви вычислений. При этом программа получается логически весьма
запутанной, с многочисленными передачами управления, что существенно
затрудняет ее отладку и модификацию.
Во-вторых, решением является создание для одного приложения
нескольких процессов для каждой из параллельных работ. Однако,
использование стандартных средств ОС для создания процессов не позволяет
учесть, что эти процессы решают единую задачу, а значит, имеют много
общего между собой. Они могут работать с одними и теми же данными,
использовать один и тот же кодовый сегмент, наделяться одними и теми же
правами доступа к ресурсам вычислительной системы. Кроме того, на
создание каждого процесса ОС тратит определенные системные ресурсы,
которые в данном случае неоправданно дублируются – каждому процессу
выделяются собственное виртуальное адресное пространство, физическая
память, закрепляются устройства ввода-вывода и т. п.
Из сказанного следует, что в операционной системе наряду с про-
цессами нужен другой механизм распараллеливания вычислений, который
учитывал бы тесные связи между отдельными ветвями вычислений одного и
того же приложения. Для этих целей современные ОС предлагают механизм
многопоточной обработки (multithreading). При этом вводится новая
единица работы – поток выполнения, а понятие «процесс» в значительной
степени меняет смысл. Понятию «поток» соответствует последовательный
75 Потоки возникли в операционных системах как средство распараллеливания вычислений. Конечно, задача распараллеливания вычислений в рамках одного приложения может быть решена и традиционными способами. Во-первых, прикладной программист может взять на себя сложную задачу организации параллелизма, выделив в приложении некоторую подпрограмму диспетчер, которая периодически передает управление той или иной ветви вычислений. При этом программа получается логически весьма запутанной, с многочисленными передачами управления, что существенно затрудняет ее отладку и модификацию. Во-вторых, решением является создание для одного приложения нескольких процессов для каждой из параллельных работ. Однако, использование стандартных средств ОС для создания процессов не позволяет учесть, что эти процессы решают единую задачу, а значит, имеют много общего между собой. Они могут работать с одними и теми же данными, использовать один и тот же кодовый сегмент, наделяться одними и теми же правами доступа к ресурсам вычислительной системы. Кроме того, на создание каждого процесса ОС тратит определенные системные ресурсы, которые в данном случае неоправданно дублируются – каждому процессу выделяются собственное виртуальное адресное пространство, физическая память, закрепляются устройства ввода-вывода и т. п. Из сказанного следует, что в операционной системе наряду с про- цессами нужен другой механизм распараллеливания вычислений, который учитывал бы тесные связи между отдельными ветвями вычислений одного и того же приложения. Для этих целей современные ОС предлагают механизм многопоточной обработки (multithreading). При этом вводится новая единица работы – поток выполнения, а понятие «процесс» в значительной степени меняет смысл. Понятию «поток» соответствует последовательный
Страницы
- « первая
- ‹ предыдущая
- …
- 73
- 74
- 75
- 76
- 77
- …
- следующая ›
- последняя »