Диспетчеризация потоков на SMP. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Диспетчеризация потоков на SMP.



 

 

Диспетчеризация потоков в Windows 2000 при однопроцессорной и многопроцессорной конфигурации.

Диспетчеризация (управление выполнением) потоков выполняется в соответствии с их приоритетами. В Windows 2000 предусмотрено 32 уровня приоритета – от 0 до 31. Эти значения группируются так:

- шестнадцать уровней реального времени (16–31);

- пятнадцать варьируемых (динамических) уровней (1–15);

- один системный уровень (0), зарезервированный для потока обнуления страниц (Zero page thread).

 

Сумма базового приоритет процесса (Pp) и относительного приоритета потока (Pt) называется базовым приоритетом потока (Ptb). При создании процесса первичный поток получает базовый приоритет процесса, однако имеет возможность его изменить (функция SetThreadPriority).

Формула 1. Базовый приоритет потока.

Ptb = Pp+Pt

Поток (Thread) – объект ядра, отвечающий за выполнение программного кода в процессе. При инициализации процесса система создаёт и его первичный поток. Первичный поток начинает своё выполнение с функции main (в консольных приложениях) или с WinMain (GUI-приложения) и существует до тех пор, когда main (WinMain) возвращает управление. Большинство процессов обходятся одним потоком, однако существует возможность создания новых потоков, которые будут выполнять программный код параллельно с первичным потоком. На многопроцессорных системах эти потоки будут работать действительно параллельно (под управлением Windows NT/2000); на системах с одним процессором, ОС будет последовательно переключать процессор между всеми запущенными потоками.

На уровне ОС поток представляется блоком потока с информационными структурами:

· идентификатор потока TID (Thread ID)

· стартовый адрес потока

· данные о стеках потока:

- пользовательского режима;

- режима ядра;

· информация о контексте потока

· информация для диспетчеризации

· время создания/завершения

· информация о локальной памяти потока (TLS).

 

Диспетчеризация (управление выполнением) потоков выполняется в соответствии с их приоритетами. В Windows 2000 предусмотрено 32 уровня приоритета – от 0 до 31. Эти значения группируются так:

- шестнадцать уровней реального времени (16–31);

- пятнадцать варьируемых (динамических) уровней (1–15);

- один системный уровень (0), зарезервированный для потока обнуления страниц (Zero page thread).

 

Приоритет каждого потока в Win32 АРI устанавливается, исходя из класса приоритета его процесса и относительного приоритета самого потока.

Комбинация базового приоритета процесса (Pp) и относительного приоритета потока (Pt) называется базовым приоритетом потока (Ptb). При создании процесса первичный поток получает базовый приоритет процесса, однако имеет возможность его изменить (функция SetThreadPriority).

Ptb = Pp+Pt

Переменные регистры микропроцессора, стеки и локальные области памяти называются контекстом потока. Информация о контексте различна на каждой аппаратной платформе, на которой может работать ОС. Контекст потока в Win32 представлен аппаратно-зависимой структурой CONTEXT, которая содержится в объекте ядра поток. IP и SP – два самых важных регистра в контексте потока: SP – указывает на стек потока, IP – на функцию потока.

Контекст отражает, во-первых, состояние аппаратуры компьютера в момент прерывания потока: значение счетчика команд, содержимое регистров общего назначения, режим работы процессора, флаги, маски прерываний и другие параметры. Во-вторых, контекст включает параметры операционной среды, а именно ссылки на открытые файлы, данные о незавершенных операциях ввода-вывода, коды ошибок выполняемых данным потоком системных вызовов и т.д.

Элементы структуры CONTEXT четко соответствуют регистрам процессора. Например, для процессоров x86 в число элементов входят Eax, Ebx, Ecx, Edx и т д., а для процессоров Alpha — IntVO, IntTO, IntT1, IntSO, IntRa, IntZero и др.

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 254; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.196.59 (0.005 с.)