INTRODUCCION
Un proceso es
un programa en ejecución. Existen 3 estados en los que puede encontrarse un
proceso, estos son: "Listo", "Bloqueado" y "En
ejecución". Para el control de los mismos internamente son almacenados en
una lista, cada uno de los nodos guarda información de un proceso. En esa
información se almacena, entre otros aspectos, el estado en que se encuentra el
proceso, el tiempo que el proceso ha usado el CPU, e información de E/S (entrada/salida). Los sistemas
operativos cuentan con un componente llamado planificador, que se encarga de
decidir cuál de los procesos hará uso del procesador. La toma de esta decisión,
así como el tiempo de ejecución del proceso, estará dada por un algoritmo, denominado Algoritmo de Planificación.
DEFINICIONES
Un proceso
puede informalmente entenderse como
un programa en ejecución.
Formalmente un proceso es: "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".
Cada proceso
tiene su contador de programa, registros y variables, aislados de otros
procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuando este
último caso sucede, el sistema operativo usa la misma región de memoria de
código, debido a que dicho código no cambiará, a menos que se ejecute una
versión distinta del programa.
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 unidad central de procesamiento para dicho programa.
- Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado y sus contenidos.
- Otra información que permite al sistema operativo su planificación.
La sincronización explícita entre
procesos es un caso particular del estado "bloqueado". En este caso,
el suceso que permite desbloquear un proceso no es una operación de
entrada/salida, sino una señal generada a propósito por el programador desde
otro proceso.
CREACIÓN DE PROCESOS
Hay cuatro eventos principales que provocan la creación de
procesos:
- El arranque del sistema.
- La ejecución, desde un proceso, de una llamada al sistema para la creación de otro proceso.
- Una petición de usuario para crear un proceso.
- El inicio de un trabajo por lotes.
Los procesos pueden contener uno o más hilos, haciendo más eficiente las tareas, asimismo la complejidad de los algoritmos de sincronización, ya que podría ocurrir la condición de carrera muy a menudo, inclusive los indeseados interbloqueos.
ESTADOS DE UN PROCESO
Los estados de un proceso obedecen a su participación y disponibilidad dentro del sistema operativo y surgen de la necesidad de controlar la ejecución de cada proceso. Los procesadores sólo pueden ejecutar un solo proceso a la vez, turnándolos para el uso de éste.
Existen procesos no apropiativos o cooperativos que básicamente ocupan todo el tiempo del procesador hasta que ellos deciden dejarlo. Los procesos apropiativos son aquellos que ocupan por un período de tiempo el procesador hasta que una interrupción o señal llega al procesador para hacer el cambio de proceso, a esto se le conoce como cambio de contexto.
Los posibles estados que puede tener un proceso son ejecución, bloqueado y listo:
- Ejecución, es un proceso que está haciendo uso del procesador.
- Bloqueado, No puede ejecutarse hasta que un evento externo sea llevado a cabo.
- Listo, ha dejado disponible al procesador para que otro proceso pueda ocuparlo.
Existen dos tipos de procesos, aquellos que se ejecutan en modo Kernel y aquellos que se ejecutan en modo usuario. Los primeros son más lentos por las llamadas al sistema que realizan, sin embargo, son más seguros por la integridad que representan. Cuando hablamos de los procesos de usuario, podemos decir que el sistema operativo podría no ser multiproceso, ya que se vale de librerías (como pthread) para hacer un multiplexado y dar la apariencia de trabajar como multiproceso.
Podría pensarse en otra clasificación, como son los procesos en primer plano y procesos en segundo plano. Los primeros interactúan con el usuario, es decir, el usuario proporciona los datos que el proceso utilizará. Los segundos, son creados para tareas bien definidas y no necesitan la intervención del usuario, por ejemplo, se puede tener un proceso en segundo plano para revisar la temperatura del disco duro constantemente, éstos también son conocidos como demonios.
Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente del computador y luego continuar su ejecución como si nada hubiera pasado.
Interrupciones internas de hardware
Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas. Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.
Aunque no podemos manejar directamente esta interrupción (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un "reloj virtual" actualizado continuamente gracias al contador del reloj interno. Únicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.
Interrupciones externas de hardware
Las interrupciones externas las generan los dispositivos periféricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores.
No es posible desactivar a las
interrupciones externas.
Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vías de comunicación llamadas puertos.
Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vías de comunicación llamadas puertos.
EL NUCLEO DEL SISTEMA OPERATIVO
El “núcleo” del Sistema Operativo controla todas las operaciones que implican procesos y representa solo una pequeña porción del código de todo el Sistema Operativo pero es de amplio uso [7, Deitel]. Generalmente permanece en el almacenamiento primario.
El proceso de interrupciones se incluye en el núcleo ya que debe ser rápido (especialmente en sistemas multiusuario), para optimizar el uso de los recursos del sistema y proveer tiempos de respuesta aceptables a los usuarios interactivos.
El núcleo inhabilita las interrupciones mientras responde a una interrupción. Las interrupciones son habilitadas de nuevo después de completar el proceso de una interrupción.
El núcleo del Sistema Operativo generalmente realiza las
siguientes funciones:
- Manipulación de interrupciones.
- Creación y destrucción de procesos.
- Cambio de estados de procesos.
- Despacho.
- Suspensión y reanudación de procesos.
- Sincronización de procesos.
- Comunicación entre procesos.
- Manipulación de bloques de control de proceso.
- Soporte de las actividades de Entrada / Salida.
- Soporte de la asignación y desasignación de almacenamiento.
- Soporte del sistema de archivos.
- Soporte de un mecanismo de llamada / regreso al procedimiento.
- Soporte de ciertas funciones contables (estadísticas) del sistema.
OBJETIVOS DE LA PLANIFICACIÓN DE PROCESOS
La Planificación de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento.
- Equidad: Todos los procesos deben ser atendidos.
- Eficacia: El procesador debe estar ocupado el 100% del tiempo.
- Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible.
- Tiempo de regreso: Reducir al mínimo el tiempo de espera de los resultados esperados por los usuarios por lotes.
- Rendimiento: Maximizar el número de tareas que se procesan por cada hora.
ALGORITMOS DE PLANIFICACIÓN
Primero en llegar primero en ser servido
Conocido como FCFS (First Come
First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a
cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su
lugar en la cola después del que llegó antes que él y se pone en estado de
listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecución
hasta que termina de hacerlo.
Prioridad al más corto
Su nombre es SJF (Shortest Job
First). El proceso que se encuentra en ejecución cambiará de estado
voluntariamente, o sea, no tendrá un tiempo de ejecución determinado para el
proceso. A cada proceso se le asigna el tiempo que usará cuando vuelva a estar
en ejecución, y se irá ejecutando el que tenga un menor tiempo asignado. Si se
da el caso de que dos procesos tengan igual valor en ese aspecto emplea el
algoritmo FCFS.
Round Robin
A cada proceso se le asigna un
tiempo determinado para su ejecución, el mismo tiempo para todos. En caso de
que un proceso no pueda ser ejecutado completamente en ese tiempo se continuará
su ejecución después de que todos los procesos restantes sean ejecutados
durante el tiempo establecido. Este es un algoritmo basado en FCFS que trata la
cola de procesos que se encuentran en estado de listos como una cola circular.
Planificación por prioridad
En este tipo de planificación a
cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de
acuerdo con esa prioridad será el orden en que se atienda cada proceso.
Planificación garantizada.
Para realizar esta planificación el sistema tiene en cuenta el número de usuarios que deben ser atendidos. Para un número "n" de usuarios se asignará a cada uno un tiempo de ejecución igual a 1/n.
Planificación de Colas Múltiples
El nombre se deriva de MQS (Multilevel Queue
Schedullin). En este algoritmo la cola de procesos que se encuentran en
estado de listos es dividida en un número determinado de colas más pequeñas.
Los procesos son clasificados mediante un criterio para determinar en qué cola
será colocado cada uno cuando quede en estado de listo. Cada cola puede manejar
un algoritmo de planificación diferente a las demás.
Tiempos
En la Planificación de procesos
se tiene en cuenta diferentes tiempos que pueden ser calculados, como son el
"Tiempo de espera medio", el "Tiempo de retorno del
proceso" y el "Tiempo de retorno medio".
Tiempo de espera medio
Es el promedio de tiempos en que
los procesos están en estado de listos. En algoritmos FCFS este tiempo suele
ser bastante largo. En algoritmos SJF para los procesos largos este tiempo suele
ser muy grande, pues se estarán ejecutando constantemente los procesos más
cortos y los más largos se encontrarán constantemente en espera, por lo que
pueden entrar en inanición. En Planificación por prioridad los procesos de
prioridad baja podrían no ejecutarse nunca. Para dar solución a este problema
el envejecimiento de un programa eleva su prioridad.
Tiempo de retorno del proceso
Es el tiempo que transcurre desde
la creación de un proceso hasta que termina la ejecución del programa que le
dio lugar.
Tiempo de retorno medio
Es la suma de los tiempos de
retorno de cada uno de los procesos dividida entre la cantidad de procesos.
TEMPORIZADOR DE INTERVALOS O RELOJ DE INTERRUPCIÓN
El proceso al cual está asignada la CPU se dice que está en ejecución y puede ser un proceso de Sistema Operativo o de usuario. El Sistema Operativo dispone de mecanismos para quitarle la CPU a un proceso de usuario para evitar que monopolice el sistema. El Sistema Operativo posee un “reloj de interrupción” o “temporizador de intervalos” para generar una interrupción, en algún tiempo futuro específico o después de un transcurso de tiempo en el futuro; la CPU es entonces despachada hacia el siguiente proceso.
Un proceso retiene el control de la CPU hasta que ocurra alguna de las siguientes situaciones:
- La libera voluntariamente.
- El reloj la interrumpe.
- Alguna otra interrupción atrae la atención de la CPU.
Si el reloj interrumpe un proceso de usuario, la interrupción causa la ejecución del Sistema Operativo, el que decide cuál será el proceso que obtendrá la CPU.El reloj de interrupción ayuda a garantizar tiempos de respuesta razonables a usuarios interactivos, ya que evita que el sistema se “cuelgue” a un solo usuario en un ciclo infinito y permite que los procesos respondan a “eventos dependientes del tiempo”.Asimismo, los procesos que necesitan una ejecución periódica dependen del reloj de interrupción.
PRIORIDADES
Un mecanismo del sistema necesita distinguir entre procesos sin importarle cuál es el más importante. Las principales características de las prioridades estáticas son las siguientes:
- No cambian.
- Los mecanismos de implementación son sencillos.
- Implican una sobrecarga relativamente baja.
- No responden a cambios en el ambiente (contexto) que harían deseable ajustar alguna prioridad.
- Las principales características de las prioridades dinámicas son las siguientes:
- Responden al cambio.
- La prioridad inicial asignada a un proceso puede durar poco tiempo, luego se la reajusta a un mejor valor.
- Los mecanismos de implementación son más complicados que para prioridades estáticas.
- Implican una sobrecarga mayor que para esquemas estáticos.
Respecto de
las prioridades adquiridas, se hace referencia al tratamiento especial que en
situaciones excepcionales requiere un cierto proceso, lo que puede significar
restar recursos a los demás procesos.
MULTIPROCESAMIENTO
Es una tendencia significativa en el campo de la computación que consiste en configurar un sistema de computación con varios procesadores. No es un enfoque nuevo pero sí posee grandes perspectivas en función del desarrollo de los microprocesadores. Se podrían concebir sistemas construidos por cientos o miles de microprocesadores.
Confiabilidad
Si un procesador falla, los restantes continúan operando, lo cual no es automático y requiere de un diseño cuidadoso.
Explotación del Paralelismo
La mayoría de los sistemas de multiprocesamiento tienen como meta principal el incremento de la capacidad de ejecución. La programación sigue siendo esencialmente secuencial y generalmente no se explota la concurrencia.
Paralelismo Masivo
Se debe disponer de suficientes procesadores como para que todas las operaciones que puedan ser ejecutadas en paralelo puedan ser asignadas a procesadores separados.
Metas de los Sistemas de Multiprocesamiento
Las metas de los sistemas de multiprocesamiento generalmente son la confiabilidad y la disponibilidad muy altas, como así también el incremento del poder de computación.
Detección Automática del Paralelismo
Los multiprocesadores hacen posible la explotación del paralelismo. Los sistemas de computación obtienen los beneficios del procesamiento concurrente más por la “multiprogramación” de varios procesos y menos por la explotación del “paralelismo” dentro de un solo proceso. La detección del paralelismo es un problema complejo y la puede efectuar el programador, el traductor del lenguaje, el hardware o el Sistema Operativo.
SISTEMAS DE MULTIPROCESAMIENTO
Un sistema de
multiprocesamiento consiste en una computadora que tiene más de un procesador
(o bien en una serie de computadoras con CPU’s o procesadores independientes).
La mayoría de computadoras supervisoras se diseñan específicamente para dar
soporte a múltiples procesadores. Incluyen un bus de altas prestaciones,
decenas de MB para memoria con corrección de errores, sistemas de disco
redundantes, arquitecturas avanzadas de sistemas que reducen los cuellos de
botella utilidades redundantes, como múltiples fuentes de alimentación.
Existen dos tipos de diseños de sistemas multiprocesador:
Simétrico
Los microprocesadores del sistema comparten los recursos del sistema, como la entrada salida de memoria y disco. Se distribuye uniformemente la carga de trabajo a los procesadores disponibles, de modo que uno no esté inactivo mientras otro tiene un exceso de trabajo con una tarea específica. Las prestaciones se incrementan para todas las tareas al añadir microprocesadores, su desventaja es que los sistemas operativos que soportan este tipo de multiprocesamiento son más difíciles de diseñar.
Asimétrico
Diferentes microprocesadores gobiernan las distintas tareas y recursos del sistema. El enfoque principal que adoptan es el incremento de rendimiento del sistema para múltiples usuarios de red en múltiples segmentos de red de área local. Los sistemas supervisores dan soporte a múltiples tarjetas de red, lo que incrementa el número de posibles segmentos. El bus de alta velocidad del servidor proporciona transferencia rápida de información entre los segmentos de red. Cada CPU se dedica a una función específica tal como entrada / salida de la tarjeta de interfaz de red u operaciones con archivos.
TENDENCIAS DE LOS MULTIPROCESADORES
Todo indica que el uso de los multiprocesadores
se incrementará considerablemente en el futuro, las principales razones son las siguientes:
- La confiabilidad requerida es cada vez mayor.
- La reducción de costos consecuencia de los avances en microelectrónica.
- El previsible desarrollo de lenguajes que permitan a los usuarios expresar el paralelismo explícitamente.
- El progreso en la detección automática del paralelismo.
El hecho de que se estaría llegando a los límites del uniprocesador debido a la compactación de componentes, es decir que se estaría próximo a los límites de longitud y de proximidad de los “caminos electromagnéticos” (longitud del recorrido de la señal electromagnética); alcanzados los límites mencionados, la única posibilidad de incrementar capacidad de cómputo es mediante multiprocesamiento.
Existen estudios de tendencias en arquitectura de computadoras que apuntan a los poli procesadores, es decir, sistemas que combinan el multiprocesamiento, simétrico y asimétrico, para crear una jerarquía de procesadores dentro de un sistema.
FUENTES:
“TENDENCIAS EN LOS SISTEMAS DISTRIBUIDOS.”http://www.monografias.com/trabajos11/archi/archi.shtml#te
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/SISTAR02.html
“SISTEMAS MULTIPROCESADORES.”
http://html.rincondelvago.com/arquitecturas-avanzadas.html
“SISTEMAS MULTIMEDIA DISTRIBUIDOS.”
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/SISMUL02.html#SistMultiDist
http://dis.eafit.edu.co/cursos/st780/2006-1/sam-introduccion.pdf
https://es.wikipedia.org/wiki/Proceso_(inform%C3%A1tica)
No hay comentarios:
Publicar un comentario