Monday, November 29, 2010

BLOQUEO MUTUO

• En un medio ambiente de multiprogramación, varios procesos
pueden competir por un número finito de recursos.
• Los recursos de un sistema son particionados en varios tipos
(espacio de memoria, ciclos de CPU, archivos, dispositivos de
E/S), cada uno de los cuales consiste de un número de instancias
idénticas.
• Si un proceso requiere una instancia de un tipo de recurso, la
asignación de cualquier instancia del tipo satisface el
requerimiento.
• Cuando un proceso requiere un recurso que no está disponible
pasa a un estado de espera.
• Puede suceder que un proceso en espera nunca pueda cambiar de
estado porque el recurso que ha requerido esta retenido por otro
proceso en espera, esta situación es llamada bloqueo mutuo.
• Los bloqueos mutuos pueden describirse más precisamente por
medio de un grafo de asignación de recursos.
• Hay una variedad de situaciones de bloqueo:
– un proceso Pi
requiere una instancia de un recurso tipo R1 retenida
por otro proceso Pj que se encuentra en espera y bloqueado.
– dos procesos Pi y Pj
retienen una instancia de un recurso tipo R1 y
R2
respectivamente. Pi
requiere una instancia del recurso tipo R2 y Pj
una instancia del recurso tipo R1
.
– en un grupo de procesos, cada uno está esperando un evento que
puede ser causado solo por otro proceso del grupo.

Condiciones necesarias para el bloqueo mutuo:

• Exclusión mutua
• Retención y espera
• No apropiación
• Espera circular
Estas condiciones deben darse simultáneamente
grafo de asignacion de recursos
es un grafo que permite identificar posibles estados de bloqueos mutuos .
-Bloqueos mutuos se deven cumplir 4 condiciones:
Exclucion mutua :dos o mas procesos no pueden compartir el mismo recurso a la vez
Retencion de recursos y espera:Si un proceso toma un recurso y necesita otro adiccional no libera el primero de ellos.
No deve permitir la expropiacion de recursos ;Si un proceso esta utilisando un recurso el S.O no se lo puede quitar.
Existencia de espera sircular:Todos los procesos esperan por un recurso que estan ocupados por otro preoceso,de la Sgte forma P1-->R1-->P2-->P3-->...Rn-->P1
Grafo de asignacion de Recursos son las condiciones para generar BM
a)Exclucion Mutua:Si Px tiene un recurso ,Py no puede utilizarlo
b)Retener recurso y esperar:Px esta ocupando un Ry y Px quiere pedir otro ,sinn liberar el 1°
c)No esxprpiacion de recursos:Si Px tiene un recurso Ry,el S.O u otro proceso no puede quitarselo
d)Espera circular:P0-->R0-->P1
P1-->R1-->P2
Px-->Rx-->P0


Mecanismo para prevenir bloqueos mutuos

Hay tres métodos para tratar el problema del bloqueo:

1) Usar un protocolo para asegurar que el sistema nunca entrará en un estado de bloqueo.
2) Permitir entrar en un estado de bloqueo y luego recuperarse.
3) Ignorar el problema.

Hay mecanismos para prevenir los bloqueos mutuos, como lo es el esquema llamado esperar morir, en el cual un proceso más antiguo debe esperar a que un proceso más joven libere su recurso. O sea que mientras más viejo se hace el proceso, más tiende a esperar. Y el otro es el llamado esquema herir-esperar, en el cual un proceso más viejo, nunca espera a un más joven.

Detección del bloqueo.

Si un sistema no posee un algoritmo de prevención o de evitación de bloqueo, lo más probable es que ocurra el bloqueo en el. Por lo cual el sistema debe poseer un algoritmo que examine el estado del sistema para ver si ha ocurrid un bloqueo, y un algoritmo para recuperarse del bloqueo. Existen sistemas con única instancia por cada tipo de recurso, en el que se debe aplicar el esquema del grafo wait-for, como también están los sistemas con varias instancias por cada tipo de recurso, en los cuales se emplea un algoritmo similar al algoritmo del banquero.

Algoritmo del banquero.

