Беседа с незнакомцем

В данном примере мы рассмотрим, как процесс-клиент A может использовать какой-либо канал связи (локальный канал (pipe), сокет, совместно используемую память, собственный IPC, почтового голубя) с другим процессом-клиентом B для передачи ему пакета данных, содержащего достаточно информации для того, чтобы B смог обратится к процессу-серверу для дублирования файлового дескриптора в своем адресном пространстве. Читать далее «Беседа с незнакомцем»

Пошаговый анализ кода

Давайте теперь взглянем на основные части кода библиотеки TFP.

Начнем мы с заголовочного файла tfplib.h. Каждая программа, в которой будет использоваться библиотека идентификации, должна включать tfplib.h. Читать далее «Пошаговый анализ кода»

Создание дополнительных сегментов с помощью языковых расширений компилятора GNU C/C++

Для этих целей используется модификатор __attribute__ который может задавать условия сохранения структур, данных и т.п. в исполняемом файле. Читать далее «Создание дополнительных сегментов с помощью языковых расширений компилятора GNU C/C++»

Требования к утилите

Требования к утилите, которые стали понятны из телефонного разговора, были довольно нехитры: заказчики хотели простой иметь простой, минимально затрагивающий поведение программы, способ ассоциировать некую маркировку с каждым потоком, который они могли контролировать в их системе. Читать далее «Требования к утилите»

Мутексы

Добро пожаловать в замечательный мир мутексов ( mutex = mutual exclusion, что переводится как «взаимное исключение» ). Из названия видно, что мутексы предназначены для того, чтобы сделать определнный код или данные доступными только одному потоку одновременно. Читать далее «Мутексы»

Дизайн

Главной сложностью дизайна было принятие решения о том, где именно хранить идентифицирующую информацию. Очевидно, что она должна была храниться для каждого потока индивидуально, что в свою очередь означало или изощренное применение глобальных переменных или использование существующей в Neutrino поддержки потоковых областей данных. Читать далее «Дизайн»

Функционирование

Файл tfplib.c содержит API библиотеки для идентификации потоков, который может вызываться любым потоком. Главной функцией является tfp_mark(), она используется для привязки маркера к вызывающему ее потоку. Читать далее «Функционирование»