Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Потоки



Поток (нить) – это непрерывная последовательность инструкций, выполняющих определенную функцию.

Потоки не имеют собственного адресного пространства и получают доступ к адресному пространству процесса-родителя. Это означает, что все потоки в процессе могут записывать и считывать содержимое памяти любого из потоков данного процесса.

Потоки процесса могут сообща пользоваться ресурсами процесса-родителя.

По умолчанию у потоков нет собственного маркера доступа и для целей безопасности используется маркер доступа процесса-родителя.

При необходимости каждый поток может получить собственный маркер доступа.


Дескрипторы виртуальных адресов (virtual address descriptors, VAD) – это структуры данных, используемые VMM для учета виртуальных адресов, задействованных процессом.

Атрибуты потоков:

Идентификатор клиента – уникальное значение, которое идентифицирует поток при ее обращении к серверу.

Контекст потока – информация, которая необходима ОС для того, чтобы продолжить выполнение прерванного потока. Контекст потока содержит текущее состояние регистров, стеков и индивидуальной области памяти.

Два стека, один из которых используется потоком при выполнении в режиме ядра, а другой – в пользовательском режиме.

Локальная память потока (thread local storage, TLS) – закрытая область памяти потока.

Динамический приоритет – значение приоритета потока в данный момент.

Базовый приоритет – нижний предел динамического приоритета потока.

Процессорная совместимость потока – перечень типов процессоров, на которых может выполняться поток.

Номер идеального процессора потока.

Номер процессора, на котором поток выполнялся прошлый раз.

Время выполнения потока – суммарное время выполнения потока в пользовательском режиме и в режиме ядра.

Счетчик приостановок – текущее количество приостановок выполнения потока.

Номер идеального процессора потока:

Идеальный процессор для потока выбирается случайным образом при его создании с использованием зародышевого значения (seed) в блоке процесса. Это значение увеличивается на 1 всякий раз, когда создается новый поток, поэтому создаваемые потоки равномерно распределяются по набору доступных процессоров. Например, первый поток в первом процессе в системе закрепляется за идеальным процессором 0, второй поток того же процесса – за идеальным процессором 1. Однако у следующего процесса в системе идеальный процессор для первого потока устанавливается в 1, для второго – в 2 и т. д. Благодаря этому потоки внутри каждого процесса равномерно распределяются между процессорами.

Номер идеального процессора может быть изменен с помощью функции SetThreadIdealProcessor.





Дата публикования: 2014-11-19; Прочитано: 352 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...