lunes, 15 de noviembre de 2010

UNIDAD 2 Gestión del procesador, comunicación y sincronización de datos. (PARTE III)

Bloqueo mutuo

El bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.

Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tomó.



Metodos para el manejo del Bloqueo mutuo



Hay 3 métodos para tratar el problema del bloqueo mutuo:

1) Usar un protocolo para asegurar que el sistema nunca entrará en un estado de bloqueo.
   – Prevenir del bloqueo
        • asegura que al menos una de las condiciones para el bloqueo no se cumplirá.
        • establece restricciones sobre como pueden solicitarse los recursos.
  
Evitar el bloqueo
        • el S.O. necesita conocer con anticipación que recursos requerirá un proceso durante su tiempo de vida.
        • con esa información, el S.O. puede decidir para cada requerimiento si el proceso debe esperar o no.
        • la decisión se realiza en función de los recursos actualmente disponibles, los actualmente asignados a cada proceso, y los requerimientos y liberaciones futuras de cada proceso.
 

2)Permitir entrar a un estado de bloqueo y luego recuperarse.
   – Un algoritmo examina el estado del sistema para determinar si ha ocurrido un bloqueo.
   – Otro algoritmo maneja la recuperación desde el bloqueo.
 

3)Ignorar el problema.
   – Ante un bloqueo el sistema sufrirá un deterioro en su perfomance
   – Eventualmente el sistema se detendrá y necesitará reinicio
manual.
   – Es usado en algunos sistemas operativos.



Prevención del bloqueo

Asegurando que al menos una de las condiciones para bloqueo no se cumpla, podemos prevenir su ocurrencia.

1) Exclusión mutua
   – Los recursos compartibles no estarán involucrados en un bloqueo dado que no requieren acceso exclusivo.
   – En general no es posible prevenir los bloqueos relegando la condición de exclusión mutua, dado que hay recursos que son intrínsecamente no compartibles.

2) Retención y espera
   – Garantizar que, siempre que un proceso requiere un recurso, no tiene otro retenido.
   – Pueden usarse dos protocolos:
         • cada proceso debe requerir y recibir todos sus recursos antes de comenzar su ejecución.
         • cada proceso puede requerir algunos recursos y usarlos, pero cuando requiere otro recurso adicional, antes debe liberar los recursos que tiene asignados.
   – Estos protocolos producen baja utilización de los recursos.
   – Puede ocasionar inanición de algunos procesos.
 
3) No apropiación
   – Alternativa 1:
         • Si un proceso que está reteniendo algunos recursos, requiere otro recurso que no se le puede asignar inmediatamente, entonces todos los recursos que tiene retenidos le son apropiados.
         • Los recursos apropiados son agregados a la lista de recursos que el proceso está esperando.
         • El proceso se reinicia solo cuando recupera sus viejos recursos junto con los nuevos que esta requiriendo.
   – Alternativa 2:
         • Si un proceso requiere recursos, primero chequear si están disponibles.
         • Si están, entonces asignarlos.
         • Si no están, chequear si están asignados a algún otro proceso que esté esperando recursos adicionales.
         • Si es así, apropiar los recursos deseados al proceso que está esperando y asignárselos al proceso que los requiere.
         • Si los recursos requeridos no esta disponibles ni retenidos por otro proceso en espera, entonces el proceso que requiere debe esperar
.

viernes, 15 de octubre de 2010

UNIDAD 2 Gestión del procesador, comunicación y sincronización de datos. (PARTE II)

Diferencia entre concurrencia y paralelismo

Según el diccionario, concurrencia es: coincidir en el espacio o en el tiempo dos o más personas o cosas. En Informática, se habla de concurrencia cuando existen simultaneamente varios procesos, cada uno independiente de los otros.

En cambio, el parelismo supone la ejecución simultanea de varios procesos. Para implementar el paralelismo, se necesita el hardware acecuado (se necesitan varios proccesdores)

El paralelismo indica una ejecución simultanea, por lo tanto es un caso concreto de concurrencia. Sin embargo, concurrencia no implica paralelismo.




