Трубы и розетки - «передача сообщений» или «разделяемая память»? - PullRequest
2 голосов
/ 24 февраля 2010

Хорошо, это глупый вопрос ...

Являются ли каналы, FIFO и сокеты общей памятью или для передачи сообщений ..?

Сначала я думал, что это общая память, потому что каналы используют read () и write (), но теперь я просто запутался. Технически «сообщения» хранятся в адресном пространстве ядра, так что это сообщение или сохраненная память? У меня есть экзамен на вступление в ОС через несколько часов, и мне просто нужно это прояснить. Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 24 февраля 2010

передача сообщений, так как они требуют участия с обеих сторон, отправителя и получателя в случае сокетов, например. они могут быть реализованы с использованием разделяемой памяти, но шаблон связи - это передача сообщений

0 голосов
/ 24 февраля 2010

Это передача сообщений. Вы указываете буфер для записи в буфер сокетов и узнаете, сколько места у него есть, заранее, используя getTxAvailable () или что-то еще. На самом деле это не разделяемая память, поскольку она выполняет операцию очистки буфера, чтобы помочь инкапсуляции сокета. Если вы говорите о сокете на клиенте или сокете на сервере, это также передача сообщений. Что-то вроде прямого буфера Java или памяти с отображением файлов является общей памятью.

...