Es una forma de evitar el interbloqueo. Es un acercamiento teórico para evitar los interbloqueos en la planificación de recursos. Requiere conocer con anticipación los recursos que serán utilizados por todos los procesos. Esto último generalmente no puede ser satisfecho en la práctica. Este algoritmo usualmente es explicado usando la analogía con el funcionamiento de un banco. Los clientes representan a los procesos, que tienen un crédito límite, y el dinero representa a los recursos. El banquero es el sistema operativo. Este algoritmo mantiene al sistema en un estado seguro para de esta manera evitar el interbloqueo.

Recuperación del bloqueo.

Cuando el algoritmo detecta un bloqueo, lo que hace es avisar al sistema que existe un bloqueo, o simplemente dejar que el sistema se recupere solo. Para romper un bloqueo el sistema aborta uno o más procesos hasta romper la espera circular, o apropiar algunos recursos de uno o más procesos bloqueados. Hay dos métodos para eliminar bloqueos abortando procesos, que son abortando todos los procesos bloqueados, o abortar de un ciclo a la vez hasta eliminar el ciclo del bloqueo. Y finalmente la apropiación de recursos se trata de apropiarse de recursos de los procesos para darlos a otros procesos hasta romper el ciclo del bloqueo. Esto implica resolver tres cuestiones: Selección de una víctima, Rollback e inanición.

Unidad 2 Parte 2 (2.2)

- SINCRONIZACIÓN DE PROCESOS
Un proceso es cooperativo si puede afectar o ser afectado por los otros procesos que se están ejecutando en el sistema.

•La cooperación entre procesos requiere: la ejecución concurrente de los mismos, mecanismos de comunicación y mecanismos de sincronización
Al haber procesos concurrentes se deben emplear mecanismos para asegurar la consistencia de los datos.
Como ejemplo, supongamos que tenemos 3 procesos concurrentes que quieren modificar un mismo archivo. Si los 3 acceden a este al mismo tiempo el archivo quedará con valores incorrectos. Para resolver problemas como este se ideó la sección crítica, que es el segmento de código que accede a los recursos. Sólo puede haber una sección crítica en ejecución por vez, así nos aseguramos que los datos quedan consistentes.
- LA SECCIÓN CRITICA 
El problema de la seción crítica consiste en diseñar un protocolo que los procesos puedan usar para cooperar de esta forma.
Cualquier solución al problema de la sección crítica deberá satisfacer los tres requisitos siguiente:
· Exclusión mutua.- Si el proceso Pi está ejecutándose en su sección crítica, los demás procesos no pueden estar ejecutando sus secciones críticas.
· Progreso.- Si ningún proceso está ejecutando su sección crítica, y algunos procesos desean entrar en sus correspondientes secciones críticas, sólo aquellos procesos que no estén ejecutando sus secciones restantes pueden participar en la decisión de cuál será el siguiente que entre en su sección crítica, y esta selección no se puede posponer indefinidamente.
- Concurrencia y paralelismo
• Hay concurrencia entre varios procesos cuando existen al mismo tiempo.
PROCESOS CONCURRENTES
• Hay paralelismo entre varios procesos cuando se ejecutan al mismo tiempo.
PROCESOS PARALELOS
• El paralelismo requiere un soporte físico: varios procesadores.
• La concurrencia es el caso general y el paralelismo un caso particular.
• La concurrencia (y el paralelismo) se refiere a la ejecución de código:
Hay procesos concurrentes y flujos concurrentes.
• Hablaremos en general de flujos concurrentes:
Pueden ser del mismo proceso o diferentes procesos.
Pueden correr en un único procesador o varios.
- PETERSON, DEKKER:
• 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.
• Peterson desarrolló el primer algoritmo (1981) para dos procesos que fue una simplificación del algoritmo de Dekker para dos procesos. Posteriormente este algoritmo fue generalizado para N procesos.
SEMÁFOROS Y MONITORES:
Los semáforos ejercen un control sobre los procesos para saber quien accede a los recursos, para que dos o más procesos no accedan simultáneamente a estos. Estos Usan dos tipos de operaciones para saber el estado del programa (para saber si ya utilizo el recurso o está esperando a que otro proceso lo desocupe)
Un monitor es, esencialmente, una colección de datos y de procedimientos para su manipulación junto con una secuencia de inicialización. Las variables de datos globales son generalmente privadas al monitor por lo que solo son accesibles a los procedimientos de este.

Sunday, October 31, 2010

