Реализация разделяемой памяти для FreeBsd с указанием программной семантики.
Примерный
сценарий работы с разделяемой памятью
выглядит следую!
щим
образом:
1.
Сервер получает доступ к разделяемой
памяти, используя семафор.
2.
Сервер производит запись данных в
разделяемую память.
После
завершения записи сервер освобождает
разделяемую память с
помощью
семафора.
4.
Клиент получает доступ к разделяемой
памяти, запирая ресурс с по!
мощью
семафора.
5.
Клиент производит чтение данных из
разделяемой памяти и освобож!
дает
ее, используя семафор.
Для
каждой области разделяемой памяти, ядро
поддерживает структуру
данных
основными полями которой являются:
struct
shm_perm Права доступа, владельца и создателя
области
shm_segsz
Размер выделяемой памяти
При
работе с разделяемой памятью необходимо
синхронизировать выпол!
нение
взаимодействующих процессов: когда
один из процессов записывает
данные
в разделяемую память, остальные процессы
ожидают завершения
операции.
Обычно синхронизация обеспечивается
с помощью семафоров,
назначение
и число которых определяется конкретным
использованием
разделяемой
памяти.