En informática , la memoria virtual o el almacenamiento virtual [b] es una técnica de gestión de la memoria que proporciona una "abstracción idealizada de los recursos de almacenamiento que están realmente disponibles en una máquina determinada" [3] que "crea la ilusión a los usuarios de una gran (memoria principal". [4]
El sistema operativo de la computadora , utilizando una combinación de hardware y software, asigna las direcciones de memoria utilizadas por un programa, llamadas direcciones virtuales , en direcciones físicas en la memoria de la computadora . El almacenamiento principal , visto por un proceso o tarea, aparece como un espacio de direcciones contiguo o una colección de segmentos contiguos . El sistema operativo gestiona los espacios de direcciones virtuales y la asignación de memoria real a la memoria virtual. El hardware de traducción de direcciones en la CPU, a menudo denominado unidad de gestión de memoria (MMU), traduce automáticamente las direcciones virtuales en direcciones físicas. El software dentro del sistema operativo puede ampliar estas capacidades para proporcionar un espacio de direcciones virtuales que puede exceder la capacidad de la memoria real y, por lo tanto, hacer referencia a más memoria de la que está físicamente presente en la computadora.
Los principales beneficios de la memoria virtual incluyen liberar a las aplicaciones de tener que administrar un espacio de memoria compartida, la capacidad de compartir la memoria utilizada por las bibliotecas entre los procesos, una mayor seguridad debido al aislamiento de la memoria y poder usar conceptualmente más memoria de la que podría estar disponible físicamente, utilizando la técnica de paginación o segmentación .
Propiedades
La memoria virtual facilita la programación de aplicaciones al ocultar la fragmentación de la memoria física; delegando al kernel la carga de administrar la jerarquía de memoria (eliminando la necesidad de que el programa maneje superposiciones explícitamente); y, cuando cada proceso se ejecuta en su propio espacio de direcciones dedicado, obviando la necesidad de reubicar el código del programa o acceder a la memoria con direccionamiento relativo .
La virtualización de la memoria puede considerarse una generalización del concepto de memoria virtual.
Uso
La memoria virtual es una parte integral de la arquitectura de una computadora moderna ; las implementaciones generalmente requieren soporte de hardware, generalmente en forma de una unidad de administración de memoria integrada en la CPU . Si bien no es necesario, los emuladores y las máquinas virtuales pueden emplear soporte de hardware para aumentar el rendimiento de sus implementaciones de memoria virtual. [5] Los sistemas operativos más antiguos, como los de las computadoras centrales de la década de 1960 y los de las computadoras personales de principios a mediados de la década de 1980 (por ejemplo, DOS ), [6] generalmente no tienen funcionalidad de memoria virtual, [ dudoso ] aunque las excepciones notables para mainframes de la década de 1960 incluyen:
- el supervisor Atlas para el Atlas
- EL sistema de multiprogramación para Electrologica X8 (memoria virtual basada en software sin soporte de hardware)
- MCP para Burroughs B5000
- MTS , TSS / 360 y CP / CMS para IBM System / 360 Modelo 67
- Multics para el GE 645
- El sistema operativo de tiempo compartido para RCA Spectra 70/46
y el sistema operativo de Apple Lisa es un ejemplo de un sistema operativo de computadora personal de la década de 1980 que presenta memoria virtual.
Durante la década de 1960 y principios de la de 1970, la memoria de la computadora era muy cara. La introducción de la memoria virtual brindó la posibilidad de que los sistemas de software con grandes demandas de memoria se ejecutaran en computadoras con menos memoria real. Los ahorros de esto proporcionaron un fuerte incentivo para cambiar a la memoria virtual para todos los sistemas. La capacidad adicional de proporcionar espacios de direcciones virtuales agregó otro nivel de seguridad y confiabilidad, haciendo que la memoria virtual sea aún más atractiva para el mercado.
La mayoría de los sistemas operativos modernos que admiten memoria virtual también ejecutan cada proceso en su propio espacio de direcciones dedicado . Por tanto, cada programa parece tener acceso exclusivo a la memoria virtual. Sin embargo, algunos sistemas operativos más antiguos (como OS / VS1 y OS / VS2 SVS ) e incluso los modernos (como IBM i ) son sistemas operativos de espacio de direcciones único que ejecutan todos los procesos en un espacio de direcciones único compuesto de memoria virtualizada.
Los sistemas integrados y otros sistemas informáticos de propósito especial que requieren tiempos de respuesta muy rápidos y / o muy consistentes pueden optar por no utilizar la memoria virtual debido a la disminución del determinismo ; Los sistemas de memoria virtual activan trampas impredecibles que pueden producir retrasos no deseados e impredecibles en respuesta a la entrada, especialmente si la trampa requiere que los datos se lean en la memoria principal desde la memoria secundaria. El hardware para traducir direcciones virtuales a direcciones físicas generalmente requiere un área de chip significativa para implementar, y no todos los chips utilizados en los sistemas integrados incluyen ese hardware, que es otra razón por la que algunos de esos sistemas no usan memoria virtual.
Historia
En la década de 1940 [ cita requerida ] y 1950, todos los programas más grandes tenían que contener lógica para administrar el almacenamiento primario y secundario, como la superposición . Por lo tanto, la memoria virtual se introdujo no solo para ampliar la memoria primaria, sino para hacer que dicha extensión fuera lo más fácil de usar posible para los programadores. [7] Para permitir la multiprogramación y la multitarea , muchos de los primeros sistemas dividían la memoria entre varios programas sin memoria virtual, como los primeros modelos del PDP-10 mediante registros .
Una afirmación de que el concepto de memoria virtual fue desarrollado por primera vez por el físico alemán Fritz-Rudolf Güntsch en la Technische Universität Berlin en 1956 en su tesis doctoral, Diseño lógico de una computadora digital con múltiples tambores giratorios asincrónicos y operación automática de memoria de alta velocidad [8] [9] no resiste un escrutinio cuidadoso. La computadora propuesta por Güntsch (pero nunca construida) tenía un espacio de direcciones de 10 5 palabras que se asignaban exactamente a las 10 5 palabras de los tambores, es decir , las direcciones eran direcciones reales y no había forma de mapeo indirecto, una característica clave de memoria virtual. Lo que sí inventó Güntsch fue una forma de memoria caché , ya que su memoria de alta velocidad estaba destinada a contener una copia de algunos bloques de código o datos tomados de la batería. De hecho, escribió (como se cita en la traducción [10] ): “El programador no necesita respetar la existencia de la memoria primaria (ni siquiera necesita saber que existe), ya que solo hay un tipo de direcciones ( sic ) por las cuales uno se puede programar como si solo hubiera un almacenamiento ". Esta es exactamente la situación en las computadoras con memoria caché, uno de los primeros ejemplos comerciales de los cuales fue el IBM System / 360 Modelo 85. [11] En el Modelo 85 todas las direcciones eran direcciones reales que se referían al almacén principal principal. Un almacén de caché de semiconductores, invisible para el usuario, contenía el contenido de partes del almacén principal en uso por el programa en ejecución. Esto es exactamente análogo al sistema de Güntsch, diseñado como un medio para mejorar el rendimiento, más que para resolver los problemas involucrados en la multiprogramación.
El primer sistema de memoria virtual verdadero fue el implementado en la Universidad de Manchester para crear un sistema de almacenamiento de un nivel [12] como parte de Atlas Computer . Usó un mecanismo de paginación para mapear las direcciones virtuales disponibles para el programador en la memoria real que constaba de 16,384 palabras de memoria de núcleo primario con 98,304 palabras adicionales de memoria de tambor secundaria . [13] El primer Atlas se encargó en 1962, pero en 1959 se habían desarrollado prototipos funcionales de paginación. [7] ( p2 ) [14] [15] En 1961, Burroughs Corporation lanzó de forma independiente la primera computadora comercial con memoria virtual, la B5000 , con segmentación en lugar de paginación. [16] [17]
Antes de que se pudiera implementar la memoria virtual en los sistemas operativos convencionales, era necesario abordar muchos problemas. La traducción dinámica de direcciones requería hardware especializado costoso y difícil de construir; las implementaciones iniciales ralentizaron ligeramente el acceso a la memoria. [7] Existía la preocupación de que los nuevos algoritmos de todo el sistema que utilizan almacenamiento secundario sean menos efectivos que los algoritmos específicos de la aplicación utilizados anteriormente. En 1969, el debate sobre la memoria virtual para computadoras comerciales había terminado; [7] un equipo de investigación de IBM dirigido por David Sayre demostró que su sistema de superposición de memoria virtual funcionaba consistentemente mejor que los mejores sistemas controlados manualmente. [18] A lo largo de la década de 1970, la serie IBM 370 que ejecuta sus sistemas operativos basados en almacenamiento virtual proporcionó un medio para que los usuarios empresariales migraran múltiples sistemas antiguos a menos mainframes, más potentes, que habían mejorado la relación precio / rendimiento. La primera minicomputadora que introdujo la memoria virtual fue la noruega NORD-1 ; Durante la década de 1970, otras miniordenadores implementaron memoria virtual, en particular los modelos VAX que ejecutan VMS .
La memoria virtual se introdujo en la arquitectura x86 con el modo protegido del procesador Intel 80286 , pero su técnica de intercambio de segmento escalado pobremente a tamaños de segmento más grandes. El Intel 80386 introdujo soporte de paginación debajo de la capa de segmentación existente , lo que permite que la excepción de falla de página se encadene con otras excepciones sin doble falla . Sin embargo, cargar descriptores de segmento era una operación cara, lo que hacía que los diseñadores de sistemas operativos confiaran estrictamente en la paginación en lugar de una combinación de paginación y segmentación. [ cita requerida ]
Memoria virtual paginada
Casi todas las implementaciones actuales de memoria virtual dividen un espacio de direcciones virtuales en páginas , bloques de direcciones de memoria virtual contiguas. Las páginas de los sistemas [c] contemporáneos suelen tener un tamaño mínimo de 4 kilobytes ; Los sistemas con grandes rangos de direcciones virtuales o cantidades de memoria real generalmente utilizan tamaños de página más grandes. [19]
Tablas de páginas
Las tablas de páginas se utilizan para traducir las direcciones virtuales vistas por la aplicación en direcciones físicas utilizadas por el hardware para procesar instrucciones; [20] El hardware que maneja esta traducción específica a menudo se conoce como unidad de gestión de memoria . Cada entrada en la tabla de páginas tiene una bandera que indica si la página correspondiente está en la memoria real o no. Si está en la memoria real, la entrada de la tabla de páginas contendrá la dirección de memoria real en la que se almacena la página. Cuando el hardware hace una referencia a una página, si la entrada de la tabla de páginas de la página indica que no está actualmente en la memoria real, el hardware genera una excepción de falla de página , invocando el componente supervisor de paginación del sistema operativo .
Los sistemas pueden tener una tabla de páginas para todo el sistema, tablas de páginas separadas para cada aplicación y segmento, un árbol de tablas de páginas para segmentos grandes o alguna combinación de estas. Si solo hay una tabla de páginas, las diferentes aplicaciones que se ejecutan al mismo tiempo utilizan diferentes partes de un solo rango de direcciones virtuales. Si hay varias páginas o tablas de segmentos, hay varios espacios de direcciones virtuales y aplicaciones simultáneas con tablas de páginas separadas que redirigen a diferentes direcciones reales.
Algunos sistemas anteriores con tamaños de memoria reales más pequeños, como el SDS 940 , usaban registros de páginas en lugar de tablas de páginas en la memoria para la traducción de direcciones.
Supervisor de buscapersonas
Esta parte del sistema operativo crea y administra tablas de páginas. Si el hardware genera una excepción de falla de página, el supervisor de paginación accede al almacenamiento secundario, devuelve la página que tiene la dirección virtual que resultó en la falla de página, actualiza las tablas de página para reflejar la ubicación física de la dirección virtual y le dice al mecanismo de traducción que reiniciar la solicitud.
Cuando toda la memoria física ya está en uso, el supervisor de paginación debe liberar una página en el almacenamiento primario para contener la página intercambiada. El supervisor usa uno de una variedad de algoritmos de reemplazo de página , como el que se usó menos recientemente, para determinar qué página liberar.
Páginas fijadas
Los sistemas operativos tienen áreas de memoria que están ancladas (nunca se cambian al almacenamiento secundario). Otros términos utilizados son páginas bloqueadas , fijas o cableadas . Por ejemplo, los mecanismos de interrupción se basan en una serie de punteros a sus controladores, como la finalización de E / S y el error de página . Si las páginas que contienen estos punteros o el código que invocan fueran paginables, el manejo de interrupciones se volvería mucho más complejo y consumiría más tiempo, particularmente en el caso de interrupciones por fallas de página. Por lo tanto, algunas partes de las estructuras de la tabla de páginas no se pueden paginar.
Algunas páginas pueden estar fijadas por períodos cortos de tiempo, otras pueden estar fijadas durante largos períodos de tiempo y otras pueden necesitar estar fijadas permanentemente. Por ejemplo:
- El código del supervisor de paginación y los controladores para los dispositivos de almacenamiento secundario en los que residen las páginas deben estar fijados permanentemente, ya que de lo contrario la paginación ni siquiera funcionaría porque el código necesario no estaría disponible.
- Los componentes que dependen de la sincronización se pueden anclar para evitar demoras de paginación variables.
- Los búferes de datos a los que se accede directamente por dispositivos periféricos que utilizan acceso directo a memoria o canales de E / S deben residir en páginas ancladas mientras la operación de E / S está en progreso porque dichos dispositivos y los buses a los que están conectados esperan encontrar búferes de datos ubicados en direcciones de memoria física; Independientemente de si el bus tiene una unidad de gestión de memoria para E / S , las transferencias no pueden detenerse si se produce un error de página y luego reiniciarse cuando se ha procesado el error de página.
En los sistemas operativos de IBM para System / 370 y sistemas sucesores, el término es "fijo", y dichas páginas pueden ser fijas a largo plazo, o pueden ser fijas a corto plazo, o pueden no estar fijadas (es decir, paginable). Las estructuras de control del sistema a menudo son fijas a largo plazo (medido en tiempo de reloj de pared, es decir, tiempo medido en segundos, en lugar de tiempo medido en fracciones de un segundo) mientras que los búferes de E / S suelen ser fijos a corto plazo (generalmente medidos en menos que el tiempo del reloj de pared, posiblemente durante decenas de milisegundos). De hecho, el sistema operativo tiene una función especial para "arreglar rápidamente" estos búferes de datos fijos a corto plazo (reparación que se realiza sin recurrir a una instrucción de llamada de supervisor que consume mucho tiempo ).
Multics utilizó el término "cableado". OpenVMS y Windows se refieren a las páginas que temporalmente no se pueden paginar (como para los búferes de E / S) como "bloqueadas", y simplemente "no se pueden paginar" para aquellas que nunca se pueden paginar. La Especificación Única de UNIX también usa el término "bloqueado" en la especificación de , al igual que las páginas de manual en muchos sistemas similares a Unix.mlock()
mlock()
Operación virtual-real
En OS / VS1 y sistemas operativos similares, algunas partes de la memoria del sistema se administran en modo "virtual-real", llamado "V = R". En este modo, cada dirección virtual corresponde a la misma dirección real. Este modo se usa para mecanismos de interrupción , para el supervisor de paginación y tablas de paginación en sistemas más antiguos, y para programas de aplicación que usan administración de E / S no estándar. Por ejemplo, z / OS de IBM tiene 3 modos (virtual-virtual, virtual-real y virtual-fijo). [21] [ página necesaria ]
Paliza
Cuando se utiliza la paginación y el robo de páginas , puede ocurrir un problema llamado " thrashing ", en el que la computadora pasa una cantidad de tiempo inadecuadamente grande transfiriendo páginas hacia y desde una tienda de respaldo, lo que ralentiza el trabajo útil. El conjunto de trabajo de una tarea es el conjunto mínimo de páginas que deben estar en la memoria para que pueda hacer un progreso útil. La paliza ocurre cuando no hay suficiente memoria disponible para almacenar los conjuntos de trabajo de todos los programas activos. Agregar memoria real es la respuesta más simple, pero mejorar el diseño de la aplicación, la programación y el uso de la memoria puede ayudar. Otra solución es reducir el número de tareas activas en el sistema. Esto reduce la demanda de memoria real al intercambiar todo el conjunto de trabajo de uno o más procesos.
Memoria virtual segmentada
Algunos sistemas, como el Burroughs B5500, [22] utilizan segmentación en lugar de paginación, dividiendo los espacios de direcciones virtuales en segmentos de longitud variable. Una dirección virtual aquí consta de un número de segmento y un desplazamiento dentro del segmento. El Intel 80286 admite un esquema de segmentación similar como opción, pero rara vez se usa. La segmentación y la paginación se pueden usar juntas dividiendo cada segmento en páginas; Los sistemas con esta estructura de memoria, como Multics e IBM System / 38 , suelen ser de paginación predominante y la segmentación proporciona protección a la memoria. [23] [24] [25]
En los procesadores Intel 80386 y posteriores IA-32 , los segmentos residen en un espacio de direcciones paginado lineal de 32 bits . Los segmentos se pueden mover dentro y fuera de ese espacio; las páginas allí pueden "paginar" dentro y fuera de la memoria principal, proporcionando dos niveles de memoria virtual; pocos, si es que hay alguno, los sistemas operativos lo hacen, en lugar de eso, solo utilizan la paginación. Las primeras soluciones de virtualización x86 no asistidas por hardware combinaban la paginación y la segmentación porque la paginación x86 ofrece solo dos dominios de protección, mientras que un VMM, un sistema operativo invitado o una pila de aplicaciones invitadas necesitan tres. [26] : 22 La diferencia entre los sistemas de paginación y segmentación no se trata solo de la división de la memoria; la segmentación es visible para los procesos del usuario, como parte de la semántica del modelo de memoria. Por lo tanto, en lugar de la memoria que parece un solo gran espacio, está estructurada en múltiples espacios.
Esta diferencia tiene importantes consecuencias; un segmento no es una página de longitud variable o una forma sencilla de ampliar el espacio de direcciones. La segmentación que puede proporcionar un modelo de memoria de un solo nivel en el que no hay diferenciación entre la memoria del proceso y el sistema de archivos consiste solo en una lista de segmentos (archivos) mapeados en el espacio de direcciones potencial del proceso. [27]
Esto no es lo mismo que los mecanismos proporcionados por llamadas como mmap y MapViewOfFile de Win32 , porque los punteros entre archivos no funcionan cuando se asignan archivos a lugares semi-arbitrarios. En Multics, un archivo (o un segmento de un archivo de varios segmentos) se asigna a un segmento en el espacio de direcciones, por lo que los archivos siempre se asignan en un límite de segmento. La sección de enlace de un archivo puede contener punteros para los cuales un intento de cargar el puntero en un registro o hacer una referencia indirecta a través de él causa una trampa. El puntero no resuelto contiene una indicación del nombre del segmento al que se refiere el puntero y un desplazamiento dentro del segmento; el manejador de la trampa mapea el segmento en el espacio de direcciones, coloca el número de segmento en el puntero, cambia el campo de etiqueta en el puntero para que ya no cause una trampa y regresa al código donde ocurrió la trampa, volviendo a ejecutar la instrucción que causó la trampa. [28] Esto elimina la necesidad de un enlazador por completo [7] y funciona cuando diferentes procesos mapean el mismo archivo en diferentes lugares en sus espacios de direcciones privados. [29]
Intercambio de espacio de direcciones
Algunos sistemas operativos permiten intercambiar espacios de direcciones completos , además de las facilidades que tengan para la paginación y la segmentación. Cuando esto ocurre, el sistema operativo escribe esas páginas y segmentos que se encuentran actualmente en la memoria real para intercambiar archivos. En un intercambio, el sistema operativo vuelve a leer los datos de los archivos de intercambio, pero no lee automáticamente las páginas que se habían paginado en el momento de la operación de intercambio.
MVS de IBM , desde OS / VS2 Release 2 hasta z / OS , permite marcar un espacio de direcciones como no intercambiable; al hacerlo, no se anclarán páginas en el espacio de direcciones. Esto se puede hacer mientras dure un trabajo ingresando el nombre de un programa principal elegible [30] en la Tabla de propiedades del programa con un indicador no intercambiable. Además, el código privilegiado puede convertir temporalmente un espacio de direcciones en no intercambiable mediante una instrucción de llamada de supervisor de SYSEVENT (SVC); ciertos cambios [31] en las propiedades del espacio de direcciones requieren que el sistema operativo lo cambie y luego lo vuelva a colocar, usando SYSEVENT TRANSWAP. [32]
El intercambio no requiere necesariamente hardware de administración de memoria si, por ejemplo, se intercambian varios trabajos dentro y fuera de la misma área de almacenamiento.
Ver también
- Diseño de CPU
- Página (informática)
- Algoritmos de caché
- Asignación de memoria
- Gestión de memoria (sistemas operativos)
- Modo protegido , un modo x86 que permite memoria virtual.
- Memoria fijada CUDA
- Arquitectura de sistema heterogénea , una serie de especificaciones destinadas a unificar la RAM y la memoria de la tarjeta gráfica.
- Virtualización de almacenamiento
Notas
- ^ Los primeros sistemas usaban tambores ; Los sistemas contemporáneos utilizan discos o memoria de estado sólido.
- ^ IBM utiliza el término almacenamiento virtual en sistemas operativos de mainframe. Este uso se ejecuta desde TSS [1] en 360/67 hasta z / OS , [2] en z / Architecture .
- ^ IBM DOS / VS , OS / VS1 y DOS / VS solo admitían páginas de 2 KB.
Referencias
- ^ "COMPONENTES DEL SISTEMA: Reubicación dinámica" (PDF) . Sistema / 360 Modelo 67 Resumen técnico preliminar del sistema de tiempo compartido (PDF) . IBM. 1966. p. 21. C20-1647-0.
- ^ "BCP (Programa de control básico)" (PDF) . z / OS Version 2 Release 4 z / OS Introduction and Release Guide (PDF) . IBM. 22 de septiembre de 2020. p. 3. GA32-0887-40.
- ^ Bhattacharjee, Abhishek; Lustig, Daniel (2017). Soporte de arquitectura y sistema operativo para memoria virtual . Editores Morgan & Claypool. pag. 1. ISBN 9781627056021. Consultado el 16 de octubre de 2017 .
- ^ Haldar, Sibsankar; Aravind, Alex Alagarsamy (2010). Sistemas operativos . Pearson Education India. pag. 269. ISBN 978-8131730225. Consultado el 16 de octubre de 2017 .
- ^ "Paginación anidada AMD-V ™" (PDF) . AMD . Consultado el 28 de abril de 2015 .
- ^ "Historial de versiones de Windows" . Microsoft. 23 de septiembre de 2011 . Consultado el 9 de marzo de 2015 .
- ^ a b c d e Denning, Peter (1997). "Antes de que la memoria fuera virtual" (PDF) . En el principio: recuerdos de los pioneros del software .
- ^ Jessen, Elke (2004). "Origen del concepto de memoria virtual". IEEE Annals of the History of Computing . 26 (4): 71–72.
- ^ Jessen, E. (1996). "Die Entwicklung des virtuellen Speichers". Informatik-Spektrum (en alemán). 19 (4): 216–219. doi : 10.1007 / s002870050034 . ISSN 0170-6012 . S2CID 11514875 .
- ^ Jessen (2004) .
- ^ Liptay, JS (1968), "Structural Aspects of the System / 360 Model 85 - The Cache", IBM Systems Journal , 7 : 15-21, doi : 10.1147 / sj.71.0015
- ^ Kilburn, T .; Edwards, DBG; Lanigan, MJ; Sumner, FH (1962), "Sistema de almacenamiento de un nivel", IRE Trans EC-11 (2): 223–235, doi : 10.1109 / TEC.1962.5219356
- ^ "Ferranti Atlas 1 y 2 - Arquitectura de sistemas" (PDF) . 12 de noviembre de 2009.
- ^ RJ Creasy, " El origen del sistema de tiempo compartido VM / 370 ", IBM Journal of Research & Development , vol. 25, núm. 5 (septiembre de 1981), pág. 486
- ^ "El Atlas" . Archivado desde el original el 6 de octubre de 2014.
- ^ Ian Joyner sobre Burroughs B5000
- ^ Cragon, Harvey G. (1996). Sistemas de memoria y procesadores canalizados . Jones y Bartlett Publishers. pag. 113. ISBN 978-0-86720-474-2.
- ^ Sayre, D. (1969). "¿Es el" plegado "automático de programas lo suficientemente eficiente como para desplazar al manual?". Comunicaciones de la ACM . 12 (12): 656–660. doi : 10.1145 / 363626.363629 . S2CID 15655353 .
- ^ Quintero, Dino; et al. (1 de mayo de 2013). IBM Power Systems Performance Guide: implementación y optimización . IBM Corporation. pag. 138. ISBN 978-0738437668. Consultado el 18 de julio de 2017 .
- ^ Sharma, Dp (2009). Fundación de sistemas operativos . Excel Books India. pag. 62. ISBN 978-81-7446-626-6. Consultado el 18 de julio de 2017 .
- ^ "Centro de información de habilidades básicas de z / OS: conceptos de z / OS" (PDF) .
- ^ Burroughs (1964). Manual de referencia del sistema de procesamiento de información Burroughs B5500 (PDF) . Corporación Burroughs . 1021326 . Consultado el 28 de noviembre de 2013 .
- ^ Manual del sistema GE-645 (PDF) . Enero de 1968. págs. 21-30 . Consultado el 28 de abril de 2015 .
- ^ Corbató, FJ ; Vyssotsky, VA "Introducción y descripción general del sistema Multics" . Consultado el 13 de noviembre de 2007 .
- ^ Glaser, Edward L .; Couleur, John F. & Oliver, GA "Diseño de sistema de una computadora para aplicaciones de tiempo compartido" .
- ^ "JE Smith, R. Uhlig (14 de agosto de 2005) Máquinas virtuales: arquitecturas, implementaciones y aplicaciones , HOTCHIPS 17, Tutorial 1, parte 2" (PDF) .
- ^ Bensoussan, André; Clingen, CharlesT .; Daley, Robert C. (mayo de 1972). "La Memoria Virtual Multics: Conceptos y Diseño" . Comunicaciones de la ACM . 15 (5): 308–318. CiteSeerX 10.1.1.10.6731 . doi : 10.1145 / 355602.361306 . S2CID 6434322 .
- ^ "Entorno de ejecución de Multics" . Multicians.org . Consultado el 9 de octubre de 2016 .
- ^ Organick, Elliott I. (1972). El sistema Multics: un examen de su estructura . MIT Press. ISBN 978-0-262-15012-5.
- ^ El requisito más importante es que el programa esté autorizado por APF.
- ^ p. ej., solicitar el uso de la memoria preferida
- ^ "Control de intercambio (DONTSWAP, OKSWAP, TRANSWAP)" . Centro de conocimiento de IBM . Programación z / OS MVS: Referencia de servicios de ensamblador autorizado SET-WTO SA23-1375-00. 1990-2014 . Consultado el 9 de octubre de 2016 .
Otras lecturas
- Hennessy, John L .; y Patterson, David A .; Arquitectura informática, un enfoque cuantitativo ( ISBN 1-55860-724-2 )
enlaces externos
- Sistemas operativos: tres piezas fáciles , por Remzi H. Arpaci-Dusseau y Andrea C. Arpaci-Dusseau. Libros de Arpaci-Dusseau, 2014. Capítulos relevantes: Espacios de direcciones Segmentación de traducción de direcciones Introducción a las TLB de paginación Intercambio de tablas de páginas avanzadas : Intercambio de mecanismos : Políticas
- "Programas de supervisión de tiempo compartido" por Michael T. Alexander en Temas avanzados en programación de sistemas , Conferencia de verano de ingeniería de la Universidad de Michigan 1970 (revisada en mayo de 1971), compara los enfoques de asignación de recursos y programación, incluida la memoria virtual y la paginación, utilizados en cuatro computadoras centrales sistemas operativos: CP-67 , TSS / 360 , MTS y Multics .
- LinuxMM: Gestión de memoria de Linux .
- Nacimiento del kernel de Linux , discusión de la lista de correo.
- The Virtual-Memory Manager en Windows NT, Randy Kath, Microsoft Developer Network Technology Group, 12 de diciembre de 1992 en Wayback Machine (archivado el 22 de junio de 2010)