Unidad 2 Parte 1 (2.1)

Gestión de procesos: Los procesos son gestionados por el sistema operativo y están formados por:
    * Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
    * Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.
    * Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
    * Otra información que permite al sistema operativo su planificación.


Definición de proceso: Un proceso es un programa en ejecución. Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación.
 Cada hilo consta de instrucciones y estado de ejecución.

Ráfagas de CPU y ráfagas de E/S: Las Ráfagas de CPU inician el proceso durante las cuales el proceso ejecuta instrucciones. En cambio las ráfagas de E/S es donde el proceso espera o utiliza por la Entrada o Salida.

Estados y transiciones de un proceso: Un proceso puede pasar por distintos estados discretos los cuales son:
  * En ejecución: El proceso ocupa la CPU actualmente, es decir, se está ejecutando.
  * Listo o preparado: El proceso dispone de todos los recursos para su ejecución, sólo le falta la CPU.
  * Bloqueado: Al proceso le falta algún recurso para poder seguir ejecutándose, además de la CPU. Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algún evento que le permita poder proseguir su ejecución.
Solamente puede haber un proceso en ejecución a la vez, pero pueden existir varios listos y varios pueden estar bloqueados.La lista de procesos listos se ordena por prioridad, de manera que el siguiente proceso que reciba la CPU será el primero de la lista.
Para explicar claramente lo que es la transicion de un proceso lo mejor es dar ejemplos que pueden provocar transiciones a un proceso, algunas son:
    * De ejecución á Bloqueado: al iniciar una operación de E/S, al realizar una operación WAIT sobre un semáforo a cero (en el tema de procesos concurrentes se estudiarán los semáforos).
    * De ejecución á Listo: por ejemplo, en un sistema de tiempo compartido, cuando el proceso que ocupa la CPU lleva demasiado tiempo ejecutándose continuamente (agota su cuanto) el sistema operativo decide que otro proceso ocupe la CPU, pasando el proceso que ocupaba la CPU a estado listo.
    * De Listo á en ejecución: cuando lo requiere el planificador de la CPU (veremos el planificador de la CPU en el tema de planificación de procesos).
    * De Bloqueado á Listo: se dispone del recurso por el que se había bloqueado el proceso. Por ejemplo, termina la operación de E/S, o se produce una operación SIGNAL sobre el semáforo en que se bloqueó el proceso, no habiendo otros procesos bloqueados en el semáforo.

Bloque de control de proceso BCP: registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular.Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.

La informacion almacenada por los bcp incluye los siguientes campos:
    * Identificador del proceso (Process Identificator -PID-, de sus siglas en Inglés).
    * Estado del proceso. Por ej. listo, en espera, bloqueado.
    * Contador de Programa: Dirección de la próxima instrucción a ejecutar.
    * Valores de registro de CPU. Se utilizan también en el cambio de contexto.
    * Espacio de direcciones de memoria.
    * Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU.
    * Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).
    * Estadísticas del proceso.
    * Datos del propietario.
    * Permisos asignados.
    * Signals pendientes de ser servidos. (Almacenados en un mapa de bits)


Funcionalidad del bloque de control de procesos:El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecución del proceso y de la utilización de recursos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a él.

Criterios de rendimiento: Se usan varias magnitudes para medir el
rendimiento de los algoritmos de planificación:
    * Utilización de CPU: % de tiempo que la CPU está ocupada
    * Tiempo de retorno: tiempo transcurrido entre la  llegada de un proceso y su finalización
    * Tiempo de espera: tiempo que un proceso  permanece en la cola de preparados
    * Tiempo de respuesta: tiempo que un proceso  bloqueado tarda en entrar en CPU, desde que ocurre el    evento que lo bloquea.

Planificación de procesos:En la mayoría de los sistemas de multiprocesador tradicional, los procesos no están dedicados al procesador. Hay colas simples de procesos y algunos casos ordenados por prioridades. En algunos casos observamos múltiples colas de procesos. Cuando hablamos de sistema con mas de un procesador las políticas de planificación ya no tiene mucho peso como cuando hablamos de sistemas monoprocesador.

