3- Administración de Entrada y Salida
La parte del sistema operativo que administra la memoria se llama administrador de la memoria. Para ello existen diferentes esquemas de administración de memoria desde los más simples hasta los más elaborados.
3.1 Política y Filosofía
FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La política FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad, a estos se les podría aplicar FIFO.
Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos.
SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.
SRT (Sortest remaining time scheduling – Tiempo restante más corto): En SJF una vez que un proceso comienza su ejecución continua hasta terminar. En SRT, un proceso en ejecución puede ser desposeído por uno nuevo de menor tiempo de ejecución.
HRN: (highest response ratio next – Prioridad de la tasa de respuesta más alta): Política no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para así no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en función del tiempo de servicio sino también del tiempo que ha esperado para ser atendido.
3.2 Memoria 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.
3.2.1 Administración de Almacenamiento
Si hay una cosa que toma la mayor parte del día de un administrador de sistemas, esto es la administración del almacenamiento. Pareciera que los discos nunca tienen espacio suficiente, que se sobrecargan con actividad de E/S o que fallan repentinamente. Por eso es vital tener un conocimiento práctico sólido del almacenamiento en disco para poder ser un administrador de sistemas exitoso. Una vista general del hardware de almacenamiento. Antes de administrar el almacenamiento, primero es necesario entender el hardware en el que están almacenados los datos. A menos que posea un algún conocimiento sobre la operación de los dispositivos de almacenamiento masivo, quizás se encuentre en una situación donde tenga un problema relacionado al almacenamiento pero le falte el conocimiento de fondo para si quiera entender lo que ve. Al tener un entendimiento sobre la forma en que opera el hardware subyacente, podrá más fácilmente determinar si el subsistema de almacenamiento de su computador está funcionando correctamente.
La gran mayoría de los dispositivos de almacenamiento masivo utilizan alguna forma de media de rotación y soportan el acceso aleatorio de los datos en esa media. Esto significa que los componentes siguientes están presentes en alguna forma dentro de casi todos los dispositivos de almacenamiento masivo:
Plato del disco
Dispositivo de lectura/escritura de datos
Brazos de acceso
3.2.2 Jerarquía
Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles, que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias. Los puntos básicos relacionados con la memoria pueden resumirse en:
Cantidad
Velocidad
Coste
La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer operandos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible. Como puede esperarse los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son válidas:
A menor tiempo de acceso mayor coste
A mayor capacidad mayor coste
A mayor capacidad menor velocidad.
Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida.
Jerarquía de Memoria
3.2.3 Estrategia de Administración de Memoria
Estrategias de Administración del Almacenamiento Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal [7, Deitel]. Se dividen en las siguientes categorías:
Estrategias de búsqueda o Estrategias de búsqueda por demanda. o Estrategias de búsqueda anticipada.
Estrategias de colocación.
Estrategias de reposición.
Las “estrategias de búsqueda” están relacionadas con el hecho de cuándo obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.
En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia. Se considera que la “búsqueda anticipada” puede producir un mejor rendimiento del sistema.
Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará) un programa nuevo.
Las “estrategias de reposición” están relacionadas con la determinación de qué fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.
Asignación Contigua de Almacenamiento Versus No Contigua
En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento.
En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua.
Asignación Contigua de Almacenamiento de Un Solo Usuario. Se consideran S. O. que ya poseen desarrollado el “sistema de control de entrada / salida”: IOCS: input / output control system
Administración de Memoria
3.2.4 Asignación Contigua vs No Contigua
En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento.
En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua.
3.2.5 Multiprogramación de Participación fija y variable, con intercambio de Almacenamiento
Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al “mismo tiempo” (seudo-paralelismo, en una única CPU sólo puede haber un proceso a la vez) en la unidad central de proceso o CPU. Aporta las siguientes ventajas:
La ya mencionada, varios procesos en ejecución. Permite el servicio interactivo simultáneo a varios usuarios de manera eficiente.
Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/S
Aumenta el uso de la CPU.
Las direcciones de los procesos son relativas, el programador no se preocupa por saber en dónde estará el proceso dado que el sistema operativo es el que se encarga de convertir la dirección lógica en física.
Un proceso entra a ejecutarse y llega al momento en que tiene que hacer espera por un dispositivo de entrada y/o salida por ejemplo, el CPU estará ocioso mientras espera que el proceso pueda usar el dispositivo para así finalmente ejecutarse. Los sistemas de multiprogramación evitan eso ya que durante ese tiempo de esperar pasan a ejecutar otro proceso teniendo así al computador ocupado.
3.3 Organización de Memoria Virtual
Memoria Virtual
La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una maquina. Esta ilusión permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física.
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 mas 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
3.3.1 Evaluación de las Organizaciones de Almacenamiento
Almacenamiento virtual "significa la capacidad de direccional un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación”. Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.
Los métodos más comunes de implementación son mediante:
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.
Las direcciones generadas por los programas en su ejecución no son, necesariamente, aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen seleccionarse dentro de un número mucho mayor de direcciones que las disponibles dentro del almacenamiento primario.
3.3.2 Paginación
En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.
3.3.3 Segmentación
En un esquema de segmentación un espacio de direcciones lógicas es un conjunto de segmentos. Cada segmento tendrá un nombre y un largo. Las direcciones van a hacer referencia tanto al nombre como al desplazamiento dentro del segmento.
<nro. Segmento, desplazamiento>
Mecanismo de traducción de direcciones.-
Se lleva una tabla de segmento por cada proceso, cada entrada a la tabla de segmento lleva la siguiente información: segment base (dirección base del segmento) Segment limit (largo del segmento)
Protección.-
La protección se asegura verificando cada acceso a la memoria con la tabla de segmentos para asegurar que se está direccionando dentro del espacio de direcciones lógicas del proceso. Además el mecanismo de traducción de direcciones asegura que no se direccione fuera de un segmento en particular. Existen también bits de protección para cada entrada de la tabla de segmentos que indicaran si el segmento es read only o read-write.
Segmentos Compartidos.-
Similar a lo visto para paginación. Se comparte la totalidad de un segmento
Fragmentación.-
El sistema operativo deberá asignar memoria utilizando algunos algoritmos ya vistos (first fit, worst fit, best fit) Cuando el sistema operativo intenta cargar un segmento y no hay ningún segmento disponible de tamaño suficiente para almacenarlo se procederá a compactar la memoria.
3.3.4 Sistemas de paginación Segmentación
Sistemas de Paginación / Segmentación
Ofrecen las ventajas de las dos técnicas de organización del almacenamiento virtual [7, Deitel]. El tamaño de los segmentos es múltiplo del de las páginas.
No es necesario que todas las páginas de un segmento se encuentren al mismo tiempo en el almacenamiento primario.
Las páginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real.
El direccionamiento es tridimensional con una dirección de almacenamiento virtual “v = (s,p,d)”:
“s” es el número del segmento.
“p” es el número de página.
“d” es el desplazamiento en la página donde se encuentra asignado el elemento deseado.
SEGMENTACION/PAGINACION
Tanto la Segmentación como la paginación ofrecen significativas ventajas, algunos sistemas (Multics y la Serie 370 de IBM) combinan ambas técnicas en donde los segmentos tienen un tamaño multiplo de página.
Este método utiliza Segmentación y Paginación tal y como su nombre lo indica, el proceso es el siguiente: - Se hace la solicitud de acceso por medio de una dirección “V” la cual contiene los campos Segmento, Página y Desplazamiento. Con el campo Segmento, lo que se trata es de accesar a una Tabla de segmentos, cada campo de dicha tabla apunta directamente a la tabla de páginas asignada para ese segmento conteniendo una dirección que será sumada a una dirección en la Tabla Asociativa para por fin formar una dirección real con el desplazamiento de “V”.
En un sistema con un número muy grande de procesos, segmentos o páginas, ésta estructura puede consumir una parte muy importante de la memoria real. La cuestión es que la traducción de direcciones puede realizarse con rapidez pero si se tienen demasiadas tablas, el sistema puede soportar menos procesos y bajar su rendimiento.
Sistema de paginación
Los sistemas de paginación son los utilizados para dividir los programas en páginas y así poder utilizar programas de mayor tamaño que la memoria principal, ya que las paginas no son cargadas todas a la vez en la memoria principal. l traspaso de datos entre los distintos niveles de almacenamiento se realiza eventualmente en páginas de longitud fija, tal y como ocurre en la actualidad en los sistemas de memoria virtual. El tamaño de la página es un parámetro del sistema y no está determinado por las longitudes de registro elegidas por los programadores. Al usarse la paginación, los datos serán lógicamente independientes del tamaño de página, pero tendrán que ser físicamente “empaquetados” para que encajen en las páginas.
En los casos en que se usa hardware de almacenamiento a niveles múltiples, el traspaso se hace por bloques, semejantes a las páginas. Esta técnica se conoce con el nombre de promoción o staging.
Segmentación
El objetivo de la segmentación al igual que el de la paginación es el de dar la facilidad de realizar programas que sean más grandes que la memoria principal, pero la segmentación, a diferencia de la paginación, puede dividir los programas en segmentos que no necesariamente sean del mismo tamaño, pero para poder cargar un segmento en memoria al igual que para cargar una página debe de existir el suficiente espacio contiguo de memoria principal para cargarlo.
La segmentación en ocasiones puede ser usada al mismo tiempo que la paginación.
3.4 Administración de Memoria Virtual
Las diferentes organizaciones de almacenamiento virtual generalmente implementadas son [7, Deitel]:
Paginación.
Segmentación.
Segmentación y paginación.
Las estrategias para la administración de sistemas de almacenamiento virtual condicionan la conducta de los sistemas de almacenamiento virtual que operan según esas estrategias. Se consideran las siguientes estrategias:
“Estrategias de búsqueda”:
Tratan de los casos en que una página o segmento deben ser traídos del almacenamiento secundario al primario. Las estrategias de “búsqueda por demanda” esperan a que se haga referencia a una página o segmento por un proceso antes de traerlos al almacenamiento primario. Los esquemas de “búsqueda anticipada” intentan determinar por adelantado a qué páginas o segmentos hará referencia un proceso para traerlos al almacenamiento primario antes de ser explícitamente referenciados.
“Estrategias de colocación”:
Tratan del lugar del almacenamiento primario donde se colocará una nueva página o segmento. Los sistemas toman las decisiones de colocación de una forma trivial ya que una nueva página puede ser colocada dentro de cualquier marco de página disponible.
“Estrategias de reposición”:
o Tratan de la decisión de cuál página o segmento desplazar para hacer sitio a una nueva página o segmento cuando el almacenamiento primario está completamente comprometido.
3.4.1 Estrategia de Administración
Es un método mediante el cual, un sistema operativo simula tener más memoria principal que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la máquina. Un sistema de memoria virtual se implementa utilizando paginación como método de administración de memoria básica y algún mecanismo de intercambio (para descargar páginas de la memoria principal hacia el disco duro y para cargar esas páginas de nuevo a la memoria).
3.4.2 Técnicas de Reemplazo de Paginas
Estrategias de Reemplazo de página:
Principio de Optimalizad: Para obtener un rendimiento óptimo, la página que se debe reemplazar es aquella que tardará 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 de 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.
3.4.3 Paginación por Demanda
Un sistema de paginación por demanda es similar a un sistema de paginación con intercambios. Los procesos residen en memoria secundaria (en el disco). Cuando queremos ejecutar un proceso, lo metemos en memoria. Sin embargo, en vez de intercambiar todo el proceso hacia la memoria, utilizamos un intercambiador perezoso. Un intercambiador perezoso nunca reincorpora una página a memoria a menos que se necesite. Como ahora consideramos un proceso como una secuencia de páginas, en vez de un gran espacio contiguo de direcciones, el término intercambio es técnicamente incorrecto. Un intercambiador manipula procesos enteros, mientras que un paginador trata con las páginas individualmente de un proceso.
3.4.4 Paginación Anticipada
¿Qué es la paginación anticipada?
En la paginación anticipada, el sistema operativo intenta predecir las páginas que necesitara un proceso y entonces carga dichas cuando hay espacio disponible.
Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga las demás páginas que estarán disponibles cuando las requiera el proceso.
El S. O. intenta predecir las páginas que un proceso va a necesitar y a continuación precarga estas páginas cuando hay espacio disponible Mientras el proceso ejecuta sus páginas actuales, el sistema carga paginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede reducir.
3.4.5 Liberación de Página
Un proceso usuario puede emitir una “liberación voluntaria de página” para liberar el marco de página cuando ya no necesitara esa página. Se puede eliminar el “desperdicio” y acelerar la ejecución. El inconveniente es que la incorporación de mandatos de liberación de páginas dentro de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones. “Los compiladores y S. O. deberían detectar automáticamente situaciones de liberación de página mucho antes de lo que es posible con estrategias de conjuntos de trabajo”. Estrategias de reemplazo de páginas
Menos frecuentemente utilizada (LFU)
Se reemplaza la página a la que se ha hecho referencia con menos frecuencia.
No utilizada recientemente (NUR)
Las páginas no utilizadas recientemente, es poco probable que sean referenciadas en un futuro cercano. Por ello se las elige para el reemplazo.
3.4.6 Tamaño de Página
Al diseñar una máquina hay que tomar una decisión sobre el mejor tamaño de página. Como podrá suponer, no hay un tamaño único que sea el mejor, pero existen varios factores que apoyan tamaños distintos. Los tamaños son invariablemente potencias de dos, que suelen ir de 512 (29) a 16384 (214) bytes.
¿Cómo seleccionamos el tamaño de página? Un factor es el tamaño de la tabla de páginas. Para un espacio de memoria virtual establecido, al reducir el tamaño aumenta el número de páginas y, por tanto, el tamaño de la tabla de páginas. Para una memoria virtual de 4 MB habría 4096 páginas de 1K bytes, pero sólo 512 páginas de 8192 bytes. Como cada proceso activo debe tener su propia tabla de páginas, sería deseable un tamaño de página grande.
Por otra parte, la memoria se utiliza mejor con páginas pequeñas. Una parte de la última página estará asignada pero no totalmente ocupada (fragmentación interna). Suponiendo que los tamaños de los procesos y de la página son independientes, podemos esperar que, en promedio, se desperdiciara la mitad de la última página de cada proceso. Esta pérdida representaría sólo 256 bytes en una página de 512 bytes, pero serían 4096 bytes en una página de 8192. Para minimizar la fragmentación interna necesitamos un tamaño de página pequeño. Otro problema es el tiempo necesario para leer o escribir una página. El tiempo de E/S está compuesto por tiempo de búsqueda, latencia y transferencia.








