Читайте также:
|
|
Поток – это:
(потоки — это объекты, получающие время процессора; время процессора выделяется квантами; квант времени — это интервал, имеющийся в распоряжении потока до тех пор, пока время не будет передано в распоряжение другого потока).
Поток может определяться и как часть процесса, выполняющаяся в каждый момент времени.
В отличие от процессов, потоки могут пользоваться общими участками кода и данных в рамках единого программного модуля.
Ресурсами владеют процессы, а не потоки – последние только используют ресурсы, выделенные процессу. Поток, как правило, имеет "в собственности" минимум ресурсов; он зависит от процесса, который и распоряжается виртуальной памятью, кодом, данными, файлами и другими ресурсами ОС.
Самый простой пример использования потоков — приложения из состава Microsoft Office. К примеру, пакеты Excel и Word задействуют по несколько потоков. Word может одновременно корректировать грамматику и печатать, при этом осуществляя ввод данных с клавиатуры и мыши; программа Excel способна выполнять фоновые вычисления и печатать.
Почему предпочтительнее использовать потоки вместо процессов, хотя, при необходимости, приложение может состоять и из нескольких процессов? Дело в том, что переключение между процессами — значительно более трудоемкая операция, чем переключение между потоками. Другой довод в пользу использования потоков — то, что они специально задуманы для разделения ресурсов; разделить ресурсы между процессами (имеющими раздельное адресное пространство) не так-то просто.
Преимущества потоков
1. Так как множество потоков способно размещаться внутри одного ЕХЕ модуля, это позволяет экономить ресурсы как внешней, так и внутренней памяти.
2. Использование потоками общей области памяти позволяет эффективно организовать межзадачный обмен сообщениями (достаточно передать указатель на сообщение). Процессы не имеют общей области памяти, поэтому ОС должна либо целиком скопировать сообщение из области памяти одной задачи в область памяти другой (что для больших сообщений весьма накладно), либо предусмотреть специальные механизмы, которые позволили бы одной задаче получить доступ к сообщению из области памяти другой задачи.
3. Как правило, контекст потоков меньше, чем контекст процессов, а значит, время переключения между задачами-потоками меньше, чем между задачами-процессами.
4. Так как все потоки размещаются в одном ехе-модуле, значительно упрощается использование программ-отладчиков (debugger).
Недостатки потоков
1. Как правило, потоки не могут быть подгружены динамически. Чтобы добавить новый поток, необходимо провести соответствующие изменения в исходных текстах и перекомпилировать приложение. Процессы, в отличие от потоков, подгружаемы, что позволяет динамически изменять функции системы в процессе ее работы. Кроме того, так как процессам соответствуют отдельные программные модули, они могут быть разработаны различными компаниями, чем достигается дополнительная гибкость и возможность использования ранее наработанного ПО.
2. То, что потоки имеют доступ к областям данных друг друга, может привести к ситуации, когда некорректно работающий поток способен испортить данные другого потока. В отличие от этого процессы защищены от взаимного влияния, а попытка записи в «не свою» память приводит, как правило, к возникновению специального прерывания по обработке «исключительных ситуаций». Реализация механизмов управления процессами и потоками, возможность их взаимного сосуществования и взаимодействия определяются конкретным ПО РВ.
С точки зрения существования понятий «процесс» и «поток», считается, что все версии Windows поддерживают многозадачность: основанную на процессах и основанную на потоках. Рассмотрим их подробнее.
Многозадачность основанная на процессах. При многозадачности такого типа две или более программы могут выполняться параллельно. Конечно, они по очереди используют ресурсы центрального процессора и с технической точки зрения, выполняются неодновременно, но благодаря высокой скорости работы компьютера это практически незаметно.
Многозадачность, основанная на потоках. Поток здесь рассматривается как отдельная часть исполняемого кода. В многозадачности данного типа отдельные потоки внутри одного процесса также могут выполняться одновременно.
Все процессы имеют по крайней мере один поток, но в Windows 95 и выше их может быть несколько. Отсюда можно сделать вывод, что в Windows 95 и выше допускается существование процессов, две или более частей которых выполняются одновременно. Такое предположение верно. Следовательно, при работе в этих операционных системах возможно параллельное выполнение, как программ, так и отдельных частей самих программ.
В простой многозадачной (не многопоточной системе) до Windows 95 каждая программа имеет единственный поток. Это означает, что ЦПр начинает выполнение команд в начале программы и продолжает их выполнение следуя инструкциям, в последовательности, определенной программой до тех пор, пока программа не завершится.
Скажем, программа имеет пять команд: А, В, С, D, и Е, которые выполняются последовательно. Когда система не многопоточная – программа имеет один поток и команды выполняются в том же порядке: А, В, С, D, и Е. Действительно, ЦПр может потребовать время для выполнения другим команд в других программах (ведь программа многозадачная), но они не будут влиять на порядок выполнения потока названных команд.
Многопоточная ОС типа Windows позволяет приложению выполнять более, чем один поток одновременно. Скажем, команда D в нашей программе создала новый поток, который стартовал с команды В и далее выполнил последовательность команд С и Е. Первый поток все еще: А, В, С, D, и Е.
Дата добавления: 2015-08-02; просмотров: 92 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Задачи, процессы, потоки в концепции операционных систем. | | | В 2011-2012 учебном году экзамены сдают в конце 3 модуля у Подъяблонской Л.М. группа 4Б1 |