Cola de planificación:  Conjunto de procesos esperando por la utilización de un determinado recurso Generalmente se implementa  mediante una lista encadenada,donde cada elemento es una estructura de control que representa la petición a servir. Su administración se lleva a cabo de acuerdo con la política de planificación ejecutada por el planificador del recurso 
Planificadores de CPU:Selecciona entre los procesos en memoria listos para ejecutar, asigna el CPU a uno de ellos Las decisiones del planificador de CPU pueden ocurrir cuando:
1. Cambia de estado ejecutando a espera
2.Cambia de estado ejecutando a listo
3.Cambia de estado esperando a listo
4.Termina

Cambio de contexto: Un cambio de contexto consiste en la ejecución de una rutina perteneciente al núcleo del sistema operativo multitarea de una computadora, cuyo propósito es parar la ejecución de un proceso para dar paso a la ejecución de otro distinto.
                        -Como funciona:
                                       Para hacer realidad la ejecución concurrente en primer lugar es necesario que el programa en ejecución se detenga voluntariamente. Puesto que esto no va a ocurrir nunca, es imprescindible la intervención del hardware. Gracias a las interrupciones generadas por el propio ordenador, es posible expulsar el programa en ejecución para dar paso al sistema operativo.
Cuando esto ocurre, el sistema operativo ejecuta inmediatamente la rutina de cambio de contexto. Esta rutina realiza las siguientes operaciones en el orden indicado:

   1. Salvar el estado del programa que se estaba ejecutando. El estado, también denominado contexto, consiste en los valores de todos los registros del microprocesador. Se copian en la memoria principal.
   2. Seleccionar otro programa para ejecutar. Entre todos los programas que estén preparados para ejecutarse, la rutina selecciona uno de ellos siguiendo algún algoritmo equitativo.
   3. Restaurar el estado del programa seleccionado. Para ello, se toma el estado previamente copiado en la memoria principal y se vuelca en los registros del microprocesador.
   4. Ejecutar el programa seleccionado. La rutina termina su ejecución saltando a la instrucción que estaba pendiente de ejecutar en el programa seleccionado.



Procesos cooperativos, hilos: En sistemas operativos, un hilo de ejecución o subproceso es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea.

Comunicación entre procesos:
Es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers, o a través de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí, normalmente a través de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente.La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación). Los protocolos desarrollados para internet son los mayormente usados: IP (capa de red), protocolo de control de transmisión (capa de transporte) y protocolo de transferencia de archivos , protocolo de transferencia de hipertexto (capa de aplicación).Los procesos pueden estar ejecutándose en una o más computadoras conectadas a una red.

Excepciones: Es una técnica que realiza el tratamiento de errores de un programa en ejecución

Planificación de CPU: La planificación de la CPU, en el sentido de conmutarla entre los distintos procesos, es una de las funciones del sistema operativo. Este despacho es llevado a cabo por un pequeño programa llamado planificador a corto plazo o dispatcher (despachador). La misión del dispatcher consiste en asignar la CPU a uno de los procesos ejecutables del sistema, para ello sigue un determinado algoritmo. En secciones posteriores estudiaremos algunos algoritmos posibles. Para que el dispatcher conmute el procesador entre dos procesos es necesario realizar un cambio de proceso.
Los acontecimientos que pueden provocar la llamada al dispatcher dependen del sistema (son un subconjunto de las interrupciones), pero son alguno de estos:
 *El proceso en ejecución acaba su ejecución o no puede seguir ejecutándose (por una E/S, operación WAIT, etc).
 *Un elemento del sistema operativo ordena el bloqueo del proceso en ejecución (ver estados de un proceso).
 *El proceso en ejecución agota su cuantum o cuanto de estancia en la CPU.
 *Un proceso pasa a estado listo.


Planificación Apropiativa y No ApropiativaPlanificación  no apropiativa:
           - Una vez asignada CPU sólo se retira en caso de bloqueo
           - Posibilidad de devolución explícita
       *Ventajas:
            - Determinismo
            - Menor nº de conmutaciones ? menor sobrecarga
      *Inconvenientes:
            - Proceso largo monopoliza la CPU
            - Baja fiabilidad

      * Planificación  apropiativa:
            - El planificador puede retirar la CPU
      *Ventajas e inconvenientes:
            -Al revés que No Apropiativa
      *Necesiaria en:
            - Sistemas multiusuarios interactivos
            - En determinadas circunstancias, en sistemas en tiempo real
