domingo, 8 de noviembre de 2015

4.2 Mecanismos y funciones de los manejadores de dispositivos: Device Drivers

El controlador es el componente más importante desde el punto de vista del sistema operativo, ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde la CPU. El Sistema Operativo generalmente trabaja con el controlador y no con el dispositivo.

Técnicas de E/S

E/S programada: El procesador emite una orden de E/S de parte de un proceso a un módulo de E/S; el proceso espera entonces a que termine la operación, antes de seguir.

E/S dirigida por interrupciones: El procesador emite una orden de E/S de parte de un proceso, continua la ejecución de las instrucciones siguientes y el módulo de E/S lo interrumpe cuan do completa su trabajo. Las instrucciones siguientes pueden ser del mismo proceso, si no es necesario para este esperar la terminación de E/S. en otro caso, el proceso se suspende a la espera de la interrupción, mientras se realiza otro trabajo.
Acceso Directo a la Memoria (DMA): un módulo de DMA controla el intercambio de datos entre la memoria principal y un módulo de E/S. El procesador envía una petición de transferencia de un bloque de datos al módulo DMA y se interrumpe solo cuando se ha transferido el bloque entero.
En la mayoría de los sistemas informáticos, el DMA es la forma dominante de transferencia ofrecida por el sistema operativo.


Sin interrupciones
Con interrupciones
Transferencia de E/S a memoria a través del procesador
E/S programada
E/S dirigida por interrupciones
Transferencia de E/S directa a memoria
Acceso directo a memoria (DMA)


Hay que recalcar que el controlador al ser una parte crítica del sistema operativo, el fallo de un controlador puede ser más grave que otros errores de software, pudiendo bloquear el ordenador o incluso dañar el hardware. Debido a que el hardware es (necesariamente) indeterminista, encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no sólo hay que monitorizar el programa, sino también el propio dispositivo.
Funciones generalmente realizadas por el software independiente del dispositivo:

·         Interfaz uniforme para los manejadores de dispositivos.
·         Nombres de los dispositivos.
·         Protección del dispositivo.
·         Proporcionar un tamaño de bloque independiente del dispositivo.
·         Uso de buffer.
·         Asignación de espacio en los dispositivos por bloques.
·         Asignación y liberación de los dispositivos de uso exclusivo.
·         Informe de errores.

Las funciones básicas del software independiente del dispositivo son:

·         Efectuar las funciones de e / s comunes a todos los dispositivos.
·         Proporcionar una interfaz uniforme del software a nivel usuario.

El software independiente del dispositivo asocia los nombres simbólicos de los dispositivos con el nombre adecuado. 

Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:

·         Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar el manejador apropiado.
·         El nodo-i contiene también el número secundario de dispositivo, que se transfiere como parámetro al manejador para determinar la unidad por leer o escribir.

El software independiente del dispositivo debe:

·         Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos discos.

·         Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios sectores físicos como un solo bloque lógico.

4.1 Dispositivos y manejadores de dispositivos: Device Drivers

Se denomina periféricos a los aparatos o dispositivos auxiliares e independientes conectados a la unidad central de procesamiento de una computadora.
Se consideran periféricos tanto a las unidades o dispositivos a través de los cuales la computadora se comunica con el mundo exterior, como a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.
Se pueden clasificar en dos grandes categorías:
  • Dispositivos de bloques: dispositivos que almacenan la información en bloques de tamaño fijo (discos)
  • Dispositivos de caracteres: maneja la información mediante un flujo de caracteres sin estructurarlos en bloques (mouse, teclado, impresora)
Las principales características de los dispositivos de bloque son:
  • La información se almacena en bloques de tamaño fijo.
  • Cada bloque tiene su propia dirección.
  • Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.
  • Se puede leer o escribir en un bloque de forma independiente de los demás, en cualquier momento.
  • Un ejemplo típico de dispositivos de bloque son los discos.
