Про линукс ничего не скажу.
А про Win DLL упрощенно:
Динамически линкованные код и данные после загрузки ДЛЛ ничем не отличаются от статически линкованных.
Цитата(amw @ May 18 2007, 18:15)

После анализа кода появилось ощущение, что переменные в Windows DLL могут использоваться разными приложениями. В смысле одна и та же копия переменной доступна нескольким процессам. Это так?
"Обычные" данные принадлежат тому процессу в контексте которого работает ДЛЛ и соответственно имеется столько копий, сколько раз ДЛЛ загружена.
Однако можно разместить статические данные в shared сегменте, тогда такие данные всех экземпляров загруженных ДЛЛ будут отображатся на одну и туже область памяти.
Т.е. они будут доступны из всех процессов загрузивших эту ДЛЛ.
Правда это так не только для ДЛЛ.
Цитата
В коментариях в исходниках есть фразы на подобие
"Отсылаем WM_MESSAGE всем процессам, использующим DLL что очередь изменилась."
Вопрос: Windows DLL является самостоятельной сущностью, типа процесса? А иначе как DLL может отослать что-то ВСЕМ процессам, ее использующим?
Нет. ДЛЛ это часть процесса ее загрузившего.
Т.е. вызвали функцию из ДЛЛ - обратились к части кода который расположен в адресном пространстве вызывающего процесса.
А под той фразой видимо понимается, что текущий процесс может послать сообщения другим процессам, которые используют эту же ДЛЛ.
Чтобы понять как это может быть реализовано поRTFMте по ф-ции DllMain() и посмотрите на ее код в Вашем проекте.
Или по функции API RegisterWindowMessage().
Цитата
Прошу не пинать ногами и не посылат сразу в MSDN. Я его пытаюсь читать, но эти вопросы ставят меня в тупик.
Почитайте Рихтера "Windows для профессионалов" или хотя бы второй том Петзолда "Програмирование для Win95".