lunes, 18 de abril de 2016

COOPERACIÓN ENTRE PROCESOS

ü  Definición
ü  Problema de los Lectores – Escritores
ü  Problema Productor - Consumidor

•En la mayoría de las ocasiones los procesos son entidades totalmente aisladas: llevan a cabo su trabajo sin tener que comunicarse con otros procesos o programas. Sin embargo las cosas en realidad no son tan sencillas. En muchas ocasiones, los programas o procesos necesitan intercambiar información entre sí.
•Ejemplos:
•En una plataforma Windows, el intercambio de información a través del portapapeles.
•Chatear a través de la red. Hay dos procesos (dos navegadores) que intercambian información.

PROBLEMA DE LOS LECTORES-ESCRITORES
•Hay un objeto de datos (fichero de texto) que es utilizado por varios procesos, unos leen y otro que escribe.
•Solo puede utilizar el recurso un proceso y solo uno, es decir, o bien un proceso estará escribiendo o bien leyendo, pero nunca ocurrirá simultáneamente (teniendo en cuenta que si no lo esta utilizando nadie, tendrá preferencia el escritor ante el lector)



RESTRICCIONES:
•Solamente puede haber un escritor al mismo tiempo, si un escritor o un lector quiere utilizar la base de datos y  hay un escritor utilizándola, entonces debe  esperar.
•Pueden haber  varios lectores utilizando la base de datos al mismo tiempo, pero si un escritor quiere usar la base de datos mientras los lectores la usan, deberá esperar.
•El último lector en usar la base de datos debe habilitarla para que pueda ingresar el siguiente escritor que estaba esperando la base de datos o en todo caso al siguiente proceso que requiera usarla.

VÍDEO LECTORES-ESCRITORES
•https://www.youtube.com/watch?v=4MKiDA3I8f8

PROBLEMA PRODUCTOR-CONSUMIDOR
•Es un ejemplo clásico de problema de sincronización de multi-procesos.
El programa describe dos procesos, productor y consumidor, ambos comparten un buffer de tamaño finito. La tarea del productor es generar un producto, almacenarlo y comenzar nuevamente; mientras que el consumidor toma (simultáneamente) productos uno a uno. El problema consiste en que el productor no añada más productos que la capacidad del buffer y que el consumidor no intente tomar un producto si el buffer está vacío.

Un ejemplo de un problema de concurrencia sería el siguiente: Dados dos procesos A (productor) y B (consumidor), suponiendo que ambos se ejecutan indefinidamente en el tiempo, el proceso A debe recibir tiempo de ejecución antes que B, tras esto, el proceso B debe recibir su oportunidad de ejecución, dando paso de nuevo al proceso A y así sucesivamente, siguiendo un esquema de alternancia estricta.
          PROBLEMA PRODUCTOR-CONSUMIDOR


domingo, 13 de marzo de 2016

PAGINACION POR DEMANDA:

La paginación por demanda introdujo la idea de cargar más una porción del programa en la memoria para su procesamiento. Con la paginación por demanda, las tareas siguen divididas en páginas de tamaño igual que inicialmente residen en almacenamiento secundarios. Cuando se empieza a ejecutar la tarea, sus páginas pasan a la memoria solo conforme se necesitan.
La paginación pro demanda aprovecha el hecho que los programas se escriben de manera secuencial, de manera que mientras una sección o modulo está en proceso, los demás están ocioso (madnick & donovan, 1974).
Una de las innovaciones de mayor importancia en la paginación por demanda es que hizo posible el amplio uso de la memoria virtual, el esquema de paginación por demanda permite al usuario ejecuta tareas con menos memoria principal de lo que se requería si el sistema operativo estuviera utilizando el esquema de asignación de memoria paginada que ya se describió.
La clave de la implementación exitosa de este esquema es el uso de un dispositivo de almacenamiento de acceso directo de alta velocidad, que pueda trabajar directamente con el CPU.
El sistema operativo se apoya en tablas (de tareas, de mapa de páginas y de mapa de memoria) para implementar el algoritmo. Estas tabla son básicamente las mismas para una asignación de memoria paginada, pero con la adición de tres campos para página en la PMT uno para establecer si la página solicitada está o no esta en la memoria, otro para determinar si el contenido de la página se ha modificado y el ultimo para definir si la página ha sido objeto de referencia recientemente.