Las principales características de los dispositivos de carácter son:
  • La información se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques.
  • No se pueden utilizar direcciones.
  • No tienen una operación de búsqueda.
  • Un ejemplo típico de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.
Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos:
  • Dispositivos de interfaz de usuario. Se llama así a los dispositivos que permiten la comunicación entre los usuarios y la computadora. Dentro de este grupo se incluyen todos los dispositivos que sirven para proporcionar interfaz con el usuario, tanto para entrada (ratón, teclado, etc.) como para salida (impresoras, pantalla, etc.). Existen periféricos menos habituales, pero más sofisticados, tales como un escáner, lectores de huella digital, lectores de cinta magnética, instrumentos musicales digitales (MIDI), etc.
  • Dispositivos de almacenamiento. Se usan para proporcionar almacenamiento no volátil de datos y memoria. Su función primordial es abastecer de datos y almacenamiento a los programas que se ejecutan en la UCP. Según su capacidad y la inmediatez con que se puede acceder a los datos almacenados en estos dispositivos, se pueden dividir en almacenamiento secundario (discos y disquetes) y terciario (cintas).
  • Dispositivos de comunicaciones. Permiten conectar a la computadora con otras computadoras a través de una red. Los dos tipos de dispositivos más importantes de esta clase son los módem, para comunicación vía red telefónica, y las tarjetas de interfaz a la red, para conectar la computadora a una red de área local.

En cualquier caso, y sea como sea el controlador, su misión es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a través de una interfaz de programación bien definida. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases:
  • Adaptadores de audio (tarjetas de sonido).
  • Dispositivos de comunicación (infrarrojos, módems, etc).
  • Dispositivos de visualización; pantallas (displays).
  • Teclados.
  • Ratón (“mouse” y otros señaladores gráficos).
  • Dispositivos multimedia.
  • Dispositivos de Red.
  • Impresoras.
  • Almacenamiento
Algunos dispositivos de entrada y salida


  •    Entrada:
Ø  Teclado
Ø  Ratón
Ø  Joystick
Ø  Lápiz óptico
Ø  Micrófono
Ø  Webcam
Ø  Escáner
Ø  Escáner de código de barras
  • Salida:
Ø  Monitor
Ø  Altavoz
Ø  Auriculares
Ø  Impresora
Ø  Plotter
Ø  Proyector
  • Entrada/salida (mixtos):
Ø  Unidades de almacenamiento: CD, DVD, Blu-ray, Memory cards, Disco Duro Externo, Disco duro, Pendrive USB.
Ø  Módem
Ø  Router
Ø  Pantalla táctil
Ø  Tarjeta de red
Controladores de dispositivos
Un controlador (instaladores) de dispositivos, normalmente llamado controlador en inglés (device driver) es un programa que informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware del dispositivo y proporcionando una interfaz - posiblemente estandarizada - para usarlo. Se puede esquematizar como un manual de instrucciones que se indica al sistema operativo, cómo debe controlar y comunicarse con un dispositivo en particular. Por lo tanto es una pieza esencial, sin el cual,  no se podría usar el hardware. Los controladores de dispositivos son programas añadidos al núcleo del sistema para gestionar periféricos y dispositivos oficiales.
Existen tantos tipos de controladores como tipos de periféricos y es común más de un tipo de controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante se pueden encontrar también los proporcionados por el sistema operativo o también versiones no oficiales hechas por terceros.

Las unidades de e / s generalmente constan de:
  • Un componente mecánico.
  • Un componente electrónico, el controlador del dispositivo o adaptador.
Muchos controladores pueden manejar más de un dispositivo. El S. O. generalmente trabaja con el controlador y no con el dispositivo.
La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:
  • La comunicación es mediante un flujo de bits en serie que:
    • Comienza con un preámbulo.
    • Sigue con una serie de bits (de un sector de disco, por ej.).
    • Concluye con una suma para verificación o un código corrector de errores.
  • El preámbulo:
    • Se escribe al dar formato al disco.
    • Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.
El controlador debe:
  • Convertir el flujo de bits en serie en un bloque de bytes.
  • Efectuar cualquier corrección de errores necesaria.
  • Copiar el bloque en la memoria principal.
Cada controlador posee registros que utiliza para comunicarse con la CPU:
  • Pueden ser parte del espacio normal de direcciones de la memoria: e / s mapeada a memoria.
  • Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada controlador una parte de él.
El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.
Al aceptar el comando, la CPU puede dejar al controlador y dedicarse a otro trabajo.
Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:
  • Obtenga el control de la CPU.
  • Verifique los resultados de la operación.

