Содержание материала

Устройство Windows. Процессы, потоки и функции ShellExecute и WinExec. Часть 1.

    По просьбам общественности и была написана эта статья.

Действительно невозможно профессионально разрабатывать многопоточные программы,

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

не представляя, как они работают. В статье за основу взята операционная система Windows 2000.

Так же в этой статье будут подробно рассмотрены различные методы запуска новых процессов (программ).

    Главным обстоятельством является то, что почти все современные ОС многозадачны.

ОС Windows 2000 не является исключением, в ней может работать одновременно несколько программ.

Любая программы имеет, по крайней мере, одним программным потоком,

который в свою очередь может создавать еще несколько потоков и т.д.

Но, не смотря на то, что ОС, называется "многозадачной" в конкретный момент времени

выполняется только один поток. что вы не замечаете, как ОС переключается между потоками.

Не стоит забывать, что, распределяя процессорное время, операционная система Windows,

имеет дело именно с потоками, а не с процессами, которым эти потоки принадлежат.

    Запуская программу в Windows, вы создаете процесс.

И в этом нет ничего удивительного, потому что в других операционных системах происходит почти то же самое.

Однако все же процесс в Windows, например, отличается от процесса в Unix.

А все дело в том, что в Windows процесс владеет открытыми файлами, оперативной памятью и другими ресурсами.

Для каждого процесса (программы) Windows выделяет виртуальное адресное пространство объемом 2 Гб.

Для адресации этого пространства используются обычные 32-битные указатели,

которые представляют собой числа от 0 до 2 Г. Но процесс в Windows не исполняется.

Исполняется программный поток. Поток - это последовательность машинных команд, которые Windows

воспринимает, как единое целое (набор регистров процессора).

Поток обладает указателем на команду, которая в данный момент выполняется,

и указателем на стек где хранятся локальные переменные потока.

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

программный поток то разницы практически никакой. Однако поток может создавать другие потоки.

А те потоки могут создавать еще потоки. Два процесса ни могут иметь общие ресурсы,

если не используют специальные механизмы межпроцессорного взаимодействия.

В противоположность этому все потоки, которые принадлежат одному процессу,

имею доступ ко всем ресурсам этого процесса.

    Зачем процессу несколько потоков? Потоки могут выполнять какие-то действия параллельно

основной программе (в фоновом режиме). Потоки удобно применять, если нежелательна

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

осуществляет сложные математические вычисления, в главной программе происходит подготовка

следующего задания и ввод параметров.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить