lunes, 29 de noviembre de 2010

Concepto de bloqueo mutuo:

Bloqueo mutuo se refiere al bloqueo entre dos o mas procesos que estan compitiendo por recursos en un sistema concurrente que a diferencia de otros problemas, el bloqueo mutuo no posee una solucion general.
 Los bloqueos mutuos aparecen cuando dos o mas procesos no pueden acceder a los recursos, un ejemplo facil de entender seria:

- El proceso 1, necesita 5 espacios en memoria, de los cuales tiene asignados solo 3, y el proceso 2 necesita tambien 5 espacios en memoria de los cuales tiene asignados solo 2, lo que ocurre es que ninguno de los dos procesos se podra ejecutar hasta que uno de ellos no libere los recursos que tiene.

Condiciones necesarias para que existan bloqueos mutuos:

Para que ocurran Bloqueos Mutuos deben cumplirse ciertas condiciones para ello, estan condiciones son llamadas tambien condiciones de coffman, las cuales no son totalmente independientes entre ellas, las condiciones para bloqueos mutuos son :

- Condición de exclusión mutua: Existencia al menos de un recurso compartido por los procesos, al cual sólo puede acceder uno simultáneamente.

- Condición de posesión y espera: Al menos un proceso "x" ha adquirido un recurso "y", y lo mantiene mientras espera al menos un recurso "y" que ya ha sido asignado a otro proceso.

- Condición de no expropiación: Los recursos no pueden ser apropiados por los procesos, es decir, los recursos sólo podrán ser liberados voluntariamente por sus propietarios.

- Condición de espera circular: Dado el conjunto de procesos P1, p2, p3....el p1 está esperando un recurso adquirido por P2, que está esperando un recurso adquirido por P3,... ,que está esperando un recurso adquirido por P...., que está esperando un recurso adquirido por P1. Esta condición implica la condición de retención y espera.

Grafo de asignacion de recursos:

El Bloqueo mutuo también puede ser representado usando grafos dirigidos, donde el proceso es representado por un círculo y el recurso, por un cuadrado. Cuando un proceso solicita un recurso, una flecha es dirigida del círculo al cuadrado. Cuando un recurso es asignado a un proceso, una flecha es dirigida del cuadrado al círculo.



Mecanismos para prevenir bloqueos mutuos:

Para prevenir bloqueos mutuos existen distintos mecanismos que basicamente consiste en eliminar alguna de las condiciones necesarias apra que un bloqueo mutuo se lleve a cabo:

-Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso.

- La condición de posesión y espera puede ser eliminada haciendo que los procesos pidan todos los recursos que van a necesitar antes de empezar. Este conocimiento por adelantado muchas veces es imposible. Otra forma es requerir a los procesos liberar todos sus recursos antes de pedir todos los recursos que necesitan. Esto también es poco práctico en general.

- La condición de no expropiación puede ser imposible de eliminar dado que un proceso debe poder tener un recurso por un cierto tiempo o el procesamiento puede quedar inconsistente.

- La condición de espera circular es la más fácil de atacar. Se le permite a un proceso poseer sólo un recurso en un determinado momento, o una jerarquía puede ser impuesta de modo tal que los ciclos de espera no sean posibles.

 Deteccion de bloqueos mutuos:


Si un sistema no emplea un algoritmo de prevención o de evitación del bloqueo, entonces puede ocurrir una situación de bloqueo. Por ello, estos sistemas deben proveer:

- Un algoritmo que examine el estado del sistema para determinar si ha ocurrido un bloqueo.

- Un algoritmo para recuperarse del bloqueo.

Algoritmo del banquero:

El algoritmo del banquero es un algoritmo que se usa para evitar el bloqueo mutuo y funciona de la siguiente manera:
- Los clientes del banco representan a los procesos, que tienen un crédito límite, y el dinero representa a los recursos. El banquero es el sistema operativo.

El banco confía en que no tendrá que permitir a todos sus clientes la utilización de todo su crédito a la vez. El banco también asume que si un cliente maximiza su crédito será capaz de terminar sus negocios y devolver el dinero a la entidad, permitiendo servir a otros clientes.

El algoritmo mantiene al sistema en un estado seguro. Un sistema se encuentra en un estado seguro si existe un orden en que pueden concederse las peticiones de recursos a todos los procesos, previniendo el interbloqueo. El algoritmo del banquero funciona encontrando estados de este tipo.

Los procesos piden recursos, y son complacidos siempre y cuando el sistema se mantenga en un estado seguro después de la concesión. De lo contrario, el proceso es suspendido hasta que otro proceso libere recursos suficientes.

Recuperacion tras ocurrir un bloqueo mutuo

Cuando un algoritmo de detección determina que existe un bloqueo, el paso siguiente puede ser:

- Informar al operador del bloqueo para que lo trate manualmente.

- Dejar que el sistema se recupere del bloqueo automáticamente.

Hay dos opciones para romper un bloqueo:

- Abortar uno o más procesos para romper la espera circular

 - Apropiar algunos recursos de uno o más procesos bloqueados

sábado, 30 de octubre de 2010

Sincronizacion de Procesos

    Básicamente cuando hablamos de la sincronización de procesos nos referimos al hecho de que uno o más procesos trabajen de manera conjunta para realizar una cierta tarea solicitada.

   Cuando se requiere que dos o más procesos se sincronicen, es necesario crear un mecanismo de comunicación entre ambos, este mecanismo de comunicación es siempre dinámico, por lo que cuando ocurre este requerimiento de que dos o más procesos se sincronicen, el mecanismo necesario para la comunicación ocurre de la siguiente manera:

- Primero se crea.

- Segundo se usa.

- Tercero se destruye.

   En este punto nos podríamos preguntar, para que destruir el mecanismo de comunicación creado, cuando este colabora a que una tarea sea realizada de forma más rápida. La razón para esto, es que eventualmente mantener esta comunicación entre procesos puede producir efectos no deseados en tareas posteriores, es por esto que la comunicación entre los procesos es puntual.

Los servicios básicos de comunicación son:

    -Crear: el proceso solicita la creación del mecanismo

    -Enviar o escribir: el proceso emisor envía información al proceso receptor

     -Recibir o leer: el proceso receptor recibe información

     -Destruir: el proceso solicita la destrucción del mecanismo de comunicación

La comunicación puede ser síncrona y asíncrona:

    Síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.

    Asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un almacenamiento intermedio para guardar la información enviada, hasta que el receptor la solicite.

Sección critica.

  Un proceso entra en sección critica al momento de solicitar acceso a un recurso, y este proceso compita con otro por este recurso, por lo cual el modelo de exclusión para que dos procesos no ocupen el mismo recurso, teniendo que esperar uno de los procesos al otro se le denomina exclusión mutua. La exclusión mutua lo que hace es, cuando un proceso entra a su sección critica, este verifica si es viable el acceso por parte del proceso al recurso, en tal caso, el recurso al no estar disponible, el proceso deberá esperar hasta que este quede libre.

Desactivación de interrupciones

El método más simple para evitar las condiciones de competencia es hacer que cada proceso desactive todas sus interrupciones antes de entrar a su sección crítica y las active una vez que salió de la misma. Este modelo como se puede observar, éste modelo tiene una gran problema y es que si se produce una falla mientras que el proceso está en la región crítica no se puede salir de la misma y el sistema operativo no recuperaría el control.

 En un término mas practico la sección crítica puede ser utilizada para asegurarse de que un  recurso compartido, por ejemplo, una impresora, puede ser accedida por un solo proceso a la vez.

Concurrencia y Paralelismo entre procesos.

   La concurrencia entre procesos ocurre cuando varios procesos existen a la vez.

  El paralelismo entre procesos ocurre cuando varios procesos se ejecutan a la vez.

Espera activa y no Activa.

  La espera activa a grandes rasgos es una técnica que hace que un proceso verifique una condición de forma repetida, pero se utiliza en casos excepcionales como en la sincronización de procesos de sistemas con multiprocesadores, pero mayoritariamente debe ser evitado ya que consume tiempo de la CPU sin realizar ninguna acción.

Algoritmos de Petterson y Dekker.

  El algoritmo de Dekker es un algoritmo de programación concurrente para exclusión mutua, que permite a dos procesos o hilos de ejecución compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusión mutua inventados, implementado por Edsger Dijkstra.

El algoritmo de Peterson, también conocido como solución de Peterson, es un algoritmo de programación concurrente para exclusión mutua, que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación.

Deshabilitación de Interrupciones

   La solución más simple es que cada proceso desactive todas las interrupciones justo después de entrar en su sección crítica y las vuelva a activar antes de salir de ella. Con las interrupciones deshabitadas no pueden ocurrir interrupciones al reloj por lo cual no se cambiara a otro proceso. Este método no es muy atractivo ya que no es muy prudente dar a los procesos del usuario el poder de desactivar las interrupciones.. Si un usuario lo hiciera y nunca las volviera a activar sería el fin del sistema. Además si fuera un sistema con mas de una CPU la desactivación de interrupciones solo afectaría una de ellas y las otras podrían accesar la memoria compartida.

jueves, 30 de septiembre de 2010

Gestión del procesador, comunicación y sincronización de datos.

Bueno para comenzar a entender un poco más osbre la unidad dos se deve tener un control sobre las partes o/i diferentes divisiones que se les puede oorgar a los procesos que involucran a los procesos en ejecución.

Procesos
Un proceso es cualquier tipo de actividad que demande de la atención de utilización de la CPU de una máquina. Quedan contenidos en este concepto los trabajos de ejecución por lotes, los programas de usuario o tareas y el apoyo de actividades internas propias del sistema.

Distinción entre programas y procesos: Cada invocación a un programa genera un proceso distinto e independiente. Los procesos compiten por el uso de los recursos del sistema, de manera que se necesitan herramientas que permitan la sincronización y la comunicación entre los mismos.

El sistema operativo debe suministrar los servicios necesarios que permitan:
a) Ejecución concurrente de los procesos.
b) Sincronización entre procesos.
c) Comunicación entre procesos.

Dependiendo de la interacción entre procesos, los podemos clasificar en:
a) Independientes: No se comunican o sincronizan entre ellos. En un sistema con un sólo
procesador, los procesos independientes no existen (en sentido estricto).
b) Cooperativos: Se comunican y sincronizan sus actividades para realizar una labor común.
c) Competitivos: Todos compiten por los recursos del computador. El acceso ordenado a estos
necesita de la sincronización y, a veces, también de la comunicación entre los procesos.

Estados De Los Procesos
a) Activo: Proceso que está ejecutándose en un instante dado.
b) Preparado: Listo para ejecutarse, esperando a que el procesador quede libre.
c) Bloqueado o suspendido: Esperando a que se cumpla alguna condición (E/S, señal, etc.).
d) Muerto: Ha terminado su ejecución o el sistema operativo ha detectado un error fatal.
e) Nonato: Existe, pero todavía no es conocido por el sistema operativo
f) Estado global del sistema: Conjunto de recursos y procesos existentes con sus estados
correspondientes en un instante determinado.

Estados de un proceso
a. Estados activos. Un proceso que esté en un estado activo puede competir por recursos.
 
b. Estados inactivos o suspendidos. El sistema no les permite (de manera momentánea) que
compitan por recursos.
 
c. Estados externos o intermedios. Son estados especiales que se dan durante la creación y
destrucción de los procesos.

Bloque De Control De Procesos (PCB, Process Control Block )
Cuando se somete un determinado trabajo para su ejecución y es aceptado, se carga el programa
correspondiente en memoria y, además, se crea el descriptor de proceso correspondiente (PCB) que
contiene:
·  El estado actual (status): READY, RUNNING...
·  El entorno volátil, que es el subconjunto de elementos compartidos en el sistema susceptibles de
cambios con la ejecución de los procesos y que son accesibles desde ellos.
La información que contienen estos elementos se llama
información de rearranque y también se define como el bloque de
contexto o estado del procesador para el proceso. La información
de rearranque contiene:

·  Identificador único de proceso (pid).
·  Estado del proceso (activo, preparado, bloqueado).
·  Prioridad.
·  Estado hardware (contador de programa, códigos de
condición, punteros de pila, etc.).
·  Información para gestionar la memoria (punteros, tablas,
registros, etc.).
·  Información de contabilidad y planificación.
·  Etc.















El Planificador De Procesos
Planificador a largo plazo (PLP): O planificador de trabajos, determina qué trabajos se admiten en el
sistema para su procesamiento y son cargados en la memoria disponible. Debe realizar una mezcla
adecuada de trabajos destinados al procesador y trabajos destinados al sistema de E/S.

Planificador a corto plazo (PCP): O planificador del procesador, gestiona los procesos entre dos
instantes de gestión del PLP. Selecciona al proceso que pasará al estado activo de entre todos los
preparados. Su elevada frecuencia de uso hace que el algoritmo suela ser sencillo (no calcula
prioridades).

Distribuidor (dispatcher): Parte del PCP encargada en exclusiva de realizar las gestiones oportunas
para pasar el procesador a la tarea seleccionada para su ejecución (en algunos sistemas se denomina
distribuidor al PCP).

Planificador a medio plazo (PMP):  se encarga del intercambio (swapping) o
proceso de salvar una tarea suspendida en la memoria secundaria para:
a) Liberar memoria principal.
b) Separar los procesos destinados al procesador de los destinados al sistema de E/S.


sábado, 28 de agosto de 2010

TERCERA GENERACIÓN DE COMPUTADORES

 TECNOLOGIA APLICADA EN ESOS MOMENTOS
En 1958 Kilby de Texas Inst. concibió la idea de realizar un circuito integrado monolítico. En 1960, en un congreso anunció su idea sobre los circuitos sólidos, más adelante denominados circuitos integrados. Los primeros desarrollos comerciales de éxito se deben al desarrollo de la tecnología planar, propuesta por Noyce Y Moore, consistente en la fabricación de dispositivos utilizando procesos fotolitográficos y de difusión térmica. Esta propuesta posibilitó la comercialización de circuitos integrados a partir de 1961 por Fairchild y Texas Inst.


Algunos de los hechos más relevantes de la nueva tecnología son los siguientes:

*El bajo coste de los transistores que incluye el circuito integrado, hizo posible diseños de circuitos cada vez más complejos y perfectos.
*Se reduce el consumo de energía y la fiabilidad de los circuitos.
*Se consigue una gran minituarización.
*Se reduce considerablemente el coste



COMPUTADORES
En esta época se desarrollan grandes computadores, dando servicio a gran diversidad de terminales de trabajando en forma local o remota. Con ello se desarrollaron procedimientos para compartir los recursos del computador como la unidad central de procesador, memoria y periféricos.



Una de las características más destacables de la tercera generación de computadores fue el desarrollo de grandes computadores atendiendo a un gran número de terminales. Se difundieron sistemas operativos que utilizaban técnicas tales como multiprogramación, multiprocesamiento, secuencias múltiples, dispositivos de entrada/salida virtuales, etc. Cada computador o serie compatible de ellos se utilizaba con un sistema operativo especifico diseñado por el propio constructor del hardware.