Manejadores de dispositivos
Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.
Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan.
Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores.
·         El manejador explora la lista de peticiones, extrae una petición pendiente y ordena su ejecución.
·         La política de extracción de peticiones de la lista es dependiente de manejador y puede ser FIFO.
·         Una vez enviada la petición al controlador, el manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando una interrupción. Para los rápidos (pantalla, discos RAM, etcétera) responde inmediatamente.

·         Después de recibir el fin de operación, controla la existencia de errores y devuelve al nivel superior el estado de terminación de la operación. Si tiene operaciones pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le toque ejecutar después de la operación de E/S. En caso contrario se bloquea.


Cada controlador posee uno o más registros de dispositivos:
    • Se utilizan para darle los comandos.
    • Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la de:
    • Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
    • Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el manejador está ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes. 
La solicitud de e / s, por ej. Para un disco, se debe traducir de términos abstractos a términos concretos:
·         Estimar el lugar donde se encuentra en realidad el bloque solicitado.
·         Verificar si el motor de la unidad funciona.
·         Verificar si el brazo está colocado en el cilindro adecuado, etc.
·         Resumiendo: debe decidir cuáles son las operaciones necesarias del controlador y su orden.
·         Envía los comandos al controlador al escribir en los registros de dispositivo del mismo.
·         Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.
·         Al finalizar la operación debe verificar los errores.
·         Si todo está bien transferirá los datos al software independiente del dispositivo.
·         Regresa información de estado sobre los errores a quien lo llamo.
·         Inicia otra solicitud pendiente o queda en espera.



4. Andimistración de entrada y de salida.

En un tema tan importante como este, veremos cómo es el funcionamiento y la administración de entrada y salida, y es importante porque sabremos cómo es la conexión entre el hardware y el software, como es que se puede controlar un elemento físico de la computadora mediante un programa o una aplicación dentro de la computadora.
Veremos las distintas funciones en el que el sistema operativo realiza respecto a este tema, como son  los siguientes.
  • Facilitar el manejo de los dispositivos de E/S. Para ello debe ofrecer una interfaz entre los dispositivos y el resto del sistema que sea sencilla y fácil de utilizar.
  • Optimizar la E/S del sistema, proporcionando mecanismos de incremento de prestaciones donde sea necesario.
  • Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de dispositivo físico sin que sea necesario remodelar el sistema de E/S del sistema operativo.
  • Permitir la conexión de dispositivos nuevos de E/S, solventando de forma automática su instalación usando mecanismos del tipo plug&play.
  • Conexión de un dispositivo de E/S a una computadora. En el modelo de un periférico se distinguen dos elementos:
o   Periféricos o dispositivos de E/S. Elementos que se conectan a la unidad central de proceso a través de las unidades de entrada/salida. Son el componente mecánico que se conecta a la computadora.
o   Controladores de dispositivos o unidades de E/S. Se encargan de hacer la transferencia de información entre la memoria principal y los periféricos. Son el componente electrónico a través del cual se conecta el dispositivo de E/S. Tienen una conexión al bus de la computadora y otra para el dispositivo (generalmente mediante cables internos o externos).

Por lo tanto en este tema veremos un funcionamiento básico del sistema operativo, pero a veces no sabemos ni cómo es que se logra hacer.

3.4 Administración de memoria virtual

Estrategias de Obtención
Determinan cuando se debe de transferir una página o un segmento de almacenamiento secundario al primario. Las estrategias de obtención por demanda esperan a que un proceso en ejecución haga referencia a una página o un segmento antes de traer la página o el segmento de almacenamiento primario. Los esquemas de obtención anticipada intentan determinar por adelantado a cuales páginas o segmentos hará referencia un proceso.

Estrategias de Colocación
Determinan en qué lugar del almacenamiento primario se debe colocar una página o un segmento entrante. Una página entrante se puede colocar en cualquier marco de página disponible.
Estrategias de Reemplazo
Sirven para decidir cuál página o segmento se debe desplazar para dar espacio a una página o segmento entrante cuando está completamente ocupado el almacenamiento primario.

