¿Diferencia entre direcciones lógicas y direcciones físicas?


Estoy leyendo Concepto de Sistemas Operativos y estoy en el capítulo 8! Sin embargo, me vendría bien una aclaración, o la seguridad de que mi comprensión es correcta.

Direcciones lógicas: Las direcciones lógicas son generadas por la CPU, según el libro. ¿Qué significa esto exactamente? (En un sistema de direcciones generado por la ejecución.. Asumo que cuando el código es compilado para un programa, el programa no tiene ninguna idea donde el código será cargado en memoria. Todo lo que hace el compilador es configurar un bosquejo del diseño del programa y cómo se debe diseñar la imagen, pero no le asigna ninguna dirección real. Cuando se ejecuta el programa, la CPU toma esta imagen de diseño que hizo el compilador y entrega algunas direcciones (lógicas) a las generadas a partir del código.

Direcciones físicas: Las direcciones físicas no se generan hasta que la CPU genera un conjunto de direcciones lógicas (que consiste en una dirección base y un desplazamiento). Las direcciones lógicas pasan por la MMU u otro dispositivo y en algún lugar a lo largo de la línea, las direcciones lógicas se asignan a direcciones RAM físicas.

¿Cuál es entonces la diferencia real? Puedo ver un beneficio. El uso de direcciones lógicas da más libertad a las aplicaciones. Si las direcciones físicas estuvieran codificadas, entonces el éxito del programa dependería en gran medida de la máquina física de la computadora, las direcciones RAM disponibles, etc.

El uso de direcciones lógicas convertidas en direcciones físicas no impone dos pasos en su lugar de uno a uno, y por lo tanto más sobre la cabeza?

¿Dónde entonces residen las direcciones lógicas después de la generación? Pueden existir en un registro en la CPU mientras la CPU está dando servicio a un proceso, pero antes y después, ¿a dónde van? Entiendo que esto depende de la implementación. Supongo que pueden almacenarse en algún espacio de registro especial o búfer en la CPU, como un TLB, ¿correcto? Si no, entonces la tabla puede existir en la propia RAM real, y la CPU solo contiene un puntero / dirección a la dirección base de la tabla en RAM, ¿correcto?

Parece que mantener las direcciones en RAM es contraproducente para el propósito de las direcciones de memoria lógicas. Solo puedo asumir que mi entendimiento es incorrecto.

Author: VividD, 2010-09-13

8 answers

Esta respuesta no es exhaustiva, pero puede explicarla lo suficiente como para hacer que las cosas hagan clic.

En los sistemas de memoria virtual, hay una desconexión entre las direcciones lógicas y físicas.

A una aplicación se le puede dar un espacio de direcciones virtual de (digamos) 4G. Esta es su memoria utilizable y es libre de usarla como mejor le parezca. Es un bonito bloque de memoria contiguo (desde el punto de vista de la aplicación).

Sin embargo, no se está ejecutando la aplicación solo , y el sistema operativo tiene que mediar entre todos ellos. Debajo de ese bonito modelo contiguo, hay una gran cantidad de mapeo para convertir direcciones lógicas en físicas.

Con esta asignación, el sistema operativo y el hardware (solo llamaré a estas capas inferiores de aquí en adelante) son libres de colocar las páginas de la aplicación en cualquier lugar que desee (ya sea en memoria física o intercambiadas a almacenamiento secundario).

Cuando la aplicación intenta acceder a la memoria en la dirección lógica 50, los niveles inferiores pueden traducir eso a una dirección física usando tablas de traducción. Y, si intenta acceder a la memoria lógica que ha sido intercambiada a disco, un error de página se eleva y los niveles inferiores pueden traer los datos relevantes de nuevo en la memoria, en cualquier física dirección que quiere.

En los viejos tiempos, cuando las direcciones físicas eran todo lo que tenía, el código tenía que ser reubicable (o fijo en carga) ya que podía cargar en cualquier lugar. Con la memoria virtual, ese código (y los datos) pueden estar en la ubicación de memoria lógica 50 en una docena de procesos diferentes al mismo tiempo-es real física dirección será diferente sin embargo.

Incluso se puede compartir para que exista una copia física en el espacio de direcciones de muchos procesos a la vez. Este es el quid del código compartido (por lo que no usamos más memoria física de la que necesitamos) y la memoria compartida para permitir una fácil comunicación entre procesos).

Es, por supuesto, menos eficiente que un entorno de dirección física pura, pero los fabricantes de CPU trata de hacerlo lo más increíblemente eficiente posible, ya que se usa mucho. Las ventajas lejos superan las desventajas.

 44
Author: paxdiablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-13 02:02:04

La dirección lógica es la dirección relativa al programa. Indica cuánta memoria tomará un proceso en particular, no dice cuál será la ubicación exacta del proceso y esta ubicación exacta la generaremos usando algún mapeo, y se conoce como dirección física

 8
Author: pallavi nigam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-28 00:18:45

Dirección lógica:- Dirección lógica generada por la CPU . cuando estamos dar el problema a la computadora entonces nuestra computadora pasa el problema al procesador a través de la dirección lógica , que no se ve esta dirección llamada dirección lógica .

Dirección física: - cuando nuestro procesador crea el proceso y resuelve nuestro problema, almacenamos los datos en la memoria secundaria a través de la dirección llamada dirección física

 4
