26.5.1. Основные структуры ядра для работы с очередями
26.5.1. Основные структуры ядра для работы с очередями
Очередь сообщений — это связный список, находящийся в адресном пространстве ядра. Каждая очередь имеет свой уникальный идентификатор IPC.
Структура ядра msgbuf (описана в файле /usr/src/linux/include/linux/msg.h) является буфером сообщений:
struct msgbuf {
long mtype; /* тип сообщения */
char mtext[1]; /* текст сообщения */
};
Тут все ясно: тип сообщения и само сообщение. Используя тип сообщения, вы можете помещать в одну очередь разные сообщения, а не создавать еще одну очередь. Например, у нас есть два приложения — клиент и сервер. Вы можете использовать для них одну и ту же очередь: сообщения клиента будут с номером 1 (mtype = 1), а сообщения сервера — с номером 0 (mtype = 0).
Ясное дело, что сообщения из одного символа нас не устраивают, поэтому вы можете переопределить структуру msgbuf в своей программе:
struct my_buf {
long mtype;
char mtext[128];
}
Вы также можете добавлять новые поля в эту структуру (но только в своей программе! Код ядра модифицировать не нужно):
struct my_buf {
long mtype;
char mtext[128];
char info[50];
int status;
}
He бойтесь создавать свои структуры: ядру все равно, с какими данными работать, вам нужно учитывать только максимальный размер сообщения, который определен в файле /usr/src/linux/include/linux/msg.h:
#define MSGMAX 4056
4056 байтов — это максимальный размер не ваших данных, а всей структуры. включая тип сообщения. Размер типа long равен 4 байтам.
Сами сообщения хранятся ядром в структуре msg, которая также определена в файле msg.h:
struct msg {
struct msg *msg_next; /* указатель на след. сообщение
в очереди */
long msg_type; /* тип сообщения */
char *msg_spot; /* адрес самого сообщения (текста) */
short msg_ts; /* размер сообщения (текста) */
};
Сообщения хранятся в виде односвязного списка. Первый член структуры msg_next — это указатель на следующее сообщение в очереди. Второй член msg_type — это тип сообщения, такой же, как в структуре msg_buf.
Следующий член структуры — это указатель на начало текста сообщения, а последний член msg_ts — размер текста сообщения.
Каждый тип объекта IPC представляется в ядре определенной структурой. Для очередей сообщений это структура msqid_ds (описана в файле /usr/src/linux/include/linux/msg.h).
struct msqid_ds {
struct ipc_perm msg_perm; /* информация о правах
доступа */
struct msg *msg_first; /* указатель на первое сообщение
в очереди */
struct msg *msg_last; /* указатель на последнее сообщение
в очереди*/
time_t msg_stime; /* время последнего вызова msgsnd */
time_t msg_rtime; /* время последнего вызова msgrcv */
time_t msg_ctime; /* время последнего изменения */
struct wait_queue *wwait;
struct wait_queue *rwait;
ushort msg_cbytes;
ushort msg_qnum;
ushort msg_qbytes; /* максимальное число байтов на очередь */
ushort msg_lspid; /* pid последнего испустившего msgsnd */
ushort msg_lrpid; /* последний полученный pid */
};
? msg_perm
Это структура типа ipc_perm (ipc_perm определена в файле linux/ipc.h). Данная структура содержит информацию о владельце и правах доступа:
struct ipc_perm {
key_t key;
ushort uid; /* uid и gid владельца */
ushort gid;
ushort cuid; /* uid и gid создателя */
ushort cgid;
ushort mode; /* режим доступа */
ushort seq; /* системное поле. Вас оно не касается. */
};
? msg_ftrst
Указатель на первое сообщение в очереди.
? msg_last
Указатель на последнее сообщение в очереди.
? msg_stime
Время отправки последнего сообщения из очереди,
? msg_rtime
Время последнего изъятия сообщения из очереди.
? msg_ctime
Время последнего изменения очереди.
? wwait и rwait
Указатели в очередь ожидания ядра, которые используются, когда очередь переполнена и процесс вынужден ждать из-за этого.
? msg_cbytes
Суммарный объем всех сообщений в очереди.
? msg_qnum
Количество сообщений в очереди.
? msg_qbytes
Максимальный размер очереди.
? msg_lspid
PID процесса, который послал последнее сообщение в очереди.
? msg_lrpid
PID процесса, который получил сообщение из очереди.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Пользовательский интерфейс и основные правила работы с программой
Пользовательский интерфейс и основные правила работы с программой После запуска программы на экране отображается ее пользовательский интерфейс, который представлен на рис. 7.1. Рис.
Основные системные функции для работы с файлами
Основные системные функции для работы с файлами В табл. 2.7 приведены основные системные функции работы с файлами, являющиеся образами системных вызовов в программе С.Функции более высокого уровня, предлагаемые стандартной библиотекой ввода/вывода, которые в конечном
2.3 СТРУКТУРЫ ДАННЫХ ЯДРА
2.3 СТРУКТУРЫ ДАННЫХ ЯДРА Большинство информационных структур ядра размещается в таблицах фиксированного размера, а не в динамически выделенной памяти. Преимущество такого подхода состоит в том, что программа ядра проста, но в ней ограничивается число элементов
Конфигурация ядра для работы с iptables
Конфигурация ядра для работы с iptables Для того чтобы использовать iptables, необходимо активизировать соответствующие средства ядра. В версии ядра 2.4 все необходимые для этого опции сосредоточены в меню Networking Options и некоторых его подменю. Опции, которые необходимо
Б.2. Основные функции для работы с потоками: создание и завершение
Б.2. Основные функции для работы с потоками: создание и завершение В этом разделе мы опишем пять основных функций для работы с потоками.Функция pthread_createПри запуске пpoгрaммы вызовом exec создается единственный поток, называемый начальным потоком, или главным (initial thread).
Глава 2 Основные приемы работы
Глава 2 Основные приемы работы • Объекты в 3ds Max 2008• Создание объектов сцены• Модификаторы геометрии• Моделирование лофт-объектов• Создание волосПодобно огромному зданию, построенному из маленьких кирпичиков, программа 3ds Max позволяет создавать разноплановые сцены,
Основные структуры управления
Основные структуры управления Python - вполне обычный, можно сказать, "традиционный" язык программирования. Все привычные конструкции в языке есть - условный оператор if, циклы for и while, функции, классы, модули, пакеты (иерархические совокупности модулей). Нет цикла do-while и
Основные режимы работы
Основные режимы работы В этом разделе мы рассмотрим наиболее востребованные режимы работы и возможности программы Excel 2007. Более подробно возможности Excel проиллюстрированы в видеоуроках, которые имеются на прилагаемом к книге
Основные приемы работы с базой данных
Основные приемы работы с базой данных В данном разделе мы рассмотрим основные принципы и приемы работы с базами данных в Microsoft Access 2007. Описание будет построено на примере базы данных Контакты (см. рис.
Глава 2 Основные приемы работы
Глава 2 Основные приемы работы ? Объекты в 3ds Max 2008? Создание объектов сцены? Модификаторы геометрии? Практическое задание. НатюрмортПодобно огромному зданию, построенному из маленьких кирпичиков, программа 3ds Max позволяет создавать разноплановые сцены, используя в
5.2. Основные приемы работы, элементы текстового редактора
5.2. Основные приемы работы, элементы текстового редактора При создании документа для эффективной работы необходимо научиться нескольким основным приемам:1. Выбор команд из строки меню, контекстных меню и панели инструментов, как мышью, так и с клавиатуры.Контекстные
§ 4.2 Описание функций и основные приемы работы
§ 4.2 Описание функций и основные приемы работы Как нетрудно догадаться, FB Editor позволяет редактировать файлы в формате FB2. Довольно скромный набор функций частично компенсируется возможностью прямого редактирования XML-файла книги.Механизм работы редактора не так прост,
Урок 7.2. Основные приемы работы с данными
Урок 7.2. Основные приемы работы с данными Просмотр и редактирование таблиц Для открытия любой таблицы базы данных для просмотра или редактирования найдите ее в области переходов и дважды щелкните кнопкой мыши на ее значке. Для просмотра содержимого таблицы используйте
Основные правила работы за компьютером
Основные правила работы за компьютером Многие родители, родственники, руководители учебных заведений задаются не праздным вопросом о том, существуют ли правила работы с компьютером, позволяющие сохранить здоровье и продуктивно работать? Разные исследователи и научные