русс | укр

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

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

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

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


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

Потоки.


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


Последовательность действий, выполняемых функцией CreateProcess.

 

 
 

 

 
 

 


подсистема Win32

 
 

 

 


Этап 1. Основная проблема – приложения, не являющиеся Win32 нельзя выполнять напрямую. Функция CreateProcess(…) на этапе 1 ищет “образ поддержки” с помощью которой будет выполняться не Win32 приложение, то есть CreateProcess(…) определяет тип процесса, ищет вспомогательную программу и проецирует её на адресное пространство нового процесса. Например, если процесс относится к POSIX, то используется posix.exe, OS/2 – os2.exe, MS-DOS (*.exe, *.com, .pif) – Ntvdm.exe, MS-DOS (.bat) – cmd.exe.

Этап 2. Создание объекта процесс. Создаётся

1) PDB или (EPROCESS).

2) Адресное пространство процесса.

3) Создаётся блок процесса ядро.

4) Инициализируется адресное пространство процесса.

5) Создаётся блок окружения процесса.

Блок PEB – в области пользовательских программ.

Этап 3. Создаётся объект поток, стек потока и его контекст.

Объект поток – это структура в системной области – TDB – содержит информацию.

Стек потока мы проходили. Выделяется регион памяти.

Контекст – это структура CONTEXT – зависит от аппаратуры, зависит от типа процессора. В этой структуре хранятся значения всех регистров процессора.

Этап 4. Уведомление подсистемы Win32. На этом этапе kernel32.dll посылает исполнительной системе Win32 сообщение для того, чтобы подсистема Win32 подготовилась к выполнению нового процесса. Это сообщение содержит идентификаторы процесса и потока и идентификаторы родительского процесса и флаг, является ли процесс Win32 приложением. Подсистема Win32 создаёт блок процесса.

Этапы 5 и 6 очевидны.

 

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



CreateThread(…). Для чего создаются потоки?

Выделив различные задачи, выполняемые процессом в отдельном потоке позволяет избежать цикла опросов.

 
 

 

 


Поток может находится в одном из состояний.

1. Поток фактически работает, при этом в регистре процессора переписывается содержимое структуры CONTEXT. Все остальные потоки процесса приостанавливаются в случае одного процессора в системе.

2. Поток готов к выполнению. Отсутствуют все причины, препятствующие работе потока, за исключением того, что процессор занят выполнением другого потока.

3. Заблокированное состояние. Поток ожидает некоторого события, например, ожидание завершения работы другого потока или какого-либо процесса. До наступление этого события планировщик не позволит этому процессу выполнится.

Объектами синхронизации являются потоки процессы, критические секции, семафоры, события, мьютексы.

Потоки владеют набором регистров.

Все потоки процесса имеют общий доступ к тому, чем этот процесс владеет, поэтому имеет доступ к адресному пространству процесса (различным регионам адресного пространства). Все потоки процесса совместно используют одни и те же значения дескрипторов, следовательно они могут обращаться к файлам, событиям, файлам проецируемым в память и так далее, которые принадлежат процессу.

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

Поток может завладеть или освободить различные синхронизирующие объекты, принад-лежащие процессу. Дескриптор потока – это индекс в таблице дескрипторов процесса. Иденти-фикатор потока – это закодированный указатель на базу данных потока (PDB).



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


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


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

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

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


 


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

 
 

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

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