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.
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.
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.
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.
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
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.
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”).