Técnicas de reemplazo de página
Las rutinas de administración de almacenamiento del Sistema operativo deben decidir que página del almacenamiento primario se debe desplazar para dejar espacio a una página entrante.
Principio de Optimalizad
Para obtener un rendimiento óptimo, la página que se debe reemplazar es aquella que tardara más tiempo en ser utilizada. Esta estrategia óptima de reemplazo se denomina OPT o MIN.

Reemplazo de Páginas aleatorio
Es una técnica sencilla. Todas las páginas que se encuentran en el almacenamiento principal tienen la misma probabilidad de ser elegidas para el reemplazo. Esta estrategia podría seleccionar cualquier página para ser reemplazada, incluyendo la siguiente página la que se hará referencia. Las decisiones de reemplazo aleatorio se dé páginas se pueden tomar rápidamente y con un número significativo de marcos de página. Es un esquema que casi no se utiliza por su enfoque aleatorio de acertar o errar.
Reemplazo de páginas de primeras entradas-primeras salidas (PEPS)
Cada página se registra en el instante que entro en el almacenamiento primario. Cuando se necesita reemplazar una página, se escoge la que ha permanecido en el almacenamiento durante el mayor tiempo.

Reemplazo de páginas de la menos reciente utilizada
Se selecciona para su reemplazo, a aquella página que no se ha sido utilizada durante mayor tiempo. La estrategia se basa en que la heurística de localidad según en el cual el pasado reciente es un buen indicador del futuro cercano, de modo que LRU exige que se marque cada página con el instante en que .se hace referencia a ella. Por el trabajo adicional que requiere no se usa a menudo en los sistemas actuales; lo que se hace es utilizar estrategias que ese aproximen a la LRU y que no ocasionen grandes costos.

Reemplazo de páginas de la menos frecuentemente utilizada (LFU)
La página por remplazar es aquella que ha sido utilizada menos frecuentemente o a la que se ha hecho referencia con menos frecuencia.
Al parecer estos esquemas de reemplazo de páginas corren cierto riesgo de tomar decisiones equivocadas. Esto sucede por el simple hecho de que no se puede predecir con precisión el futuro.
Modificaciones de PEPS; reemplazo de páginas por reloj y reemplazo de páginas con segunda oportunidad
La estrategia PEPS puede decidir reemplazar una página muy utilizada que ha permanecido en memoria durante mucho tiempo. Esta posibilidad se puede evitar reemplazando solo aquellas páginas cuyos bits de referencia valgan O.
La variante de PEPS denominada "con segunde oportunidad" examina el bit de referencia de la página más antigua; si este bit vale O, se selecciona de inmediato la página para ser reemplazada. Si el bit de referencia vale 1, se le asigna el valor O y la página se pasa al final de la lista y se considera en esencia como una página nueva; gradualmente dicha página se desplaza hacia el principio de la lista, donde será seleccionada para reemplazo solo si su bit de referencia sigue valiendo O. En esencia, esto da a la página una segunda oportunidad de permanecer en el almacenamiento principal si su bit de referencia cambia a 1 antes de que la página llegue al principio de la lista. La variación 'z' del reloj" del algoritmo de la segunda oportunidad dispone las paginas en una lista circular, en lugar de en una lista lineal.

Un apuntador a la lista se desplaza alrededor de la lista circular en la misma forma que gira la manecilla de un reloj. Cuando el bit de referencia de una página toma el valor O, el apuntador se mueve al siguiente elemento de la lista (simulando el movirl1iento de esta página al final de la lista PEPS). 

3.3 Organización de Memoria Virtual

Mediante un esquema se ejecutan programas que no se encuentran totalmente en memoria principal. Por lo tanto, un programa puede tener un tamaño mayor a la memoria física disponible.
Los métodos más comunes para poner en práctica el almacenamiento visual son:
Paginación.
Segmentación
Las direcciones referidas por un proceso se denominan Direcciones Virtuales o Lógicas (L). Por otra parte, las direcciones disponibles en memoria principal se denominan Direcciones Físicas (F).
En el momento de ejecución de los programas, las direcciones lógicas deben hacerse corresponder con las direcciones físicas, mediante una aplicación m: L ---> F, la cual se denomina Mapeo de Memoria (Zapping).
La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales. Y como en un instante dado, en la memoria solo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria.
La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física. 
Los métodos más comunes de implementación son mediante:
Técnicas de “paginación”.
Técnicas de “segmentación”.
Una combinación de ambas técnicas. 

