sábado, 2 de julio de 2016

Administrador del Procesador

El sistema operativo administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. El tipo de programador depende completamente del sistema operativo, según el objetivo deseado.

El procesador es la parte de la máquina que lleva a cabo los cálculos y ejecuta los programas. También se le reconoce con el nombre de CPU (Central Proccesing Unit).
Un programa es una unidad inactiva, como un archivo almacenado en un disco. Un programa no es un proceso. Para un sistema operativo, un programa es una unidad de trabajo enviada por el usuario.
Por otro lado, un proceso es una entidad activa, que requiere un conjunto de recursos ara llevar a cabo su función, entre ellos un procesador y registros especiales.


En los sistemas de un solo usuario, el procesador está ocupado cuando el usuario ejecuta una tarea, en todos los demás momentos está ocioso. La administración del procesador en este entorno es simple. Sin embargo, cuando existen muchos usuarios con muchas tareas en el sistema (multiprogramación) hay que asignar el procesador a cada tarea de una manera justa y eficiente.

La multiprogramación requiere que el procesador se asigne a cada tareas o proceso durante un periodo y se desasigne en el momento apropiado. Si el procesador se desasigna durante la ejecución de un programa, esto debe ocurrir de manera que se pueda reiniciar después con toda la facilidad posible.



PLANIFICACIÓN DE TRABAJOS EN COMPARACIÓN CON PLANIFICACIÓN DE PROCESOS.

Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que haya tomar una decisión, el planificador debe decidir cuál de los procesos que compiten por la posesión de un determinado recursos lo recibirá. El administrador del procesador está compuesto por dos sub-administradores. Se conocen como el planificador de trabajos y el planificador de procesos.






Cada trabajo o programa pasa a través de una jerarquía de administradores. El primero que encuentra es el planificador de trabajos, también se conoce como planificador de alto nivel. Este sub-administrador sólo se ocupa de elegir los trabajos de una cola de trabajos que llegan y colocarlas en la cola de procesos con base en las características de cada uno. Su meta es mantener ocupada la mayor parte de los componentes del sistema de la computadora la mayor parte del tiempo.


Después que el planificador de trabajos pone un trabajo en la cola de listo, el planificador de procesos se hace cargo. Define qué trabajos tendrán derecho al CPU, cuándo y cuánto tiempo. También decide cuándo debe interrumpirse el procesamiento, determina a qué colas se debe pasar el trabajo durante su ejecución y reconoce cuándo ha concluido un trabajo y ya no hay necesidad de seguir procesándolo. 

 Niveles Objetivos Criterios Planificación
 Se consideran tres niveles importantes de planificación, los que se detallan a continuación:
Planificación de alto nivel: Se encarga de llevar procesos de disco a memoria y viceversa. Seleccionando los trabajos que deben admitirse en el sistema.
También se denomina Planificación de trabajos. Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión. Administrar todos los recursos del sistema excepto el CPU. Mantiene las colas de procesos bloqueados y suspendidos. Controla la creación de procesos. Maneja el nivel de multiprogramación.
Planificación de nivel intermedio: En algunos casos, en especial cuando el sistema está sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramación, y por lo tanto, permitir que los trabajos se completen más aprisa. Este subadministrador controla los trabajos que se intercambian hacia fuera y de regreso.
Determina a qué procesos se les puede permitir competir por la cpu. Efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. Equilibrar la administración de trabajos en el sistema con la asignación del CPU a dichos procesos. Nivelar la carga del sistema (procesos activos y pasivos).
•Planificación de bajo nivel: Se encarga de pasar de un proceso a otro en memoria principal. Determinando a cuál proceso listo se le asignará el CPU cuando éste se encuentra disponible. Determina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que “despacha” la cpu al proceso.


