есть интерфейс для общения между - называется system call interface (syscalls)
cat /proc/self/maps - покажет как выглядит память с точки зрения cat
Можно заметить что в начале есть память 0xffff_ffff_81a0_00e0 или что-то такое
это адресс где есть маппинг части памяти ядра
предполагалось что процесс из userspace не может читать память ядра
фактически мы должны при сисколе прыгать в ядро
и не нужно играться с представлением памяти
Есть концепция виртуальной памяти. Например для Process A есть Page Tables - он содержит соответствие адресу в памяти с точки зрения программы к физической памяти
а походить по TLB - сложно и дорого (по скорости)
И на каждое переключение задач его надо бы перезаполнять, память то разная
кэш содержит соответствие виртуального адреса к данным (упрощенно)
нужно чтобы часто используемые данные не тягать из памяти
к сожалнию быстро-дешево-много - выбери два.
кэш - быстро и дешево, память - дешево и много
И тут на сцену выходит Side-Channel Attacks
фактически это использование особенностей микроархитектуры чтобы получить что-то что не очень предполагается