Paginación
Cada proceso tiene su propia tabla de páginas y cuando carga todas sus páginas en la o memoria principal. Puesto que solo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la página perteneciente está presente en la memoria principal o no. Si el bit indica que la pagina está en la memoria, la entrada incluye también el número de marco para esa página.
Otro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargó en la memoria principal. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente.

Segmentación
La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (número de segmento, desplazamiento).
Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:
1.      Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuan larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.
2.      Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver a montar el conjunto de programas por completo.
3.      Se presta a la comparación entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.
4.      Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrán asignar los permisos de acceso de la forma adecuada.

Organización
Cada proceso tiene su propia tabla de segmento y que, cuando todos los segmentos se encuentran en la memoria principal, la tabla de segmentos del proceso se crea y se carga en la memoria. Cada entrada de la tabla contiene la dirección de comienzo del segmento correspondiente de la memoria principal, así como su longitud. La misma estructura se necesitara al hablar de un esquema de memoria virtual basado en la segmentación donde las entradas de la tabla de segmentos pasan a ser más complejas.
Puesto que solo algunos de los segmentos de un proceso estarán en la memoria principal, se necesita un bit en cada entrada de la tabla de segmentos para indicar si el segmento correspondiente está presente en la memoria principal. Si el bit indica que el segmento está en la memoria, la entrada incluye también la dirección de comienzo y la longitud del segmento.
Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargó por última vez en la memoria principal. Si no ha habido cambios, no será necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente
Sistema de paginación / segmentación 
La paginación y la segmentación puras son métodos de manejo de memoria bastante efectivos, aunque la mayoría de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la paginación y la segmentación.
La idea de combinar estos esquemas se debe a que de esta forma se aprovechan los conceptos de la división lógica de los programas (segmentos) con la granularidad de las páginas. De esta forma, un proceso estará repartido en la memoria real en pequeñas unidades (paginas) cuya liga son los segmentos. También es factible así el compartir segmentos a medida que las partes necesitadas de los mismos se van reverenciando (paginas).
Para comprender este esquema, nuevamente se verá cómo se traduce una dirección virtual en una localidad de memoria real. Para la paginación y segmentación puras se puede decir que el direccionamiento es `bidimensional' porque se necesitan dos valores para hallar la dirección real. 
Para el caso combinado, se puede decir que se tiene un direccionamiento
`tridimensional'.

El sistema debe contar con una tabla de procesos (TP) (Ver figura 3.3.4.1). Por cada renglón de esa tabla se tiene un número de proceso y una dirección a una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace alguna referencia a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP) se tienen los números de los segmentos que componen a ese proceso.

Por cada segmento se tiene una dirección a una tabla de páginas. Cada tabla de páginas tiene las direcciones de las páginas que componen a un solo segmento. Por ejemplo, el segmento `A' puede estar formado por las páginas reales
`a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las paginas `f','g','j','w' y `z'. Otro aspecto importante es la estrategia para cargar páginas (o segmentos) a la memoria RAM.

Se usan más comúnmente dos estrategias: cargado de páginas por demanda y cargado de páginas anticipada. La estrategia de cargado por demanda consiste en que las páginas solamente son llevadas a RAM si fueron solicitadas, es decir, si se hizo referencia a una dirección que cae dentro de ellas. 

3.2 Memorial real

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. 
Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. 
       
Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.
Cuando no existe memoria virtual no hay diferenciación entre el espacio de direcciones y la memoria real; el espacio de direcciones que puede ser usado en los programas tiene idéntico tamaño al espacio de memoria real posible. Si se utiliza memoria virtual, el espacio de direcciones disponibles para los programas es aquel determinado por el tamaño de la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real disponible (el espacio de la memoria virtual será mayor que el de la memoria real).
La organización y administración de la “memoria principal”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño de los S. O. Los términos “memoria” y “almacenamiento” se consideran equivalentes. 
        Los programas y datos deben estar en el almacenamiento principal para:
              Poderlos ejecutar.

              Referenciarlos directamente.