Objetivos de la planificación
•Ser justa: Todos los procesos son tratados de igual manera. Ningún proceso es postergado   indefinidamente.
•Maximizar la capacidad de ejecución: Maximizar el número de procesos servidos por             unidad de tiempo.
•Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta           aceptables: En un máximo de unos segundos.
•Ser predecible: Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad     de tiempo independientemente de la carga del sistema.
•Minimizar la sobrecarga: No suele considerarse un objetivo muy importante.
•Equilibrar el uso de recursos: Favorecer a los procesos que utilizarán recursos                       infrautilizados.
•Equilibrar respuesta y utilización: La mejor manera de garantizar buenos tiempos de             respuesta es disponer de los recursos suficientes cuando se necesitan, pero la utilización     total de recursos podrá ser pobre.

Criterios de la planificación
-Equidad Garantizar que cada proceso obtiene su proporción justa de la cpu.
-Eficacia Mantener ocupada la cpu el ciento por ciento del tiempo.
-Tiempo de respuesta Minimizar el tiempo de respuesta para los usuarios interactivos.
-Tiempo de regreso Minimizar el tiempo que deben esperar los usuarios por lotes(batch) para obtener sus resultados.

Técnicas Administración del Planificador
Las disciplinas de planificación pueden ser:
• Expropiativas
• No expropiativas

Los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido. Algunos de estos son:
a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilización. Aunque puede parecer lógico intentar mantener este parámetro próximo al 100%, con un valor tan elevado otros aspectos importantes de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera.
b) Rendimiento: Es una medida del número de procesos completados por unidad de tiempo. Por ejemplo 10 procesos por segundo.
c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un proceso se crea o presenta hasta que completa por el sistema.
d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador. Puede resultar una medida más adecuada de la eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo.  
e) Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo que transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción de la rutina de servicio de dicho evento. El criterio de selección de un algoritmo se suele basar en la maximización o minimización de una función de los parámetros anteriores.


Estado de los trabajos y procesos


A medida que un trabajo se mueve por el sistema, siempre estará en uno de tres a cinco estados, conforme cambia de ACEPTADO a LISTO a EJECUCIÓN a BLOQUEADO y por último a TERMINADO. Éstos se conocen como estados del trabajo o estados del proceso.

He aquí cómo cambia el estado de un trabajo cuando un usuario envía un trabajo al sistema. Cuando el sistema lo acepta lo pone en ACEPTADO en una cola. En algunos sistemas el controlador de disco genera una tabla con las características de cada trabajo de la cola y advierte las básicas, como una estimación del tiempo de uso del CPU, prioridad, dispositivos especiales de entrada y salida (E/S) requeridos y el máximo de memoria necesaria. El planificador de trabajos usa esta tabla para decidir cuál será el siguiente trabajo que se va a ejecutar.

Desde ACEPTADO, el trabajo pasa a LISTO cuando está listo para ser ejecutado pero está en espera del CPU. En EJECUCIÓN significa que el trabajo está siendo procesado. En BLOQUEADO quiere decir que el trabajo no puede continuar hasta que no se le asigne un recurso específico o se termine una operación de E/S. al completarse, el trabajo está TERMINADO y se devuelve al usuario.



Bloques de control de procesos y colas


Cada proceso en el sistema está representado por una estructura de datos, conocidas como bloque de control de procesos (PCB). Contiene la información básica sobre la tarea, incluyendo lo que es, dónde va, cuánto de su procesamiento se ha completado, dónde está almacenada y cuánto ha gastado en recursos.


El bloque de control de procesos (PCB) de un trabajo se crea cuando el planificador de trabajos lo acepta y se actualiza conforme éste avanzada desde el principio hasta el final de su ejecución.