Sección critica

El problema de la sección crítica es uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes.
Cada proceso tiene un segmento de codigo, llamado sección crítica, (en el cual el proceso puede estar modificando variables comunes, actualizando una tabla, escribiendo en un archivo, etc.) La principal caracteristica del sistema es que, cuando un proceso se ejecuta en su sección crítica, no se permite que ningún otro proceso se ejecute en su sección. De esta manera, la ejecución de las secciones críticas de los procesos es mutuamente excluyente en el tiempo. El problema de la sección crítica consiste en diseñar un protocolo que los procesos puedan usar para cooperar.

Una solución para el problema de la sección crítica debe cumplir estos 3 requisitos:

• Exclusión mutua: Si un proceso está ejecutando código de la sección crítica, ningún otro proceso lo podrá hacer.

• Progreso: Si ningún proceso está ejecutando dentro de la sección crítica, la decisión de qué proceso entra en la sección se hará sobre los procesos que desean ingresar

 Espera acotada: Debe haber un límite en el número de veces que se permite que los demás procesos entren a ejecutar codigo de laseccion critica después de que un proceso haya efectuado una solicitud de entrada y antes de que se conceda la suya. 




Semáforos

Es un sistema de sincronizacion que suele utilizarse para tratar el problema de la sección critica

Las operaciones P y V fueron inventadas en 1965 por E. W. Dijkastra. Dijkastra llamó al argumento de una operación P y V semáforo en analogía con la luz de tráfico del ferrocarril, el cual indica que si un tren entra a la línea el semáforo cambia de color la luz para asegurar que ningún otro tren ingrese a la línea. La operación P(S) produce que el sistema operativo bloquee la entrada a la sección S y permite la entrada sólo al proceso que ejecutó la operación. La operación V(S) desbloquea la sección para dejar el acceso disponible para cualquier proceso que lo solicite.

Monitores

Un monitor es un conjunto de procedimientos que proporciona el acceso con exclusión mutua a un recurso o conjunto de recursos compartidos por un grupo de procesos. Los procedimientos van encapsulados dentro de un módulo que tiene la propiedad especial de que sólo un proceso puede estar activo cada vez para ejecutar un procedimiento del monitor.





jueves, 30 de septiembre de 2010

UNIDAD 2 Gestión del procesador, comunicación y sincronización de datos. (PARTE I)

Planificación de CPU

Planificación se puede definir como un conjunto de mecanismos asociados al sistema operativo, a través de un patrón denominado planificador, el cual decide cuales de los procesos en condiciones de ser ejecutado conviene ser enviado primero y qué orden de ejecución se debe seguir. 
Los objetivos buscados en la planificación de CPU son:
-Equidad
-Eficiencia
-Bajo tiempo de respuesta
-Rendimiento alto
-Minimizar el tiempo de espera

Cabe destacar que estos objetivos no se pueden conseguir simultáneamente.

Tipos de planificadores:


Planificador a largo plazo: es un administrador que se encarga de organizar la ejecución con una adecuada organización de los recursos para que el trabajo se ejecute de forma ordenada y eficiente según el modo de procesamiento. Es el responsable de controlar el nivel de multiprogramación del sistema y el balance de carga del sistema.

Planificador a medio plazo: Es quien carga y descarga trabajos desde el disco a la memoria y de la memoria al disco en función del grado de sobrecarga del sistema. Este planificador puede ser usado cuando quede espacio libre de memoria por efecto de la término de un proceso o cuando el suministro de procesos caiga por debajo de un límite especificado.

Planificador a corto plazo (o short-term scheduler): es el responsable de decidir quién, cuándo, cómo y por cuánto tiempo recibe el procesador un proceso que está preparado  para ejecutar. El planificador a corto plazo es invocado cada vez que un suceso (interno o externo) hace que se modifique el estado global del sistema (por ejemplo, las interrupciones y terminaciones de E/S.)

Criterios de planificación

Al planificar la utilización de una CPU, se debe tener presente que la planificación se hace teniendo en cuenta determinados criterios:

