¿Cómo sabe el código de la biblioteca dinámica dentro de qué proceso se llama?

¿Cómo sabe el código de la biblioteca dinámica dentro de qué proceso se llama?

Si entendí correctamente, la única instancia de dylib se almacena en un segmento de memoria cuando se carga, luego se compartey no copiadoentre múltiples procesos memorias virtuales que lo necesitan. Pero, ¿cómo sabe quién llama en el momento de la ejecución?

Por ejemplo, le pregunto al constructor de clases de alguna biblioteca que depende del nombre de mi proceso (sin pasar el nombre directamente, ya que realmente puedo pasar cualquiera), ¿cómo sabrá exactamente qué proceso de los múltiples al que está adjunto se llamó?

(Omitiendo el hecho de que en este ejemplo la metainformación no es un secreto y se puede recuperar con una simple llamada al sistema) / El código de la biblioteca ni siquiera puede depender de la información de cada memoria de proceso que teóricamente podría, ya que la misma memoria compartida El esquema seguramente no se puede aplicar al revés (una biblioteca <- muchos procesos al mismo tiempo); sería un gran agujero de seguridad.

La situación se vuelve aún más complicada cuando una biblioteca necesita almacenar información específica de un proceso en su clase como una propiedad estática, para ser compartida dentro de algún proceso en particular, y/pero no en todos los procesos.esal que está adherido. Supongo que, de hecho, los datos se escribirán en la memoria del proceso en un formato que la clase verá como su propio campo normal, pero nuevamente, volvimos al problema del reconocimiento de procesos en el nivel del código de una biblioteca.

Respuesta1

En general, los punteros a la pila (de donde proviene la dirección de retorno), el montón (almacenamiento de datos) y algunos valores o direcciones de variables se pasan en los registros de la CPU. Todas estas direcciones están en la memoria virtual de la persona que llama. El código de la biblioteca dinámica se ejecuta en el contexto de la persona que llama, por lo que todas las llamadas al sistema se comportan como si la persona que llama las hubiera realizado.

Yo llamo a las bibliotecas compartidas con punteros a mis cosas, en mi espacio virtual, y tú llamas a las bibliotecas compartidas con punteros a tus cosas, en tu espacio virtual.

información relacionada