Las colas utilizan los PCB para llevar el control de los trabajos. El PCB contiene los datos del trabajo necesarios para que el sistema operativo administre el procesamiento de éste. Estos están vinculados para formar las colas.

Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. 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. 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. La información almacenada en un BCP incluye típicamente algunos o todos los campos siguientes:

  • 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.
  • 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 (owner).
  • Permisos asignados.
  • Signals pendientes de ser servidos. (Almacenados en un mapa de bits).

Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseño de BCP, con el conjunto de metadatos necesarios para la administración. Puede medir desde 32 bits a 1024. Su denominación cambia según el sistema operativo, por ej. en IBM se designa PSW por palabra de estado de proceso. Difiere significativamente entre los sistemas de procesamiento por lotes (BATCH) y los sistemas interactivos.
Algunos sistemas de multiprogramación incluyen información de mantenimiento con el propósito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos.
Una vez creado, el BCP se rellena con los atributos definidos como parámetros que se hallan en la plantilla del proceso o que son especificados como parámetros de la llamada al sistema operativo crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestión se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente


MEMORIA CACHÉ


La memoria caché es una versión de rápido acceso, diseñada para resolver las diferencias de velocidad entre un CPU muy rápido y una memoria principal lenta. Lo hace almacenando una copia de los datos de uno frecuente en una memoria de fácil acceso en vez de la memoria principal, cuyo acceso es más lento.
La memoria caché esta ubicada entre el procesador y la memoria principal.

Un ejemplo del uso de la memoria caché es: un archivo de marcalibros en un navegador de Web que la almacena direcciones de uso frecuente; esto es, el archivo marcalibros solo almacena un porcentaje pequeño de las direcciones calidas de Web, pero las posibilidades son relativamente elevadas de que usted las visite.


Un controlador de caché determina la frecuencia con que se utilizas los datos, transfiere los que se usan a menudo a la memoria caché y los elimina cuando identifica datos de uso aun mas constante.


Los datos en la memoria caché se deben considera como temporales. En el caso de una falla de energía, se pierden y no se pueden recuperar a diferencia de los datos escritos en el almacenamiento secundario.

LAS INTERRUPCIONES O FALLAS


Estas ocurren cuando el quantum de tiempo se expira y el procesador es designado del trabajo en ejecución y asignado a otra.
Las interrupciones internas o interrupciones sincrónicas, también ocurren como resultado directo de la operación aritmética o instrucción de trabajo en proceso.

Las operaciones aritméticas ilegales, como las que se dan a continuación, pueden generar interrupciones:

- Intentos de dividir entre cero.
- Operaciones de punto flotante que generan un superflojo (o desbordamiento) o un subflujo

- La suma o sustracción de punto fijo que cause un superflojo aritmético.


Las instrucciones ilegales de trabajos como las que siguen también pueden generar interrupciones:
- Intento de tener acceso a localidades de almacenamiento protegidas o inexistentes.
- Intentos de utilizar un código de operación no definido.
- Operación sobre datos inválidos.
- Intentos de efectuar cambios en el sistema, como tratar de modificar el tamaño del quantum de tiempo.


El programa de control que maneja la secuencia de interrupción de los hechos se conoce como manejados de interrupciones. Cuando el SO detecta un error no recuperable, el manejador de interrupciones sigue esta secuencia:

Se describe y se almacena el tipo de interrupción – para enviarlo al usuario como mensaje de error.

Se guarda el estado del proceso interrumpido, incluyendo el valor del contador del programa, la especificación del modo y los contenidos de los registros.
Se procesa la interrupción: el mensaje de error y el estado del proceso interrumpido se envían al usuario; la ejecución del programa se detiene, cualquier recurso asignado al trabajo se libera y el trabajo sale del sistema.
El procesador reanuda una operación normal.
Si estamos tratando con interrupciones que no son recuperables, el trabajo termina en el paso 3. sin embargo, cuando el manejador de instrucciones trabaja con una interrupción de E/S, un quantum de tiempo u otra interrupción recuperable, el paso 3 detiene el trabajo y lo mueve a la cola apropiada de dispositivos de entrada y salida o a la cola de LISTOS (“fuera de tiempo”).