Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8. Процеси _ потоки..doc
Скачиваний:
2
Добавлен:
16.09.2019
Размер:
119.81 Кб
Скачать

4.2 Что такое поток?

Если тема потоков управления Вам знакома, то Вы, вероятно, встречали разные определения этого термина, в том числе "единица исполнения", "отдельный счетчик команд" или "подлежащая планированию сущность внутри процесса". Хотя каждое из этих определений по сути своей правильно, ни одно из них не является удовлетворительным. Что в точности подразумевается под "единицей исполнения"? Просто нечто, исполняемое процессором?

В то время как процесс — это логическое представление работы, которую должна выполнить ОС, поток отображает одну из, возможно, многих необходимых подзадач. Предположим, к примеру, что пользователь запустил в оконном режиме приложение для работы с базой данных. ОС представляет этот вызов приложения как один процесс. Теперь предположим, что пользователь запросил генерацию отчета по данным из базы и сохранение этого отчета в файле — понятно, что это длительная операция. Пока идет выполнение операции, пользователь может ввести новый запрос к базе данных. ОС представляет каждый из запросов — генерацию отчета и новый запрос к базе — как отдельные потоки внутри процесса приложения для работы с базой данных. Эти потоки могут выполняться процессором независимо друг от друга, что позволяет проводить обе операции в одно и то же время (параллельно). У ОС есть удобный и эффективный способ предоставления потоков для достижения такой параллельности. Подробнее об этом будет сказано ниже.

Основные составляющие потока в исполнительной системе NT таковы:

• Уникальный идентификатор, называемый идентификатором клиента.

• Содержимое набора регистров, отображающее состояние процессора.

• Два стека: один используется потоком при работе в пользовательском режиме, а другой — в режиме ядра.

• Собственная область памяти, предназначенная для использования подсистемами, библиотеками периода выполнения и динамически подключаемыми библиотеками (DLL).

Регистры, стек и собственная область памяти называются контекстом (context) потока. Фактические данные, составляющие контекст потока, зависят от типа процессора.

Поток находится в адресном пространстве процесса, используя его для хранения данных во время выполнения. Если в одном процессе есть несколько потоков, то они совместно используют адресное пространство и все ресурсы процесса, включая маркер доступа, базовый приоритет и описатели объектов в таблице объектов процесса. Ядро NT направляет потоки на исполнение некоторому процессору. Таким образом, каждый процесс NT должен иметь по меньшей мере один поток.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]