2010-07-14 24 views
18

Esto es una remisión, porque no recibo ninguna respuesta de superuser.com. Perdón por el malentendido.Diferencia entre el direccionamiento físico y el concepto de direccionamiento virtual

Necesito saber la diferencia entre el direccionamiento físico y el concepto de direccionamiento virtual en los sistemas integrados.

¿Por qué el concepto de direccionamiento virtual se implementa en sistemas integrados?

¿Cuál es la ventaja del direccionamiento virtual sobre un sistema con concepto de direccionamiento físico en sistemas integrados?

¿Cómo se realiza la asignación entre el direccionamiento virtual y el direccionamiento físico en los sistemas integrados?

Explique el concepto anterior con algunos ejemplos simples en una arquitectura simple.

+1

No está bien publicar duplicados solo porque todavía no ha recibido las respuestas. –

+9

bien. Se eliminó la misma publicación anterior. –

Respuesta

40

El direccionamiento físico significa que su programa realmente conoce el diseño real de la RAM. Cuando accede a una variable en la dirección 0x8746b3, allí está realmente almacenada en los chips de RAM físicos.

Con el direccionamiento virtual, todos los accesos a la memoria de la aplicación van a una tabla de página, que luego se asigna de la dirección virtual a la física. Entonces, cada aplicación tiene su propio espacio de direcciones "privado", y ningún programa puede leer o escribir en la memoria de otro programa. Esto se llama segmentación .

El direccionamiento virtual tiene muchos beneficios. Protege a los programas contra choques entre sí mediante una mala manipulación del puntero, etc. Debido a que cada programa tiene su propio conjunto de memoria virtual, ningún programa puede leer los datos de otra persona, esto es tanto una seguridad como un plus de seguridad. La memoria virtual también habilita paginación, donde la memoria RAM física de un programa puede almacenarse en un disco (o, ahora, un flash más lento) cuando no se usa, y luego volver a llamar cuando una aplicación intenta acceder a la página. Además, dado que solo un programa puede residir en una página física física, en un sistema de paginación física, a) todos los programas se deben compilar para cargar en direcciones de memoria diferentes o b) cada programa debe usar código independiente de posición, o c) algunos conjuntos de programas no pueden ejecutarse simultáneamente.

El mapeo físico virtual se puede hacer en software (con soporte de hardware para las trampas de memoria) o en hardware puro. A veces, incluso las tablas de páginas están en un conjunto especial de memoria de hardware. No sé de sobra qué sistema embebido hace qué, pero cada computadora de escritorio tiene un TLB de hardware (traducción Lookaside Buffer, básicamente un caché para las asignaciones virtual-físicas) y algunos ahora tienen unidades avanzadas de asignación de memoria que ayudan con máquinas virtuales y similares.

Las únicas desventajas de la memoria virtual son la complejidad añadida en la implementación del hardware y un rendimiento más lento.

+0

"cada aplicación tiene su propio espacio de direcciones" privado "y ningún programa puede leer o escribir en la memoria de otro programa" Pero la MMU asigna cada dirección virtual a la dirección física correspondiente ¿no? Si los programas usan la dirección virtual, entonces accede implícitamente a la misma área de memoria física ¿no? /renjith_g –

+4

@Renjith G: en general, una página física determinada solo se asigna al espacio virtual de una aplicación, por lo que no hay forma de que los programas interfieran entre sí. Si asigna explícitamente memoria compartida, las páginas virtuales de dos aplicaciones diferentes se asignarán a la misma página. Pero, en el caso general, los conjuntos de páginas físicas de las aplicaciones son disjuntos. La asignación de virtual a física es ** por aplicación ** y el TLB se vacía cuando realiza un cambio de contexto. – Borealid

+0

Pero, si las dos aplicaciones acceden directamente a los registros de control de control DMA/UART/Any h/w (¿supone que está teniendo habilitado el direccionamiento virtual)? Los programas se interfirieron ¿verdad? También, ¿dónde puedo ver la asignación de direcciones b/n de memoria virtual y física? (me refiero a la tabla de páginas MMU?) –

1

El VAX (dirección virtual eXtented por Digital Equipment Corp que se convirtió en Compaq, que se convirtió en HP) es un muy buen ejemplo de un sistema de hardware embebido virtual. Era una mini computadora de 32 bits que tenía un sistema operativo llamado VMS o Virtual Memory Systems. Dave Cutler fue uno de los principales arquitectos de los sistemas y mucho más tarde escribió Kernal para Windows NT. Él es una muy buena lectura para esto y otras cosas. El Vax tenía un hardware especial para el control del espacio virtual y el control del acceso al código de operación para la seguridad a través del hardware ... muy seguro. Este sistema fue o es el abuelo de la PC del día modfern en el nivel Kernal. El primer BSOD que vi en WNT 3.51 pude leer porque provenía del volcado de emergencia utilizado en VMS para detener el sistema cuando era inestable. Por el camino Mira el nombre VMS y WNT y encontrarás las siguientes letras en el alhabet de VMS que hace que el término WNT. Esto no fue un accidente.tal vez un golpe en DEC por dejarlo ir.

Cuestiones relacionadas