Author: JAINATH GUPTA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-15 07:45:11
  1. Una dirección generada por la CPU se conoce comúnmente como una dirección lógica. El conjunto de todas las direcciones lógicas generadas por un programa se conoce como espacio de direcciones lógicas. Mientras que, una dirección vista por la unidad de memoria, es decir, la cargada en el registro de direcciones de memoria de la memoria, se conoce comúnmente como dirección física. El conjunto de todas las direcciones físicas correspondientes a las direcciones lógicas se conoce como espacio de direcciones físicas.
  2. El tiempo de compilación y el tiempo de carga los métodos de enlace de direcciones generan direcciones lógicas y físicas idénticas. Sin embargo, en el esquema de enlace de direcciones en tiempo de ejecución, los espacios de direcciones lógicas y físicas difieren.
  3. El programa de usuario nunca ve las direcciones físicas. El programa crea un puntero a una dirección lógica, digamos 346, lo almacena en la memoria, lo manipula, lo compara con otras direcciones lógicas, todo como el número 346. Solo cuando una dirección lógica se utiliza como dirección de memoria, se reubica en relación con la registro de base / reubicación. El dispositivo de hardware de asignación de memoria llamado unidad de administración de memoria(MMU) convierte las direcciones lógicas en direcciones físicas.
  4. Las direcciones lógicas van de 0 a máx. El programa de usuario que genera la dirección lógica piensa que el proceso se ejecuta en ubicaciones de 0 a máx. Las direcciones lógicas deben asignarse a direcciones físicas antes de que se utilicen. Las direcciones físicas van desde (R + 0) hasta (R + max) para un valor de registro base/reubicación R.
  5. Ejemplo: introduzca la descripción de la imagen aquí Asignación de direcciones lógicas a físicas mediante la unidad de gestión de memoria (MMU) y el registro de reubicación / base El valor en relocation / base register se agrega a cada dirección lógica generada por un proceso de usuario, en el momento en que se envía a la memoria, para generar la dirección física correspondiente. En la figura anterior, el valor base/ relocation es 14000, luego un intento por parte del usuario de acceder a la ubicación 346 se asigna a 14346.
 3
Author: Elyor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-13 09:17:14

Espacio de direcciones lógico Vs Físico

Una dirección generada por la CPU es comúnmente referenciada como Dirección Lógica,mientras que la dirección vista por la unidad de memoria,que es una cargada en el registro de direcciones de memoria de la memoria es comúnmente referenciada como la Dirección Física.El enlace de direcciones de tiempo de compilación y tiempo de carga genera las direcciones lógicas y físicas idénticas.Sin embargo, el esquema de enlace de dirección de tiempo de ejecución resulta en diferentes lógicas y físicas dirección.

El conjunto de todas las direcciones lógicas generadas por un programa se conoce como Espacio de Direcciones Lógicas,mientras que el conjunto de todas las direcciones físicas correspondientes a estas direcciones lógicas es Espacio de Direcciones Físicas.Ahora, la asignación de tiempo de ejecución de la dirección virtual a la dirección física se realiza mediante un dispositivo de hardware conocido como Unidad de Administración de Memoria.Aquí, en el caso del mapeo, el registro base se conoce como registro de reubicación.El valor en el registro de reubicación se añade a la dirección generada por un proceso de usuario en el momento en que se envía a la memoria.Entendamos esta situación con la ayuda del ejemplo:Si el registro base contiene el valor 1000,entonces un intento por parte del usuario de dirigirse a la ubicación 0 se reubica dinámicamente a la ubicación 1000,un acceso a la ubicación 346 se asigna a la ubicación 1346.

El programa de usuario nunca ve el espacio real de direcciones físicas, siempre se ocupa de la Lógica addresses.As tenemos dos tipos diferentes de direcciones Dirección lógica en el rango (0 a máx.) y Direcciones físicas en el rango (R a R + max) donde R es el valor del registro de reubicación.El usuario genera solo direcciones lógicas y piensa que el proceso se ejecuta en la ubicación a 0 a max.As está claro en el texto anterior que el programa de usuario suministra solo direcciones lógicas, estas direcciones lógicas deben ser mapeadas a la dirección física antes de que se utilicen.

 1
Author: gurdas singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-23 01:48:10

Una dirección lógica es una referencia a la ubicación de la memoria independiente de la asignación actual de datos a la memoria. Una dirección física o dirección absoluta es una ubicación real en la memoria principal.

Está en el capítulo 7.2 de Stallings.

 1
Author: mellodi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-15 03:57:45

Para lo mejor de mi memoria, una dirección física es una dirección explícita, establecida en piedra en la memoria, mientras que una dirección lógica consiste en un puntero base y un desplazamiento.

La razón es como básicamente has especificado. Permite no solo la segmentación de programas y procesos en hilos y datos, sino también la carga dinámica de dichos programas, y la asignación de al menos pseudo-paralelismo, sin ningún entrelazamiento real de instrucciones en la memoria que tenga que tener lugar.

 0
Author: Alex Hart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-13 03:47:07

Una dirección lógica es la dirección en la que un elemento (celda de memoria, elemento de almacenamiento, host de red) parece residir desde la perspectiva de un programa de aplicación en ejecución.

 -1
Author: Saif Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-22 13:46:50