Despachador:
El modulo Despachador le da el control del CPU
al procesador seleccionador por el planificador;
esto involucra:
Cambiar el contexto
Cambiar a modo de usuario
Brincar a la posición adecuada en el programa
de usuario para reiniciar el programa
Latencia de despacho – tiempo que toma al
despachador detener un proceso e iniciar otro


Criterios de planificación: Utilización de CPU – mantener el CPU tan ocupado como sea posible
Rendimiento (Throughput) –  de procesos que completan su ejecución por unidad de tiempo Tiempo de vuelta – cantidad de tiempo para ejecutar un proceso particular Tiempo de espera – cantidad de tiempo que un proceso ha esperado en la cola listos Tiempo de respuesta – cantidad de tiempo que toma desde que una solicitud se realiza hasta que se produce la primera respuesta, no salida (para ambientes de tiempocompartido)

Algoritmos de planificación de CPU: Algunos ejemplos de algoritmos de planificacion son:
 *Planificación de Plazo Fijo
     -En la planificación de plazo fijo se programan ciertos trabajos para terminarse en un tiempo específico o  plazo fijo. Estas tareas pueden tener un gran valor si se entregan a tiempo, y carecer de él si se entregan después del plazo. Esta planificación es compleja por varios motivos:
     -El usuario debe informar por adelantado de las necesidades precisas de recursos del proceso. Semejante información rara vez está disponible.
     -El sistema debe ejecutar el proceso en un plazo fijo sin degradar demasiado el servicio a los otros usuarios y debe planificar cuidadosamente sus necesidades de recursos dentro del plazo. Esto puede ser difícil por la llegada de nuevos procesos que impongan demandas imprevistas al sistema.
     -Si hay muchas tareas a plazo fijo activas al mismo tiempo, la planificación puede ser tan compleja que se necesiten métodos de optimización avanzados para cumplir los plazos.
     -La administración intensiva de recursos requerida por la planificación de plazo fijo puede producir un gasto extra substancial.
 *Planificación por Prioridad al más corto (SJF, Short Job First).
     -Al igual que en el algoritmo FIFO las ráfagas se ejecutan sin interrupción, por tanto, sólo es útil para entornos batch. Su característica es que cuando se activa el planificador, éste elige la ráfaga de menor duración. Es decir, introduce una noción de prioridad entre ráfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecución de los procesos.

 *Planficación por Turno Rotatorio (Round Robin).
     -Este es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto de la CPU entre los procesos, muy válido para entornos de tiempo compartido. Cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado cuantum o cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU. El round robin es muy fácil de implementar

Planificación de colas de múltiples niveles con retroalimentación: Con esta planificación si lo permite. La idea es separar los procesos que difieren en ráfagas de CPU. Si un proceso utiliza demasiado a la CPU , se pasará a otra cola de menor prioridad. Si un proceso espera demasiado en una cola de menor prioridad, se pasará a una cola de mayor prioridad para evitar el bloqueo indefinido (aging).

Técnica Maestro Esclavo: Disco Maestro y Esclavo,El disco duro como maestro es el disco principal, es donde se instalará el sistema operativo (generalmente toma la letra C: si el disco no esta
particionado).El disco duro esclavo será quien dependa del maestro y quebásicamente hará las veces de solo almacén. Para especificar cual sera el disco duro maestro y cual es esclavo ahi que poner ojo en el jumper pues la posicion de este dira cual disco duro es el maestro y cual el esclavo.

Saturday, August 28, 2010

Comentario sobre al segunda generación de computadoras


Bueno en esta generación se puede observar un avancé en los componentes de las computadoras ya que se dejan de usar las válvulas al vació y se comienzan a usar los transmisores ya que estos eran mas pequeños y consumían menos electricidad.
Se comenzó a usar el lenguaje de alto nivel para programar las computadoras. Los lenguajes usados para programas estas computadoras eran:
El Cobol: Este viene desde la primera generación de computadoras y se podían transferir de una generación a otra con un mínimo de esfuerzo.
El Fortran: Programa de alto nivel con fines de resolver problemas de ingeniería complejos.
Durante el desarrollo de esta segunda generación la empresa IBM fue la que buscaba  hacer computadoras más eficientes y practicas. El modelo lanzado por IBM durante esta generación fue el 1401 en el año 1960.