Aunque la paginación por demanda es una solución a la utilización ineficaz de la memoria, no está libre de problemas. Donde hay demasiado intercambio de páginas entre la memoria principal y el almacenamiento secundario, la operación se vuelve ineficaz. Es un fenómeno que se conoce como (actividad excesiva de paginación (hiperpaginacion). Utiliza gran cantidad de energía de la computadora sin hacer mucho y se produce cuando una página se quita de la memoria y se vuelve a solicitar poco después. Esta hiperpaginacion puede ocurrir entre tareas.



ASIGNACION DE MEMORIA POR SEGMENTACION CON PAGINACION POR DEMANDA


La asignación de memoria por segmentación con paginación por demanda evoluciono a partir de las dos que acabamos de ver. Es una combinación de segmentación y las ventajas físicas de la paginación.
Este esquema de asignación no conserva cada segmento en una unidad única contigua, sino que lo subdivide en páginas de tamaño igual, más pequeñas que la mayor parte de los segmentos, y más fáciles de manipular que los segmentos completos. Por lo tanto, muchos de los problemas de la segmentación (compactación, fragmentación externa y manejo de almacenamientos secundario se eliminan, ya que las páginas son de longitud fija. 
La desventaja principal de este esquema de asignación de memoria es la carga general requerida para las tablas adicionales y el tiempo necesario para referir las tablas de segmento y de página. A fin de minimizar el número de referencias, muchos sistemas utilizan memoria asociativa para acelerar el proceso.
La memoria asociativa es el nombre que se ha dado a varios registros que están asignados a cada una de las tareas activas. Su función es asociar varios números de segmento y de página pertenecientes a la tarea en proceso con sus direcciones de memoria principal. Estos registros asociativos residen en la memoria principal y su cantidad varia de un sistema a otro. 


lunes, 15 de febrero de 2016


PARTICIONES DINÁMICAS RE LOCALIZABLES:




Con este esquema de asignación de memoria, el administrador de memoria relocaliza los programas para reunir los bloques vacíos y compactarlos, para hacer un bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar.


La compactación no es una tarea sencilla. Primero, todos los programas en memoria se deben re-localizar, de manera que queden contiguos; luego hay que ajustar cada dirección y cada referencia a una dirección en todo programa para tomar en consideración la nueva localización del programa en memoria.

La fragmentación interna es la pérdida de espacio en disco debido al hecho de que el tamaño de un determinado archivo sea inferior al tamaño del cluster, ya que teóricamente el archivo estaría obligado a ser referenciado como un cluster completo. Los cluster(s) son contiguos de forma que desde el último bit del archivo situado en el cluster "a" hasta el primer bit del archivo situado en el cluster contiguo (es decir "b") queda un espacio sobrante siempre teniendo la condición de que el archivo del cluster "a" fuera más pequeño que el cluster en sí.
Por eso se sugiere no disponer de un gran tamaño de partición en los discos nuevos donde la capacidad es muy importante. Por ejemplo si nuestro clúster es de 18KB (18.432 bytes) por más que un archivo ocupe menos, en nuestro disco ocupara 18KB. Esto sugiere una pérdida de ese espacio que dice utilizar pero no utiliza.
Por eso, en nuestro ejemplo, un archivo de 3KB ocupara en nuestro disco lo mismo que uno de 10KB, o sea 18 KB. Esa pérdida de espacio se denomina fragmentación interna, y no se corrige con el desfragmentador, sino disminuyendo el tamaño de la partición.

En la memoria del sistema la fragmentación se produce cuando los procesos asignados han ocupado posiciones no contiguas de memoria dejando demasiados bloques libres de pequeño tamaño, en los que no "caben" nuevos procesos.
En sistemas de ficheros la desfragmentación trata de resolver este problema, alineando los bloques de datos contiguos y juntando los bloques libres, produciendo así fragmentos mayores que sí serán elegidos para futuros ficheros. En la memoria principal se soluciona compactando los procesos para que estos ocupen posiciones contiguas y dejar los bloques libres juntos, o también se soluciona con la paginación de memoria.


Técnicas de Asignación de memoria


1er Ajuste
Se encarga de particionar la memoria y llenar de manera rápida la memoria, es un ajuste de rapidez

Mejor ajuste
Se encarga de poner las tareas en mejores espacios por lo cual proporcionando que la memoria tenga muy poca fragmentacion, es un ajuste de optimista

peor ajuste
Asigna tareas muy pequeñas en espacios muy grandes, usado para tener precisión, se utilizo en el lenguaje falscran en el viaje a la luna.

Siguiente ajuste
Se asigna una tarea, la siguiente tarea a asignar se evalúa desde la siguiente partición a la tarea anterior no desde el inicio de la memoria


Casos de eliminación

Las tareas al terminar su proceso de memoria y al salir en dinámicas ocurren tres casos

1-- Entre 2 espacios ocupados: 1 libre

2- Entre 1 espacio ocupado y 1 vació: une  2 particiones

3- Entre dos espacios de memoria Vacíos: une 3 particiones

Dinámicas re localizables

El administrador de memoria re localizar los programas para reunir los bloques vacíos y los compacta para hacer un bloque de memoria lo bastante grande, lo que permite que la fragmentacion externa se elimine entre tareas lo que da un mejor funcionamiento a la memoria, menor fragmentacion mas espacios para tareas.

Este proceso se ejecuta por 3 razones
1-Tiempo
2-% de memoria
3- Tareas en cola





domingo, 14 de febrero de 2016

Particiones de Memoria 

Las particiones de memoria pueden ser definidas estáticamente durante la generación del sistema o dinámicamente en respuesta a las demandas del usuario.
       
Cuando el particionamiento es estático, se produce un desaprovechamiento de la memoria, cuando se carga un objeto de menor tamaño que la partición y al espacio que se desaprovecha, se le denomina fragmentación interna.
El particionamiento dinámico, elimina este problema, haciendo cada partición tan grande como sea necesario para ajustarse al objeto dado, por lo tanto, cuando se lleva un objeto fuera de la memoria, la partición ocupada por él, se devuelve a la reserva de espacio libre.
            Después de algún tiempo de funcionamiento, el particionamiento dinámico produce una dispersión de espacio libre en áreas discontinuas, que son de un tamaño insuficiente para albergar otro objeto. A este tipo de desaprovechamiento de la memoria, se le denomina fragmentación externa.
            Respecto a la manera de abordar la asignación de memoria no contigua, se pueden utilizar las dos técnicas siguientes:
·         La Paginación.
·         La Segmentación.


En la Paginación, la memoria principal se divide en un conjunto de marcos de página de igual tamaño y cada proceso se divide en una serie de páginas del mismo tamaño, que los marcos de página en que se ha dividido la memoria principal. El proceso se cargará situando todas sus páginas en los marcos libres, que no necesariamente serán contiguos.
            La utilización de la Paginación, elimina la fragmentación externa, pero puede producirse una pequeña fragmentación externa en la última página de un proceso.
            En la Segmentación los programas se dividen en módulos y cada módulo se convierte en un segmento durante la compilación del programa. Un proceso se cargará, situando todos sus segmentos, en particiones dinámicas, que no necesariamente tienen que ser contiguas.
            La utilización de la Segmentación, elimina totalmente la fragmentación interna, pero puede producirse fragmentación externa, que se elimina con la compactación.
            Independientemente del tipo de asignación de la memoria que se utilice, la posible eficacia de un gestor de memoria, es mayor en sistemas donde los programas son reubicables, es decir, que puedan ser cargados en las distintas áreas de memoria, disponibles en un momento dado.
            Con objeto de proporcionar unas bases comunes, para la evaluación de cada esquema analizado, se establecen los siguientes criterios de medida:
·         Memoria desaprovechada.
·         Complejidad en el tiempo.
·         Procesos suplementarios de acceso a memoria.

La memoria desaprovechada se considera que es la fracción de memoria física sin usar, que un esquema de gestión de memoria dado, es incapaz de asignar, cuando procesa una secuencia de peticiones de memoria.

La complejidad en el tiempo, se refiere a la dificultad del cálculo que es preciso realizar, para la asignación o desasignación de la memoria, utilizado por un esquema determinado de gestión de la memoria.
 Los procesos suplementarios de los accesos a memoria, se refieren a la duración de las operaciones adicionales, llevadas a cabo por un esquema de gestión de memoria dado, cuando accede a la memoria.
            Una definición más amplia de la memoria desaprovechada, consiste en la posibilidad de mantener residentes en memoria, múltiples copias de un único objeto común, debido a un deficiente o restringido uso compartido.
            Un gestor de memoria ideal debe:
Minimizar:
·         La memoria desaprovechada.
·         La complejidad en el tiempo.
·         Los procesos suplementarios de acceso a memoria.
            Proporcionar:
·         Una buena protección de memoria.
·         Un uso compartido flexible.

Estos requerimientos no son realizables simultáneamente, por los esquemas de gestión de memoria que se van a describir, por lo tanto, un diseñador de un sistema operativo, tendrá que identificar y establecer la prioridad de un diseño particular, para crear un esquema de gestión de memoria apropiado a los requerimientos del sistema dado.
REQUISITOS PARA LA GESTIÓN DE MEMORIA.
            Al realizar un estudio de los diversos mecanismos y políticas relacionadas con la gestión de memoria, conviene tener presente los requisitos que se deben satisfacer, en el diseño de un módulo de gestión de memoria:
·         Reubicación.
·         Protección.
·         Compartición.
·         Organización lógica.
·         Organización física.





Significado de Memoria ROM

La memoria ROM es el medio de almacenamiento de programas o datos que permiten el buen funcionamiento de los ordenadores o dispositivos electrónicos a través de la lectura de la información sin que pueda ser destruida o re-programable. El significado de memoria ROM es “Read Only Memory” traducido al español “Memoria de solo lectura.”
La memoria ROM es conocida como memoria no volátil ya que la información contenida en ella no es borrable al apagar el dispositivo electrónico.
La memoria ROM se encuentra instalada en la tarjeta madre “motherboard” lugar donde se encuentra la información básica del equipo, llamada “BIOS.”

Para qué sirve la memoria ROM

La memoria ROM es de suma importancia para el buen funcionamiento de los ordenadores y dispositivos electrónicos ya que al ser encendidos la memoria ROM permite el arranque del programa inicial que dará lugar a la iniciación de todo el sistema.

Significado de Memoria RAM

La memoria RAM es la memoria principal de un dispositivo donde se almacena programas y datos informativos. Las siglas RAM significan “Random Access Memory” traducido al español es “Memoria de Acceso Aleatorio”.  
La memoria RAM es conocida como memoria volátil lo cual quiere decir que los datos no se guardan de manera permanente, es por ello, que cuando deja de existir una fuente de energía en el dispositivo la información se pierde. Asimismo, la memoria RAM puede ser reescrita y leída constantemente.
Los módulos de  RAM, conocidos como memoria RAM son integrantes del hardware que contiene circuitos integrados que se unen al circuito impreso, estos módulos se instalan en la tarjeta madre de un ordenador. Las memorias RAM forman parte de ordenadores, consolas de videojuegos, teléfonos móviles, tablets, entre otros aparatos electrónicos.
Existen 2 tipos básicos de memoria RAM; RAM dinámica (DRAM) y RAM estática (SRAM), ambas utilizan diferentes tecnologías para almacenar los datos. La RAM dinámica (DRAM) necesita ser refrescada 100 de veces por segundos, mientras que la RAM estática (SRAM) no necesita ser refrescada tan frecuentemente lo que la hace más rápida pero también más cara que la memoria RAM dinámica. 


Memoria PROM


Los dispositivos programables se definen como aquellos circuitos de propósito general que poseen una estructura interna que puede ser modificada por el usuario final (o a petición suya, por el fabricante) para implementar una amplia gama de aplicaciones. El primer dispositivo que cumplió estas características fue la memoria PROM, que puede realizar un comportamiento de circuito utilizando las líneas de direcciones como entradas y las de datos como salidas (implementa una tabla de verdad).

También se podría decir, que la prom es un tipo de memoria de sólo lectura (ROM) que permite ser grabada con datos mediante un hardware especial llamado programador de PROM.

Memoria Cache

La cache es la solución al problema de rendimiento del sistema de memoria. Es muy pequeña y está incluida en el interior del micro. Su función es sencilla, conseguir que los datos más usados estén lo más cerca del procesador para ser accedidos de la manera más rápida posible.


Memoria Virtual

La memoria virtual aparece unida a los sistemas operativos modernos. Permite simular una RAM de mayor tamaño que la que tienes instalada en tu equipo.

Pero, veamos cómo se ejecuta un programa. Las aplicaciones y sus datos, para poder ser usados por el procesador, tienen que pasar del disco duro, que es donde se encuentra almacenado todo cuando apagas al equipo, a la memoria RAM que puede ser accedida de forma directa por el micro.


Sistemas Operativos


Un sistema operativo puede ser definido como un conjunto de programas especialmente hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora. Este conjunto de programas que manejan el hardware de una computadora u otro dispositivo electrónico. Provee de rutinas básicas para controlar los distintos dispositivos del equipo y permite administrar, escalar y realizar interacción de tareas.


Un sistema operativo, tiene también como función, administrar todos los periféricos de una computadora. Es el encargado de mantener la integridad del sistema.
Podemos decir que el sistema operativo es el programa más importante de la computadora.