В «Операционные системы понятия» книга Silberchatz, это говоритShared код логический адрес в процессе адресного пространства
«Общий код должен появиться в одном месте в логическом адресном пространстве всех процессов»,
Почему он должен появляться в одном месте? Я думал, что для каждого процесса у нас есть отдельная таблица страниц, которая позволяет иметь код общего кода в разных логических адресах!
От того, что я делаю из того, что вы сказали, Когда общий код должен ссылаться сам, ему нужно знать пространство логического адреса, в котором он находится. Поскольку общий код не может изменить сам для каждого процесса, к которому он обращается, это означает, что логическое адресное пространство должно быть постоянным во всех общих процессах. Не означает ли это, что вы не можете использовать 2 части общего кода, которые используют одно и то же логическое адресное пространство? – 2bigpigs
@ 2bigpigs Общий код может работать с данными, расположенными в разных местах, если он спроектирован и скомпилирован таким образом, что в каждом адресном пространстве вызывающий абонент отправляет его с адресом данных, или указанный адрес может быть каким-то образом получен из среды (например, TLS и тому подобное). Очевидно, что вы не можете пересекать код/данные в одном и том же адресном пространстве одновременно. Но я думаю, что общий код не обязательно должен быть разделен. Если вы не можете иметь библиотеку по одному адресу в одном адресном пространстве, как и во всех других, вы можете иметь другую копию библиотеки, перемещенную в другое место. –