Каковы реальные именованные семафоры? - PullRequest
0 голосов
/ 28 мая 2018

В UNIX-подобных системах у нас есть как безымянные семафоры, так и именованные семафоры.В основном для всего, что я сделал, так как мне приходилось передавать указатель на фактические данные для доступа, мне всегда удавалось передать и семафор в любой поток, который должен был получить доступ к самому ресурсу.Простая техника: создание структуры как с объектом, так и с семафором.

В каких случаях лучше использовать именованный семафор?

1 Ответ

0 голосов
/ 28 мая 2018

Точно так же, как сказал jspcl.Именованные семафоры используются для синхронизации между процессами.Между двумя процессами один и тот же адрес не может быть общим (так как в некоторых встроенных ОС есть некоторые исключения, такие как целостность, qnx и т. Д.). Потому что у каждого процесса есть разные адресные пространства, где адресные страницы различны.

Так называемые семафоры используются для доступа к общей памяти между процессами.

Например, для именованных семафоров в Linux используется вызов posx shmget ().В этом вызове у вас есть имя семафора, которое имеет char * вместе с правами чтения и записи памяти для процесса.Он вернет файловый дескриптор для этого семафора, связанного с разделяемой памятью. После этого вам нужно вызвать mmap, чтобы получить адрес разделяемой памяти.С помощью которого вы можете читать и записывать в общую память.

Примером из реальной жизни является аэронавтика, в которой используется несколько процессоров.Один процесс взаимодействует с другими электронными компонентами и отправляет информацию другому процессору.Следовательно в другом процессоре должен быть процесс, который может читать данные из последовательного порта и затем отправлять другому процессу.Так что здесь для многопроцессорной связи используется имя семафора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...