Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.387


Таненбаум Э.- Архитектура компьютера. стр.387

+ указатель на дескриптор безопасности данного процесса;

+ указатель на дескриптор безопасности исходного программного потока;

+ бит, который сообщает, наследует ли новый процесс описатели родительского процесса;

+ различные флаги (например, ошибки, приоритета, отладки, консолей);

+ указатель на строки описания конфигурации;

+ указатель на имя рабочего каталога нового процесса;

+ указатель на структуру, которая описывает исходное окно на экране;

+ указатель на структуру, которая возвращает 18 значений вызывающей процедуре.

В Windows ХР нет никакой иерархии родительских дочерних процессов. Все процессы создаются равными. Однако поскольку одним из 18 параметров, возвращаемых исходному процессу, является описатель нового процесса (который дает возможность контролировать новый процесс), здесь существует внутренняя иерархия в том смысле, что определенные процессы содержат описатели других процессов. Эти описатели нельзя просто непосредственно передавать другим процессам, но процесс может сделать определенный описатель доступным для другого процесса, а затем передать ему этот описатель, так что внутренняя иерархия процессов не может сохраняться долго.

Каждый процесс в Windows ХР создается с одним программным потоком, но позднее этот процесс может создать еще несколько таких потоков. Создать программный поток проще, чем процесс, поскольку вызов CreateThread имеет всего 6 параметров вместо 10: дескриптор безопасности, размер стека, начальный адрес, пользовательский параметр, начальное состояние потока (готов к работе или блокирован) и идентификатор потока. Поскольку созданием потоков занимается ядро, оно располагает информацией обо всех программных потоках (иными словами, их реализация не ограничивается пользовательским пространством, как в некоторых других системах).

Когда ядро выполняет синхронизацию, оно вызывает не только процесс, который должен запускаться следующим, но и программный поток этого процесса. Это значит, что ядро всегда знает, какие программные потоки блокированы, а какие — нет. Так как программные потоки являются объектами ядра, они имеют дескрипторы безопасности и описатели. Поскольку описатели разрешается передавать другому процессу, можно сделать так, чтобы один процесс управлял программными потоками другого процесса. Эта особенность может понадобиться, например, для отладчиков.

Создавать программные потоки в Windows ХР довольно расточительно, поскольку для этого требуется войти в ядро, а затем выйти из него. Чтобы избежать этого, в Windows ХР предусмотрены волокна, которые похожи на программные потоки, но выполняются и синхронизируются в пользовательском пространстве программой, которая их создает. Каждый программный поток может иметь несколько волокон, точно так же как процесс может иметь несколько программных потоков, только в данном случае, когда волокно блокируется, оно встает в очередь заблокированных волокон и выбирает другое волокно для работы в своем и программном потоке. Ядро не знает об этом переходе, поскольку поток продолжает выполняться, даже если сначала в нем работало одно волокно, а затем другое.


⇐ Предыдущая страница| |Следующая страница ⇒

.