Статус
нашего
сайта:
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

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


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

Процессы могут выполнять вызов fork сколь угодно часто, в результате чего получается целое дерево процессов. Посмотрите на рис. 6.29. Здесь процесс А выполнил вызов fork дважды и породил два новых процесса, В и С. Затем процесс В тоже выполнил вызов fork дважды, а процесс С — один раз. Таким образом, получилось дерево из шести процессов.

Рис. 6.29. Дерево процессов в системе UNIX

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

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

собой вид буфера, в который один процесс записывает поток данных, а другой процесс извлекает оттуда эти данные. Байты всегда возвращаются из канала в том порядке, в котором они были записаны. Случайный доступ невозможен. Каналы не сохраняют границ между фрагментами данных, поэтому если один процесс записал в канал 4 фрагмента по 128 байт, а другой процесс считывает данные по 512 байт, то второй процесс получит все данные сразу без указания на то, что они были записаны за несколько приемов.

В System V и Solaris применяется другой метод взаимодействия процессов. Здесь используются так называемые очереди сообщений. Процесс может создать новую очередь сообщений или открыть уже существующую с помощью вызова msgget. Для отправки сообщений используется вызов msgsnd, а для получения — msgrecv. Сообщения, отправленные таким способом, отличаются от данных, помещаемых в канал. Во-первых, границы сообщений сохраняются, в то же время канал просто передает поток данных. Во-вторых, сообщения имеют приоритеты, поэтому срочные сообщения идут перед всеми остальными. В-третьих, сообщения типизированы, и вызов msgrecv позволяет определять их тип, если это необходимо.

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

Еще одна особенность System V и Solaris — наличие семафоров. Принципы их работы мы уже описывали, когда говорили о производителе и потребителе.

Системы UNIX могут поддерживать несколько программных потоков управления в пределах одного процесса. Эти потоки управления обычно называют просто программными потоками. Они похожи на процессы, которые делят общее адресное пространство и все объекты, связанные с этим адресным пространством (дескрипторы файлов, переменные окружения и т. д.). Однако каждый поток имеет собственный счетчик команд, собственные регистры и собственный стек. Если один из программных потоков приостанавливается (например, пока не завершится процесс ввода-вывода), другие программные потоки в том же процессе могут продолжать работу. Два программных потока в одном процессе, которые действуют как процесс-производитель и процесс-потребитель, напоминают два однопоточных процесса, которые разделяют сегмент памяти, содержащий буфер, хотя не идентичны им. Во втором случае каждый процесс имеет собственные дескрипторы файлов и т. д., тогда как в первом случае все эти элементы общие. В примере взаимодействия производителя и потребителя мы видели, как работают потоки в Java. Иногда для поддержки каждого из программных потоков исполняющая система Java использует программный поток операционной системы, однако это не обязательно.


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

Карта Сайта