Mamy sharowana libkę *.so.
Jak libka nie jest linkowana przez żaden proces to zmienna x nie ma adresu w pamięci RAM, istnieje tylko w pamięci dysku.
Procesy mogą linkowac sie do tej libki.
Adres zmiennej 'x' w wirtualnej przestrzeni adresowej procesów może być różny.
Ale czy jak te procesy modyfikują zmienną 'x' to one modyfikują tą samą zmienną w przestrzeni fizycznej w RAMie? Mi się wydaje że nie ale nie jestem pewny, ktoś mógłby potwierdzić?
Mi się wydaje że jak proces sharujący libkę ładuje się do pamięci RAM to zmienna 'x' ładuje się za każdym razem pod inną komórkę pamięci RAM w linuksie. Nie ma żadnego mechanizmu pamiętania, że wystartował sie proces A zmienna x załadowana do RAMu pod 0x5000 004c, potem startujemy proces B i wydaje mi się, że zmienna x będzie to osobna instancja dla procesu B pod innym adresem pamieci RAM.
lib.h
#pragma once
extern int x;
lib.c
#include <lib.h>
#include <stdio.h>
x = 0;
Jak mam racje wyżej to niech ktoś potwierdzi, byłbym wdzięczny. Bo zamierzam użyć mechanizmu pamięci sharowanej tutaj dla zmiennych które chcę by były sharowane pomiedzy procesami (shm_open, mmap => wtedy tak uproszczając taka zmienna uchwyt w /dev/shm zacznie miec do adresu fizycznego w RAMie), ale może nie mam racji co do powyższego.