русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Описание структур управления потоками.


Дата добавления: 2013-12-23; просмотров: 1054; Нарушение авторских прав


Управляющие структуры ОС для работы с потоками.

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

1) CreateThread(…). Создаёт новый поток в текущем процессе.

2) CreateRemoteThread(…).Создаёт новый поток в другом процессе.

3) ExitThread(…). Нормальное завершение потока.

4) TerminateThread(…). Аварийное завершение потока, завершение потока из другого потока.

5) GetExitCodeThread(…). Получение кода завершения любого потока.

6) GetThreadTimes(…). Возвращает временные характеристики другого потока, то есть время работы другого потока в пользовательском режиме и режиме ядра. В Windows 95 и Windows 98 не используются.

7) GetThreadContext(…). Возвращает регистры процессора для данного потока.

SetThreadContext(…). Изменяет регистры процессора для данного потока.

8) GetCurrentThread(…). Получить дескриптор текущего потока.

SetCurrentThreadId(…). Получить идентификатор текущего потока.

Аналогичные функции есть для процесса GetCurrentProcess и GetCurrentProcessId.

 

Управляющие структуры имеют kernel32.dll. Исполнительная система. Упрощённая структура.

 

TEB
Win32k.sys

 

Пользовательский режим

 
 

 


Область системных программ

 
 

 

 


W32THREAD

 

csrss.exe

 

База данных используется kernel32.dll.

Блок потока ядра – Win32 в режиме ядра.

 

Лекция № 10

1) TDB (ETHREAD). Начинается со стандартного заголовка, который содержит идентификатор объекта (от 0 до 27) и счётчик числа обращений к данному объекту. Далее следует указатель на структуру KTHREAD – блок потока ядра, указатель на PDB (EPROCESS), откуда поток может извлекать, структура CONTEXT – содержит описание регистров, время создания и завершения потока, стартовый адрес потока, и так далее.



2) KTHREAD. Содержит информацию необходимую ядру Windows для планирования потоков и их синхронизации с другими потоками.

· суммарное время работы в пользовательском режиме,

· суммарное время работы в режиме ядра,

· базовый и текущий приоритеты потока,

· значение кванта (для Windows 2000),

· маска привязки к процессорам, то есть в случае многопроцессорной системы информация о том, на каких процессорах может выполняться данный поток,

· список объектов, ожидаемых данным потоком, например, поток ждёт завершения какого-либо другого потока.

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

3) TEB. В нём содержится информация о стеке потока, базовый адрес.

 

заполненная часть стека

/////////////////////////    
старший адрес

       
 
   
 


текущий адрес стека

 

базовый адрес стека младший адрес

В блоке TEB содержится локальная память потока TLS, значение кода последней ошибки, то есть LastError. Даные необходимые для работы модулей user32.dll и GDI32. В том случае, если поток работает в сети в TEB содержится указатель на данные WinSock.

4) W32THREAD. Дублирует данные, необходимые для работы user32 и gdi32.

Алгоритм работы функции CreateThread(…) (kernel32.dll).

1. Создаёт стек пользовательского режима в адресном пространстве процесса.

2. Инициализирует аппаратный процесс потока, то есть структуру CONTEXT.

3. Вызывает функцию ядра ОС NtCreateThread(…), которая создаёт все управляющие структуры, которые находятся в системной части адресного пространства.

4. Создаёт блок TEB.

5. Уведомляется подсистема Win32, которая создаёт блок W32THREAD.

6. Возвращает дескриптор и идентификатор вызывающей программе вновь созданного потока.

7. Вновь созданный поток ставится в очередь на выполнение.

 



<== предыдущая лекция | следующая лекция ==>
Потоки. | Управление потоками.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.