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.