Nota:

Nota: Todos los archivos se podran descargar solo teniendo instalado Windows Messenger.

miércoles, 30 de noviembre de 2011

ADMINISTRACIÓN DE PROCESOS

2.1 DESCRIPCIÓN Y CONTROL DE PROCESOS

El diseño de un sistema operativo debe reflejar  ciertos requisitos generales. Todos los sistemas operativos de multiprogramación, la mayoría de los requisitos que debe satisfacer un sistema operativo están expresados haciendo referencia a los procesos:
·         El sistema operativo debe intercalar la ejecución de múltiples procesos para maximizar la utilización del procesador ofreciendo a la vez un tiempo de respuesta razonable.
·         El sistema operativo debe asignar los recursos a los procesos en conformidad con una política específica (por ejemplo, ciertas funciones o aplicaciones son de prioridad mas alta), evitando al mismo tiempo, el interbloqueo.
·         El sistema operativo podría tener que dar soporte a la comunicación entre procesos y la creación de procesos por parte del usuario, labores que pueden ser de ayuda en la estructuración de las aplicaciones.
El estudio de los sistemas operativos con un examen a la forma en que representan y controlan procesos. En primer lugar se estudian los estados de los procesos, que caracterizan el comportamiento de los mismos. Después, se verán las estructuras de datos que hacen falta para que los sistemas operativos representen el estado de cada proceso, así como otras características de los procesos que son necesarias para que el sistema operativo alcance sus objetivos.

2.2 DEFINICIÓN DE PROCESO

Un proceso es un programa en ejecución gestionado por el sistema operativo.
 De este modo, al comienzo de la ejecución del programa principal de un usuario se inicia la ejecución de un proceso.

2.3 ESTADOS DE LOS PROCESOS

LISTO
Es aquél que no está ejecutándose en un momento dado, pero que está preparado para ejecutar tan pronto como el S. O lo decida.

Ejecución
Aquél que está ejecutándose en el procesador.

Bloqueado
No puede ejecutarse en tanto no ocurra algún evento externo.

2.4 CONTROL DE PROCESOS

Ciertas instrucciones pueden ejecutarse solo en modo privilegiado. Entre éstas están la lectura o modificación de registros de control, instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, se puede acceder a ciertas regiones de memoria.
El modo menos privilegiado se conoce como modo de usuario, ya que los programas de usuario ejecutan normalmente en este modo.

2.5 PROCESOS E HILOS

Procesos
Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de procesamiento para dicho programa.
Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos. Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos,
Hilos
Es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.

Un hilo 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.
2.6 CONCURRENCIA, EXCLUSION MUTUA Y SINCRONIZACION

Comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos.
Es el punto clave de :
* Multiprogramación
* Multiproceso
* Proceso Distribuido

Puede presentarse en 3 contextos diferentes que son:

Varias aplicaciones: permitir que el tiempo de procesador de las maquinas fuese compartido dinámicamente entre varias aplicaciones activas.
Aplicaciones estructuradas: conjunto de procesos concurrentes.
Estructura del sistema operativo: algunos sistemas operativos están implementados como un conjunto de procesos.


 2.7 PRINCIPIOS GENERALES DE LA CONCURRENCIA
 En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo para dar la apariencia de ejecución simultánea. Aunque no se consigue un procesamiento paralelo real y aunque se produce una cierta sobrecarga en los intercambios de procesos de un sitio a otro, la ejecución intercalada produce beneficios importantes en la eficiencia del procesamiento y en la estructura de los programas. En un sistema multiprocesador no solo es posible intercalar procesos, sino también superponerlos.
En el caso de un sistema monoprocesador, los problemas son consecuencia de una característica básica de los sistemas multiprogramadores: la velocidad relativa de ejecución de los procesos no puede predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones y las políticas de planificación del sistema operativo.

2.8- EXCLUSION MUTUA, SOLUCION POR HARDWARE Y SOFTWARE

Exclusión Mutua
Es la comunicación requerida entre dos o más procesos que se están ejecutando en paralelo y que necesitan a la vez el uso de un recurso no compartible. Consiste en asignar el recurso no compartible a sólo uno de los procesos, mientras que los otros deben permanecer a la espera hasta que finalice la utilización de dicho recurso por el proceso al que se le asigno. Cuando este proceso termine, el recurso será asignado a uno de los procesos en espera. Se asegura el correcto uso del recurso.

Hay tipos de recursos:

* Compartibles: pueden ser usados por varios procesos de forma concurrente.
* No compartibles: en cada momento solo pueden ser usados por un único proceso.

Razones:
Por la naturaleza física del recurso; Porque la acción sobre el recurso por parte de un proceso puede interferir en la acción de otro proceso.

Las soluciones hardware se dividen en dos tipos:

