sábado, 23 de mayo de 2015
viernes, 22 de mayo de 2015
HIPERPAGINACIÓN
Si el número de marcos asignados a un proceso de baja prioridad
desciende por debajo del número mínimo requerido por la arquitectura del
computador, debemos suspender la ejecución de ese proceso. Luego debemos
descargar sus páginas restantes, liberando los marcos asignados. En general, cualquier
proceso que no cuente con marcos suficientes provocará fallos de página muy
frecuentemente. Si se reemplazan páginas que a su vez están activas, estaremos
sustituyendo una página que casi de inmediato se volverá a necesitar. Por
tanto, pronto vuelve a generarse otro fallo de página, ocurriendo esto una y
otra vez. A esta altísima actividad de paginación se le llama hiperpaginación
(thrashing). Un sistema está en hiperpaginación si emplea más tiempo paginando
que ejecutando.
La hiperpaginación ocasiona severos problemas de rendimiento. Considere la siguiente situación, basada en el comportamiento real de los primeros sistemas de paginación.
El sistema operativo supervisa la utilización de la CPU. Si ésta
es demasiado baja, aumentamos el nivel de multiprogramación introduciendo un
nuevo proceso en el sistema. Se emplea un algoritmo de reemplazo
de páginas global, que reemplaza páginas sin importar a qué procesos
pertenezcan. Suponga ahora que un proceso entra en una nueva fase de su
ejecución y necesita más marcos. Comienza a generar fallos de página y a tomar
páginas de otros procesos. Sin embargo, estos procesos necesitan esas páginas,
por lo que también fallan, tomando páginas de otros procesos. Todos estos
procesos generando fallos de página deben usar el dispositivo de paginación
para intercambiar las páginas. A medida que se colocan en la cola del dispositivo de paginación, la cola procesos
listos se vacía.
Mientras los procesos están bloqueados en espera del dispositivo de paginación,
la utilización de la CPU decrece.
El planificador de la CPU ve disminuir la utilización
de ésta y, por tanto, incrementa el nivel de multiprogramación. El nuevo
proceso trata de comenzar tomando páginas de los procesos en ejecución, lo que
ocasiona más fallos de página y una cola más larga para el dispositivo de
paginación. Y se vuelven a repetir los pasos descritos. Ha comenzado la
hiperpaginación y se desploma la productividad del sistema. La tasa de fallos
de página aumenta tremendamente y, como resultado, se incrementa el tiempo
efectivo de acceso a memoria. No se efectúa ningún trabajo porque el sistema
operativo está continuamente paginando.
Los efectos de la
hiperpaginación se pueden limitar utilizando un algoritmo de reemplazo local (o por prioridades). Con el reemplazo
local, si un proceso comienza a hiperpaginar, no puede robar marcos de otro
proceso y provocar que este también entre en hiperpaginación. Sin embargo, si
los procesos están en hiperpaginación, la mayor parte del tiempo pueden
encontrarse en la cola del dispositivo de paginación. El tiempo promedio de servicio de
un fallo de página aumenta y, por tanto, el tiempo efectivo de acceso aumenta
incluso para un proceso que no esté en hiperpaginación. Para evitar la hiperpaginación
debemos ofrecer a un proceso todos los marcos que necesita; pero, ¿cómo sabemos
cuántos necesitan? Para saberlo se utilizan técnicas como el modelo del
conjunto de trabajo, que se basa el concepto de localidad de la ejecución de
procesos.
Frecuencia de Fallos de Página
El
modelo del conjunto de trabajo tiene bastante éxito, y el conocimiento del
conjunto puede resultar útil para la prepaginación, pero parece ser una manera bastante
torpe de controlar la hiperpaginación. La estrategia de frecuencia de fallos de
página sigue un camino más directo.
http://lsi.vc.ehu.es/pablogn/docencia/manuales/SO/TemasSOuJaen/MEMORIAVIRTUAL/Image23.gif |
http://lsi.vc.ehu.es/pablogn/docencia/manuales/SO/TemasSOuJaen/MEMORIAVIRTUAL/6Hiperpaginacion.htm
POLITICAS DE REUBICACIÓN Y REEMPLAZO
La política de reubicación se refiere a la capacidad de cargar y ejecutar un programa determinado en la posición arbitraria de memoria en contraposición a un conjunto fijo de posiciones especificadas durante la compilación de dicho programa. Las instrucciones de un proceso cargado en memoria contendrán referencias a posiciones de memoria de dos tipos.
Referencias a Posiciones de Memoria
- Referencia a datos empleados en instrucciones de carga, almacenamiento y algunas instrucciones aritmético-lógicas.
- Referencias a otras instrucciones empleadas fundamentalmente en bifurcaciones de control de flujo o en instrucciones de llamadas.
Ambos tipos de direcciones no serán fijas durante todo el periodo de permanencia del proceso en el sistema, sino que puedan avisar si el proceso es suspendido y cargado posteriormente en memoria o simplemente, si es desplazado dentro de esta, distinguiremos los dos tipos de direcciones.
- Una dirección lógica o virtual es un identificador utilizado para referenciar información dentro del espacio de direcciones de un programa y por tanto es independiente de la asignación actual de datos a memoria debiendose realizar una traducción a dirección física antes de poder realizar un acceso a memoria.
- Una dirección física o absoluta designa a una posición real de memoria física donde se almacena información en tiempo de ejecución.
Tipos de Esquemas
Dependiendo de cómo y cuándo tenga lugar la traducción del espacio de
direcciones virtuales al espacio de direcciones físicas en un esquema de
reubicación determinado, pueden considerarse dos tipos básicos de estrategias:
- Reubicación
Estática
- Reubicación Dinámica.
Reubicación Estática
Implica generalmente que la reubicación es realizada antes o durante la
carga del proceso en memoria. Las constantes (valores literales), los
desplazamientos relativos al PC, no dependen de esta condición y no necesitan
ser ajustados durante la reubicación.
Reubicación Dinámica
Implica que la correspondencia entre el espacio de direcciones virtuales
y el espacio de direcciones físicas se efectúa en tiempo de ejecución.
Usualmente con asistencia del hardware. Cuando el proceso en cuestión está siendo ejecutado, todas sus
referencias a memoria son reubicadas durante la ejecución antes de acceder
realmente a la memoria física.
Imagen tomada y modificada de la presentación de Diego Alejandro Garcia |
Política de Ubicación
La política
de ubicación tiene que ver con determinar donde va a residir una parte del
proceso en memoria principal.
En un sistema
de segmentación puro, la política de ubicación es un aspecto muy importante de
diseño, teniendo como posibles alternativas las políticas de mejor ajuste,
primer ajuste y siguiente ajuste.
Política
Optima
Esta Política
selecciona para reemplazar la pagina que tiene que esperar mas tiempo hasta que
se produzca la referencia siguiente. Se puede demostrar que esta política
genera el menor numero de fallos de pagina, sin embargo, este algoritmo resulta
imposible de implementar porque requiere que el SO tenga un conocimiento exacto
de los sucesos futuros.
Esquema
de Política
Optima para el caso propuesto
|
Política de Remplazo
Cuando todos
los marcos de memoria principal están ocupados y es necesario traer a memoria
una nueva pagina para atender un fallo de pagina.
La política
se encarga de seleccionar la pagina a reemplazar de entre las que se encuentren
actualmente en memoria.
http://es.slideshare.net/Eborda/exp-so-politicas
PARTICIONES FIJAS Y DINAMICAS
Particiones Fijas
ESTRATEGIAS DE LA PARTICIÓN
Siguiente ajuste: El siguiente bloque disponible que ubique (parte desde la ubicación actual)
https://noridappr89.wordpress.com/2013/05/21/segunda-exposicion-particiones-fijas-y-dinamicas/
http://es.scribd.com/doc/58833109/particion-dinamica#scribd
https://html2-f.scribdassets.com/254coochfk10qphe/images/4-a6cf18cb57.jpg
Consiste en dividir la memoria libre en varias partes de igual tamaño o diferentes tamaños, un programa puede ser demasiado grande para caber en la partición, en este caso el programador debe diseñar el programa mediante superposiciones para que solo una parte del programa este en memoria principal.
En el caso de las particiones de igual tamaño, si todas las particiones estuvieran ocupadas con procesos que no están listos para ejecutar y necesitan cargarse un nuevo proceso, debe determinarse que partición expulsarse de la memoria.
http://files.sis-operativo.webnode.com.co/200000043-e30efe501a/particion.png |
Particiones Dinámicas
Las partición en este caso son variables en número y longitud, esto significa que cuando se carga un proceso a memoria principal se le asigna el espacio que necesita en ella.
Efectos de las Particiones Dinámica
Asignación de Memoria con
Particiones Dinámicas
La asignación de memoria es un esquema con particiones dinámicas consiste en determinar en que lugar ubicar un nuevo proceso, para esto existe tres algoritmos:
- Mejor ajuste: Consiste en ubicar el proceso en el espacio de memoria que más se ajuste a su tamaño.
- Primer ajuste: Consiste en ubicar el proceso en el primer lugar disponible, recorriendo desde el inicio de la memoria cuyo tamaño sea suficiente para el proceso.
- Próximo ajuste: Consiste en ubicar el siguiente lugar disponible, que sea suficientemente grande a partir de la ultima asignación de memoria.
http://files.sis-operativo.webnode.com.co/200000044-e86a6e9640/pd.JPG |
- Solicitud: por Demanda
- Ubicación:
Siguiente ajuste: El siguiente bloque disponible que ubique (parte desde la ubicación actual)
Mejor ajuste: El bloque disponible que deje el menor espacio libre (búsqueda exhaustiva).
- Reemplazo: Uno de los procesos se saca según el planificador.
- Primer ajuste: Es bueno con baja compactación, puebla el inicio de la memoria.
- Siguiente ajuste: Puebla el final de la memoria, el siguiente bloque libre siempre esta al final de la memoria.
https://noridappr89.wordpress.com/2013/05/21/segunda-exposicion-particiones-fijas-y-dinamicas/
http://es.scribd.com/doc/58833109/particion-dinamica#scribd
https://html2-f.scribdassets.com/254coochfk10qphe/images/4-a6cf18cb57.jpg
FUNCIÓN DE INTERCAMBIO
La necesidad de atender diferentes
procesos en formas concurrente fomento el desarrollo de la función de
intercambio. Consiste
en extraer del procesador un proceso que está en ejecución haciendo un registro
del estado del proceso y guardándolo en memoria secundaria, para poder ser
retomado desde el punto hasta donde fue ejecutado.
Memoria Virtual
Es una técnica de gestión de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria que esté disponible físicamente. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad.
http://es.wikipedia.org/wiki/Memoria_virtual#/media/File:Virtual_address_space_and_physical_address_space_relationship.svg |
ALGORITMO DE UBICACIÓN
En particiones del mismo tamaño, cuando ahí alguna partición libre, puede cargarse un proceso en esta partición, si todas las particiones están ocupadas, con procesos que no están listos para ejecutarse, uno de estos se saca y da paso a un nuevo proceso, esta decisión de sacar procesos la hace el planificador. En particiones de distintos tamaños se asigna cada proceso a la partición más pequeña en la que quepa.
http://image.slidesharecdn.com/gestindememorianicolas-120530233741-phpapp01/95/gestin-de-memoria-21-728.jpg?cb=1338421162 |
.
ALGORITMO DE REEMPLAZO
Es utilizado para decidir que proceso sale de la memoria cuando llega un nuevo proceso y no hay marcos de pagina libre.
ALGORITMO DE VACÍO
ALGORITMO DE REEMPLAZO
Es utilizado para decidir que proceso sale de la memoria cuando llega un nuevo proceso y no hay marcos de pagina libre.
ALGORITMO DE VACÍO
Es el encargado de determinar cuando se debe escribir en memoria secundaria una pagina que ya haya sido modificada.
http://es.slideshare.net/wwwkarlitozkom/gestin-de-memoria-13143376
Referenciado de la exposición de los compañeros: Sergio Cornelio Reina
PAGINACIÓN Y SEGMENTACIÓN.
Que es Paginación en Sistemas Operativos?
La Paginación en Sistemas Operativos consiste en considerar el espacio de las direcciones lógicas de cada proceso como un conjunto de bloques de tamaño consistente llamadas paginas, cada dirección lógica manejada para un proceso estará conformada por un par de valores (Pagina: Desplazamiento)
http://files.sistemas-operativos51.webnode.es/200000033-52ea053e24/paginacion.jpg |
Características de la Paginación
- El espacio de direcciones lógicos de un proceso puede ser no continuo.
- Se divide la memoria física en bloque de tamaño fijo llamados marcos.
- Se divide la memoria en bloques de tamaño llamados pagina
- Se mantiene información en los marcos libres.
- Se establece una tabla de paginas para trasladar las direcciones lógicas a físicas.
- Se produce fragmentación interna.
Ventajas de la Paginación
- El espacio de direcciones lógico de un proceso puede ser no continuo.
- No es necesario que las paginas estén continuas en memoria.
- Es facil controlar todas las paginas ya que tienen el mismo tamaño.
- El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria.
- Se libera al programador de la restricción de programar par aun tamaño físico de memoria con lo que se aumenta su productividad.
Desventajas de la Paginación
- El costo del hardware y software se incrementan, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesarias, se consume mucho mas recurso e memoria, tiempo en la CPU para su implantación.
- Se deben reservar áreas de memoria para las PMT de los procesos, al no ser fijas el tamaño de estas se crea un problema semejante al de los programas.
- Aparece el problema de fragmentación interna.
SEGMENTACIÓN
Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica, llevándose a cabo una agrupación lógica de la información en bloques de tamaño variables denominados segmentos.
La segmentación permite alcanzar los siguientes objetivos:
- Modularidad de programas, cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
- Estructuras de datos de largo variable, ejm, Stack, donde cada estructura tiene su propio tamaño y este puede variar.
- Protección, se puede proteger los módulos de segmentos contra acceso no autorizados.
- Comparición, dos o más procesos pueden ser un mismo segmento bajo reglas de protección.
- Enlace dinámico entre segmentos, puede evitarse relacionar todo el proceso de enlace antes de comenzar a ejecutar un proceso.
Ventajas de la Segmentación.
- El programador puede conocer las unidades lógicas de su programa.
- Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.
- Es fácil compartir segmentos.
- Existe la posibilidad de definir segmentos que aun no existan.
Desventajas de la Segmentación.
- Hay un incremento en el costo del hardware y software para llevar a cabo la implantación, asi como mayor recurso de consumo de memoria, tiempo de CPU.
- Se compila el manejo de memoria virtual, ya que los discos almacenan información en bloques de tamaños fijos.
- No se puede garantizar que al salir de un segmento de la memoria este pueda ser traído fácilmente de nuevo,ya que sera necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño.
- La compartición de segmentos permite ahorrar memoria.
Suscribirse a:
Entradas (Atom)