Tiempo de respuesta (Turnaround time): es el tiempo que transcurre desde que se emite una solicitud hata que se recibe la primera respuesta. 

Tiempo de retorno: es el tiempo que transcurre desde la entrada de un proceso en el sistema hasta su finalización. 

Productividad: se debe intentar maximizar el número de procesos terminados por unidad de tiempo.

Equidad: Los procesos deben ser tratados de igual forma y ningún proceso debe sufrir inanición.

Utilización del procesador: Es el porcentaje de tiempo en el que el procesador está ocupado.

Prioridades: Cuando se asignan prioridades a los procesos, la política de planificación debe favorecer a los de mayor prioridad.



Algoritmos de planificación de CPU


FCFS (First come first served):  es el algoritmo de planificación más sencillo. Consiste en que el primer proceso en solicitar la CPU es el primero en ser atendido por ésta.

SJF (Shortest Job First):  se asocia a cada proceso la longitud de su rafaga de CPU. Cuando la CPU está disponible es asignada al proceso que tiene la siguiente ráfaga de CPU de menor duración. Si 2 o más procesos tienen la misma longitud de rafaga de CPU, se usa la planificación FCFS para desempatar, es decir, el primero de ellos en llegar es el primero en ser atendido.

Planificación por prioridades: Bajo este concepto, el procedimiento se basa en que cada proceso tiene una prioridad. La CPU debe atender primero al proceso con la prioridad mas alta primero.

Turno rotatorio (Round Robin): este algoritmo de planificación fue especialmente diseñado para sistemas en tiempo compartido. Se define una pequeña unidad de tiempo común llamada quantum de tiempo o time slice, que generalmente tiene un valor entre 10 y 100 milisegundos. La cola de listos se trata como una cola circular. El planificador de CPU recorre la cola asignando el procesador a cada proceso durante un intervalo de tiempo de hasta un quantum.

sábado, 28 de agosto de 2010

Primera Generación de computadores (1945 - 1955)

Todos sabemos que los computadores han invadido la mayoría de las labores del ser humano. Pero todo tiene un comienzo y, en esta ocasión conoceremos algo sobre la primera generacion de computadores. Se denomina “Generación de computadores” a cualquiera de los periodos en que se divide la historia de las computadores. 

Características de la primera  generación de computadores:

•    Construidas básicamente con tubos de vacío (ver imagen) para procesar la información.
•    Eran programadas en lenguaje máquina (código binario).
•    Utilizaban tarjetas perforadas (inventadas por el francés J. M .Jacquard y perfeccionadas por el estadounidense Herman Hollerith en 1890) para entrar datos a los programas.
•    Gran tamaño
•    Utilizaban gran cantidad de electricidad, lo que generaba gran cantidad de calor.
•    Comercialización casi nula. Su precio variaba entre 1 y 2,5 millones de dólares
•    Eran muy lentas.


Principales modelos de computadoras pertenecientes a esta generación:

ENIAC (1946): Era capaz de resolver problemas, calcular con gran velocidad las trayectorias de proyectiles, principal objetivo de su construcción, podía resolver 5 mil  sumas y 360 multiplicaciones por segundo, pero su programación era terriblemente tediosa y debían cambiársele de tubos continuamente. 

EDVAC (1949): Conocida como la primera computadora programable. Ésta podía almacenar, además de los datos, las instrucciones o programas que regirían su propio funcionamiento.

UNIVAC (1951): La primera UNIVAC se instaló en 1951 en la Oficina del Censo de Estados Unidos, departamento para el que realizó uno de sus logros más importantes: la predicción del ganador de las elecciones presidenciales norteamericanas en 1952. En total se vendieron 48 unidades y la UNIVAC demostró que había un mercado para las computadoras.

IBM 701 (1953): Para introducir los datos, estos equipos empleaban tarjetas perforadas. La IBM 701 fue la primera de una larga serie de computadoras de esta compañía, que luego se convertiría en la número 1 por su volumen de ventas.