De Programas A Procesos
De Programas A Procesos
De Programas A Procesos
CONCEPTO DE PROCESO
Todos los programas, cuya ejecución solicitan los usuarios, se ejecutan en forma de procesos, de ahí la importancia para el informático de conocerlos en detalle. El proceso
se puede definir como un programa en ejecución y, de una forma un poco más precisa, como la unidad de procesamiento gestionada por el sistema operativo.
El sistema operativo mantiene por cada proceso una serie de estructuras de información que permiten identificar las características de éste, así como los recursos que tiene
asignados. En esta última categoría entran los descriptores de los segmentos de memoria asignados, los descriptores de los archivos abiertos, los descriptores de los
puertos de comunicaciones, etc.
Una parte muy importante de estas informaciones se encuentra en el llamado bloque de control del proceso (BCP). El sistema operativo mantiene una tabla de procesos con
todos los BCP de los procesos. Por razones de eficiencia, la tabla de procesos se construye normalmente como una estructura estática, que tiene un determinado número
de BCP, todos ellos del mismo tamaño. El contenido del BCP se analizará con más detalle en secciones posteriores; sin embargo, se puede decir que la información que
compone un proceso es la siguiente:
+ Contenido de los segmentos de memoria en los que residen el código y los datos del proceso. A esta información se le denomina imagen de memoria o core image.
+ Contenido de los registros del modelo de programación.
+Contenido del BCP.
Es de destacar que el proceso no incluye información de E/S, puesto que ésta suele estar reservada al sistema operativo.
JERARQUÍA DE PROCESO
Para referirse a las relaciones entre los procesos de la jerarquía se emplean los términos de padre, hijo, hermano o abuelo. Cuando el proceso A solicita al sistema operativo
que cree el proceso B. se dice que A es padre de B y que B es hijo de A. Bajo esta óptica, la jerarquía de procesos puede considerarse como un árbol genealógico.
Algunos sistemas operativos, como UNIX, mantienen de forma explícita esta estructura jerárquica de procesos —un proceso sabe quién es su padre—, mientras que otros
sistemas operativos como el Windows NT no la mantienen.
ESTADOS DE ACTIVIDAD DE UN PROCESO
El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de
programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo.
I
DE PROGRAMAS A PROCESOS
Modelo de tres estados.
El modelo de estados más simple es el de tres estados. En este modelo, un proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado
de “Listo”. En algún momento el proceso que se está ejecutando pasará al estado “Bloqueado” y otro proceso se elegirá de la lista de procesos listos para ejecutar para
ponerlo en estado Ejecución.
II
DE PROGRAMAS A PROCESOS
Modelo de cinco estados
El modelo anterior de dos estados funcionaría bien con una cola FIFO y planificación por turno rotatorio para los procesos que no están en ejecución, si los procesos
estuvieran siempre listos para ejecutar. En la realidad, los procesos utilizan datos para operar con ellos, y puede suceder que no se encuentren listos, o que se deba esperar
algún suceso antes de continuar, como una operación de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan bloqueados esperando
hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos estados: Listo y Bloqueado. Se agregan además un estado Nuevo y otro Terminado.
III
DE PROGRAMAS A PROCESOS
Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. En este modelo los estados Bloqueado y Listo tienen ambos una cola de espera. Cuando un
nuevo proceso es admitido por el sistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. Los procesos
suspendidos son mantenidos en una cola de bloqueados. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso.
Planificación de procesos
Cuando un sistema informático tiene más de un único procesador, aparecen varios elementos nuevos en el diseño de la tarea de planificación. Se va a comenzar con una
breve introducción a los multiprocesadores y, después, se estudiarán las distintas consideraciones a tener en cuenta para llevar a cabo la planificación en el nivel de los
procesos o en el nivel de los hilos.
Agrupación o multiprocesador débilmente acoplado o distribuido: consiste en una colección de sistemas relativamente autónomos, cada procesador tiene su propia
memoria principal y canales de E/S.
Procesadores funcionalmente especializados: en este caso hay un procesador principal de propósitos generales y procesadores especializados que son
controlados por el procesador principal y le proveen servicios a él. Un ejemplo es el procesador de E/S.
Multiprocesamiento fuertemente acoplado: consiste en un grupo de procesadores que comparten una memoria principal en común y están bajo el control integrado
de un sistema operativo.
Decide qué procesos serán los siguientes en ser iniciados. Este tipo de planificación era el más frecuente en los sistemas de lotes (principalmente aquellos con spool) y
multiprogramados en lotes; las decisiones eran tomadas principalmente considerando los requisitos pre-declarados de los procesos y los que el sistema tenía libres al
terminar algún otro proceso. La planificación a largo plazo puede llevarse a cabo con periodicidad de una vez cada varios segundos, minutos e inclusive horas.
En los sistemas de uso interactivo, casi la totalidad de los que se usan hoy en día, este tipo de planificación no se efectúa, dado que es típicamente el usuario quien
indica expresamente qué procesos iniciar.
A mediano plazo
Decide cuáles procesos es conveniente bloquear en determinado momento, sea por escacez/saturación de algún recurso (como la memoria primaria) o porque están
realizando alguna solicitud que no puede satisfacerse momentaneamente; se encarga de tomar decisiones respecto a los procesos conforme entran y salen del estado de
bloqueado (esto es, típicamente, están a la espera de algún evento externo o de la finalización de transferencia de datos con algún dispositivo).
Decide cómo compartir momento a momento al equipo entre todos los procesos que requieren de sus recursos, especialmente el procesador. La planificación a corto
plazo se lleva a cabo decenas de veces por segundo (razón por la cual debe ser código muy simple, eficiente y rápido); es el encargado de planificar los procesos que están
listos para ejecución.
OBJETIVOS Y CRITERIOS DE PLANIFICACIÓN
IV
DE PROGRAMAS A PROCESOS
Los objetivos del planificador se resumen en:
f) Máxima capacidad de ejecución: Intentamos disminuir los cambios de contexto. Cuanto antes termine un proceso y menos interrupciones haya, menos
cambios de contexto habrá.
g) Máxima capacidad de usuarios interactivos: Intentamos dar servicio a todos los usuarios conectados.
h) Minimizar la sobrecarga: Intentamos que se gaste la menos cantidad de tiempo posible en la administración del sistema.
i) Equilibrio en el uso de recursos: (muy difícil de conseguir). Intentamos que la utilización de recursos sea equilibrada.
Políticas de planificación.
Los algoritmos de planificación que se exponen en esta sección no se limitan a un plazo de planificación concreto. Aunque en general asumiremos planificación a corto plazo
(entrada de procesos a la CPU), algunos algoritmos pueden implementarse también a largo plazo o distribuirse en más de un tipo de planificación (por ejemplo, a corto y
medio plazo).
Para describir una política de planificación hay que considerar los siguientes aspectos:
Cómo se selecciona el proceso que entrará a ejecución. De entre los procesos que están en estado preparado, se elige uno de acuerdo a criterios como, por
ejemplo, Sistemas Operativos II Planificación de procesos y procesadores 62 prioridades, tiempo que lleva en la cola de preparados, tasa de CPU que le ha
correspondido.
Cuándo se lleva a cabo la planificación. Este aspecto afecta fundamentalmente a la planificación a corto plazo. Hay dos alternativas básicas: si únicamente se
planifica cuando un proceso abandona la CPU porque acaba o se bloquea (políticas no expulsoras), o si se puede forzar al proceso que está usando la CPU a
abandonarla para planificar otro proceso (políticas expulsoras).
V
DE PROGRAMAS A PROCESOS
La existencia o no de más de una política de planificación, ajustadas a los diferentes tipos de procesos, y cómo se combinan. En los sistemas de propósito general
coexisten procesos de tipos diferentes que pueden requerir políticas específicas, por lo que se suelen definir varias políticas particulares, cada una adecuada a un
tipo de procesos, y una política global aplicable al conjunto de tipos de procesos (planificación multinivel).
Partición o Descomposición
El problema computacional se descompone en pequeñas tareas pequeñas que forman las unidades de concurrencia ya sea relacionando su nivel de interacción o
simplemente haciendo uso de alguna heurística conservando siempre en mente la necesidad de eliminar redundancia en procesamiento y almacenamiento.
Coordinación
Esto paso define la incorporación de mecanismos que permitan la comunicación y sincronización de tareas que se puede realizar usando el paso de mensajes o la memoria
compartida. Tratando siempre de garantizar que todas las tareas tengan aproximadamente el mismo número de comunicaciones, que cada tarea se comunica sólo con un
pequeño número de vecinos y que estas operaciones de comunicaciones puedan realizarse de forma simultanea
Aglomeración o Asignación
En este paso, las tareas se agrupan basadas en procesos para optimizar el rendimiento, reducir costes de desarrollo y garantizar la flexibilidad y escalabilidad.
Proyección
En este último paso los procesos se asignan a los procesadores que haya disponibles de forma que se minimice los costos de comunicación y al mismo tiempo se maximice
el uso de esos procesadores, es decir que exista un buen balance.
La comunicación entre procesos (comúnmente IPC, 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. Las técnicas de IPC están divididas dentro de métodos para: paso de
mensajes, sincronización, memoria compartida y llamadas de procedimientos remotos (RPC). El método de IPC usado puede variar dependiendo del ancho de banda y
VI
DE PROGRAMAS A PROCESOS
latencia (el tiempo desde el pedido de información y el comienzo del envío de la misma) de la comunicación entre procesos, y del tipo de datos que están siendo
comunicados.
Síncrona o asíncrona
Directa o indirecta
Simétrica o asimétrica
VII