Предположим, что мы запускаем два процесса подряд, скажем: -
$ grep abc abc.txt ==> pid 100
$ grep def def.txt ==> pid 101
Я прочитал в книге "Начало программирования Linux" главу № 11, что раздел кода процессов будет общим, так как он доступен только для чтения. Это так? Я думаю, что если grep скомпилирован только как разделяемая библиотека, то раздел кода будет общим.
Еще один вопрос, в случае разделяемых библиотек, как ОС узнает, что библиотека уже загружена или нет? Предположим, что если 2 процесса одновременно вызывают функцию общей библиотеки, как преобразовать виртуальный адрес двух процессов в физический адрес, указывающий одно и то же место в ОЗУ?