•Optimistas.
◦Consideran que lo mas probable es que no haya conflictos, y si los hay sea en número reducido, por lo que permiten cualquier acceso a la variable compartida. En caso de conflicto, mantienen la integridad del sistema descartando las actualizaciones.
•Pesimistas.
◦Bloquean todo aquello que pueda interferir.
◦Actualizan la variable.
◦Desbloquean lo bloqueado al principio. 

2.9-SEMAFOROS


Semáforos binarios
   Un semáforo binario es un indicador de condición (S) que registra si un recurso está disponible o no. Un semáforo binario sólo puede tomar dos valores: O y 1. Si, para un semáforo binario. S=1 entonces el recurso está disponible y la tarea lo puede utilizar; si S=0 el recurso no está disponible y el proceso debe esperar.
Los semáforos sólo permiten tres operaciones sobre ellos:
      Espera.
      Señal.
      Inicializar.

El wait y el signal son indivisibles y no se pueden interrumpir, es decir, no se pueden ejecutar ambas a la vez.

Semáforos generales.
Son un tipo de semáforos utilizados cuando tenemos varias instancias de un mismo recurso. Este tipo de semáforos se inicializa al número de instancias que tengamos.

2.10- MONITORES

Un monitor es una estructura formada por una cabecera que los identifica, un conjunto de variables globales a todos los procedimientos del monitor, un conjunto de procedimientos y un bloque de inicialización, el cual se ejecuta una única vez, cuando se crea el monitor.

Para resolver la sincronización se utilizan dos instrucciones, wait (bloquea siempre) y signal, y actúan sobre variables condición que son colas y además no tienen valor.

2.11-PASO DE MENSAJE

El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc.  
Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos. Un mensaje es la solución del sistema operativo que nos permitirán la sincronización de procesos y la comunicación entre ambos.
Suelen tener dos partes:
- Cabecera (obligatoria): IdProcesoEmisor, IdProcesoReceptor, Tipo, Longitud
- Cuerpo (optativo): Información adicional
Tenemos dos tipos de órdenes para gestionar mensajes (para enviar y recibir):
- Enviar: send (destino, mensaje)
- Recibir: receive (origen, mensaje)
Direccionamiento.
a) Directo. Se especifican emisor y receptor de forma explícita.
b) Implícito: El emisor especifica quien es el receptor, pero el receptor no especifica quién es el emisor.
c) Indirecto. En este direccionamiento los mensajes no se envían directamente al receptor, sino que se envían a una estructura de datos denominada buzón o mailbox. Una gran ventaja de esto es que podemos enviar a cualquier buzón cualquier mensaje. Los mensajes no tienen que ir dirigidos específicamente a un proceso.
Propiedad de los buzones.
Tenemos dos casos:
- El proceso es el propietario. El buzón existe mientras existe el proceso y sólo el propietario puede leer datos del buzón
- El propietario del buzón es el SO. La propiedad del buzón puede transmitirse entre procesos, lo que permite que varios procesos puedan leer.
Sincronización de los mensajes.
a) Cuando enviamos:
- El proceso se bloquea hasta que el receptor reciba el mensaje (envío bloqueante)
- No se bloquea y continua haciendo operaciones (envío no bloqueante)
b) Al recibir el mensaje:
- Al mirar a ver si está el mensaje, si ya ha llegado, lo cojo y continúo.


2.12-CONCURRENCIA E INTERBLOQUEO (Dead look)

La concurrencia es el solapamiento en el tiempo de la ejecución de varias
actividades.Dos procesos, P1 y P2, se ejecutan concurrentemente si la primera
instrucción de P1 se ejecuta entre la primera y la última instrucción de P2.
Hay dos tipos de concurrencia:

Interbloqueos (Deadlooks)
Es una situación en donde un grupo de procesos están permanentemente bloqueados como consecuencia de que cada proceso ha adquirido un subconjunto de los recursos necesarios para su operación y esta esperando la liberación de los restantes recursos mantenidos por otros del mismo grupo, haciendo así imposible que ninguno de los procesos pueda continuar.
Un proceso esta interbloqueado si está esperando por un evento determinado que nunca va a ocurrir.

2.3- PRINCIPIOS DE INTERBLOQUEO

todos los interbloqueos suponen demandas contradictorias de recursos por parte de dos o mas procesos. 
define que va primero y después o en su defecto pausar el proceso para usar un recurso.

2.14- ACCIONES A REALIZAR ANTE UN INTERBLOQUEO, PREVENCIÓNDETECCIÓNPREDICCIÓN Y EVITAR

Prevención
Condiciona al sistema para que elimine toda posibilidad de que se produzca interbloqueo. 

Evitacion
Condiciona al sistema para que esquive determinadas situaciones con posibilidad de interbloqueo.

Detección
Determinan si existe o no un interbloqueo, e identifica cuáles son los procesos y recursos implicados en él.

Recuperación
Pretenden romper el interbloqueo retirando una o más de las condiciones necesarias.


Condiciones para producir un interbloqueo
* condición de exclusión mutua
* condición de posesión y espera
* condición de no apropiación
* condición de espera circular