Es el conjunto de actividades o tareas, mutuamente relacionadas entre sí que admite elementos de entrada durante su desarrollo ya sea al inicio o a lo largo del mismo, los cuales se administran, regulan o autorregulan bajo modelos de gestión particulares para obtener elementos de salida o resultados esperados . Las entradas al proceso pueden ser iniciales o intermedias. Asimismo, los resultados o salidas a lo largo del proceso pueden ser intermedios o finales.
Dentro del proceso, hay un tratamiento de entradas de diversos tipos en cada actividad o tarea agregándoles valor, de tal manera que se cumplan los requerimientos o necesidades del cliente interno o externo.
En un proceso las instrucciones de un programa van a ser ejecutadas por el microprocesador el cual va a interpretar la instrucción para luego ejecutarla .
Cada instrucción es leída una a la vez, desde la memoria, por el procesador y cada instrucción es ejecutada por el procesador. La repetición de la lectura y ejecución conforman la ejecución de un programa. Dicha ejecución puede detenerse si la máquina se apaga, ocurre un error que no puede ser recuperado, o si, se encuentra una instrucción en el programa que detenga la computadora.
Estados de un proceso
Dentro del proceso, hay un tratamiento de entradas de diversos tipos en cada actividad o tarea agregándoles valor, de tal manera que se cumplan los requerimientos o necesidades del cliente interno o externo.
En un proceso las instrucciones de un programa van a ser ejecutadas por el microprocesador el cual va a interpretar la instrucción para luego ejecutarla .
Cada instrucción es leída una a la vez, desde la memoria, por el procesador y cada instrucción es ejecutada por el procesador. La repetición de la lectura y ejecución conforman la ejecución de un programa. Dicha ejecución puede detenerse si la máquina se apaga, ocurre un error que no puede ser recuperado, o si, se encuentra una instrucción en el programa que detenga la computadora.
Estados de un proceso
La idea principal de un sistema multiproceso, es que el sistema operativo gestione los recursos disponibles, memoria, CPU, etc entre los procesos que en ese momento trabajan en el sistema, de tal forma que, para ellos, el sistema se comporte como si fuera monousuario. Así que, en un sistema monoprocesador, la CPU se reparte entre los procesos que se tengan en ese momento. Como es lógico, sólo un proceso puede estar ejecutándose, los demás estarán esperando para poder ocupar la CPU.
Diferentes estados de un proceso
- En ejecución: cuando un proceso se encuentra en ejecución .
- Listo: el procesos se encuentra listo para ser ejecutado, esperando que el planificador asi lo disponga.
- Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como la finalización de una operación de Entrada/Salida solicitada por una llamada al sistema operativo.
- Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.
- Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético.
El proceso nulo o vacío
Un problema que debe resolver un sistema operativo multitarea es, qué debería hacer el sistema cuando no hay nada que ejecutar. Por ejemplo cuando la cola de listos se encuentra vacía.
Este problema es resuelto en muchos sistemas operativos con el proceso NULO que es creado por el sistema en el momento de arranque. El proceso nulo nunca termina, no tiene E/S y tiene la prioridad más baja en el sistema. En consecuencia la cola de listos nunca está vacía, además la ejecución del planificador puede hacerse más rápida al eliminar la necesidad de comprobar si la cola de listos está vacía o no. Algunas de las tareas que se le pueden dar al proceso nulo, por ejemplo, es realizar estadísticas de uso de procesador, o asistencia de vigilancia de la integridad del sistema, etc.
La planificación es el proceso por el cual el sistema operativo selecciona que proceso ejecutar. La selección del proceso se basa en alguno de los algoritmos de planificación que se describen más abajo.
Tipos de planificacion
La planificación apropiativa en la cual el sistema operativo puede cortar en cualquier momento la ejecución de un proceso
La planificación no apropiativa en la cual una vez que el proceso esta en ejecución el sistema operativo no puede sacarlo de ese estado.
Objetivos de la planificación
Equidad todos los procesos deben poder ejecutarse
Eficacia, mantener ocupada la CPU un 100% del tiempo
Tiempo de respuesta, minimizar el tiempo de respuesta al usuario
Tiempo de regreso, minimizar el tiempo que deben esperar los usuarios por lotes para obtener sus resultados
Rendimiento, maximizar el número de tareas procesadas por hora.
Algoritmos de planificación
Los algoritmos de planificación son los que definen que política se va a seguir para que un proceso pase al estado de ejecución.
En este tipo de planificación cada proceso tiene asignado un quantum de tiempo para ejecutarse y en el caso de que no pueda terminar la ejecución en su quantum el proceso pasa de nuevo a la cola de procesos para ser ejecutado por otro quantum luego de recorrer la cola para asegurarse que todos los procesos reciban ese quantum de procesamiento.
Planificación por prioridad
En la planificación round-robin todos los procesos son tratados con la misma prioridad. Para el caso de este tipo de planificación a cada proceso se le asigna una prioridad y los mismos son ejecutados
Colas múltiples
Colas múltiples
Las colas múltiples están basadas en una pila que sirve como índice de una lista de procesos que se tienen que ejecutar.
Primero el trabajo más corto(SJF)
Este tipo de algoritmo de planificación se usa para trabajos en batch o de procesamiento por lotes en los cuales se puede saber cual es el tiempo de duración de la ejecución de cada proceso y entonces se puede seleccionar primero el trabajo más corto. El problema que se presenta con éste algoritmo es que los grandes procesos podrían sufrir de inanición dado que cualquier proceso pequeño se "cuela" sobre uno de mayor tamaño y como resultado final se podría dar el caso que el proceso grande nunca obtenga procesamiento. La prioridad de este proceso es inversamente proporcional al tiempo de ejecución.
FIFO(FIRST IN FIRST OUT)
En este otro tipo de algoritmo se atiende a los procesos de acuerdo al orden como van llegando el primero que entra es el primero que sale.
Menor tiempo restante (SRT Shortest remaining time first)
Esta es la versión no apropiativa del SPN, en la que el planificador siempre elige al proceso que le queda menos tiempo esperado de ejecución. Por lo tanto, el planificador debe disponer de una estimación del tiempo de proceso para poder llevar a cabo la función de selección, existiendo el riesgo de inanición para procesos largos.
Al contrario que el turno rotatorio, este algoritmo es más eficiente debido a que no se produce overhead muy frecuente debido a que las interrupciones no son producidos por el reloj del sistema. Por el contrario, se deben tener en cuenta los tiempos de servicio transcurridos, lo que contribuye a la sobrecarga. El SRT también debería producir tiempos de retorno mejores que los del SPN, puesto que los trabajos cortos reciben una atención inmediata y preferente a los trabajos largos.
Planificación a largo plazo
Este planificador está presente en algunos sistemas que admiten además de procesos interactivos trabajos por lotes. Usualmente, se les asigna una prioridad baja a los trabajos por lotes, utilizándose estos para mantener ocupados a los recursos del sistema durante períodos de baja actividad de los procesos interactivos. El objetivo primordial del planificador a largo plazo es el de dar al planificador de la CPU una mezcla equilibrada de trabajos, tales como los limitados por la CPU (utilizan mucho la CPU) o la E/S. Así, por ejemplo, cuando la utilización de la CPU es baja, el planificador puede admitir más trabajos para aumentar el número de procesos listos y, con ello, la probabilidad de tener algún trabajo útil en espera de que se le asigne la CPU. A la inversa, cuando la utilización de la CPU llega a ser alta, y el tiempo de respuesta comienza a reflejarlo, el planificador a largo plazo puede optar por reducir la frecuencia de admisión de trabajos.Normalmente, se invoca al planificador a largo plazo siempre que un proceso termina. La frecuencia de invocación depende, pues, de la carga del sistema, pero generalmente es mucho menor que la de los otros dos planificadores. Esta baja frecuencia de uso hace que este planificador pueda permitirse utilizar algoritmos complejos, basados en las estimaciones de los nuevos trabajos.
Planificación a mediano plazo
Es el que decide sacar de memoria central y llevar a disco a aquellos procesos inactivos o a los activos cuyos estados sean bloqueado momentáneamente o temporalmente o los suspendidos y luego, cuando desaparezcan las causas de sus bloqueos, traerlos nuevamente a memoria para continuar su ejecución. Este tipo de planificador se encuentra solo en algunos sistemas especialmente en los de tiempo compartido, ya que permite mantener un equilibrio entre los procesos activos e inactivos.
Este planificador puede ser invocado cuando quede espacio libre de memoria por efecto de la terminación de un proceso o cuando el suministro de procesos caiga por debajo de un límite especificado.
Planificación a corto plazo
Este planificador puede ser invocado cuando quede espacio libre de memoria por efecto de la terminación de un proceso o cuando el suministro de procesos caiga por debajo de un límite especificado.
Planificación a corto plazo
Es el responsable de decidir quién, cuándo, cómo y por cuánto tiempo recibe el procesador un proceso que está preparado para ejecutar y los recursos a esta altura ya deben estar todos disponibles para este trabajo. Además en sistemas operativos con esquemas expropiativos (se quita el recurso procesador al proceso) verifica las interrupciones.
El planificador a corto plazo es invocado cada vez que un suceso (interno o externo) hace que se modifique el estado global del sistema. Por ejemplo:
Tics de reloj (interrupciones basadas en el tiempo).
Interrupciones y terminaciones de E/S.
La mayoría de las llamadas operacionales al sistema operativo (en oposición a las llamadas de consulta).
El envío y recepción de señales.
La activación de programas interactivos.
Interbloqueo
Cuando un proceso de un sistema de multiprogramación espera en balde a que se presente un evento específico, se dice que se encuentra en un estado de interbloqueo o bloqueo mutuo. Los procesos que pueden encontrase en esta situación pueden ser uno o variosEn los sistemas de multiprogramación, compartir recursos es uno de los principales objetivos del sistema operativo. Cuando se comparten recursos entre una población de usuarios o procesos, cada uno de los cuales mantiene un control exclusivo sobre ciertos recursos asignados a él, es posible que se produzcan bloqueos mutuos que impedirán la terminación de algunos de los procesos del sistema.
Casos de Interbloqueos
El caso más simple de interbloqueo sería el de un sólo proceso que espera la ocurrencia de un evento y, sin embargo, el sistema no incluye la posibilidad de señalar dicha ocurrencia. Es muy difícil detectar los bloqueos mutuos de esta naturaleza. La mayor parte de los bloqueos mutuos implican una competencia entre varios procesos por varios recursos.
Multitarea y Multiprocesador
Cuando hablamos de sistemas operativos multitarea; decimos que pueden ejecutar varias tareas al mismo tiempo y de manera concurrente. Esto no es del todo cierto tan solo los sistemas multiprocesador, con más de un procesador pueden realizar multitarea real, en un sistema que tenga un solo procesador hablamos de sensación multitarea.
En ambos casos interviene un mecanismo del sistema operativo denominado planificador. El planificador del sistema operativo es el que se encarga de administrar las distintas tareas que están en ejecución y decidir cuando ejecuta la tarea y si es aplicable en que procesador lo hace. Cuando una tarea está en ejecución tiene disponible la totalidad del procesador, no lo comparte con ninguna otra, lo mismo ocurre con el espacio de memoria, para la tarea que esta ejecutando dispone de toda la memoria disponible del sistema.
Para que haya realmente multitarea o por lo menos sensación de ella, las tareas deben compartir el procesador. Eventualmente la tarea que esta en ejecución en un determinado momento deberá retirarse y dar paso a otra tarea que ocupara su lugar, esto de lo que también se ocupa el planificador.
Cada tarea presente en un instante dado tiene su propio espacio de memoria, es decir, los datos del proceso están en un espacio lógico separado del resto de los demás de forma que, para los demás procesos todos esos datos no existen de hecho el resto de procesos no es consciente de que hay más procesos, si quiere saberlo debe preguntárselo siempre al sistema operativo mediante una llamada al sistema.
A diferencia de los monotareas que son aquellos que solo soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo.
Hilos
Los hilos son similares a los procesos ya que ambos representan una secuencia simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos son una forma de dividir un programa en dos o más tareas que corren simultáneamente, compitiendo, en algunos casos, por la CPU.
La diferencia más significativa entre los procesos y los hilos, es que los primeros son típicamente independientes, llevan bastante información de estados, e interactúan sólo a través de mecanismos de comunicación dados por el sistema. Por otra parte, los hilos generalmente comparten la memoria, es decir, acceden a las mismas variables globales o dinámicas, por lo que no necesitan costosos mecanismos de comunicación para sincronizarse. Por ejemplo un hilo podría encargarse de la interfaz gráfica iconos, botones, ventanas, mientras que otro hace una larga operación internamente. De esta manera el programa responde más ágilmente a la interacción con el usuario.
En sistemas operativos que proveen facilidades para los hilos, es más rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro.
No hay comentarios:
Publicar un comentario