Sistemas Operativos - 4 - Gestión de Procesos

Page 1


Sistemas Operativos

Gestión de Procesos

Ingeniería de software

M.Sc. Johan Sebastian Giraldo H

Introducción

Introducción

Se define el término proceso, como un programa con su entorno de trabajo

(Stallings,2011)

Introducción

Según Silberschatz y otros (2009), es necesario diferenciaentreprogramadeprocesoasí:

◼Programa: Listado de instrucciones. Ente pasivo.Sealmacenaenarchivos.

◼Proceso: Programa en ejecución. Ente activo.

La ejecución de un programa requiere cargarlopreviamenteenmemoria.

Componentes de un proceso

◼ Stack (variables locales, direcciones de retorno, parámetros...)(pila)

◼ Heap (memoria dinámica ejemplo: instancias / objetos)

◼ Data (variablesglobales)

◼ Text (código)

Estados de un proceso

Si unSistemaOperativo en una máquina con un solo procesador, desea brindar la posibilidad de ejecutar múltiples procesos “al mismo tiempo”, deberá atender uno a la vez durante un intervalo detiempo,paraluegoconmutaraotroproceso.

Si la conmutación se realiza rápidamente, el usuario tendrá la sensación de que el sistema operativoestáhaciendotodoalmismotiempo.

Estados de un proceso

Operaciones de control de procesos

◼ Ejecutar: Carga el proceso en memoria y coloca la dirección del PCB en la lista de procesos listos.

◼ Cancelar: Retira adecuadamente de la lista (Listo o Espera), la dirección del PCB del proceso y si está en ejecución, termina.

◼ Suspender: Pasa la dirección del PCB del proceso de la lista de procesos listos a la de procesos en espera y, si se está ejecutando, conmuta a otro.

◼ Reanudar: Pasa la dirección del PCB del proceso de la lista de procesos en espera a la lista de procesos listos.

Bloques de control de procesos

◼ El sistema operativo debe guardarla información de los procesos para que pueda conmutar de un procesoaotro

◼ Esta información se conoce teóricamente como el PCB (Process ControlBlock)delproceso.

Bloques de control de procesos

La información que el PCB puede tener, varía según la arquitectura de la máquina y el diseño del Sistema Operativo, pero debe incluir como mínimo lo siguiente:

◼ Estado actual del proceso.

◼ Último valor de los registros del procesador.

◼ Número identificador del proceso dentro del sistema (PID).

Bloques de control de procesos

También puede contener:

◼ Privilegios.

◼ Dueño del proceso.

◼ Tiempo de procesamiento (usado para servicios de cobro de uso).

◼ Prioridad.

◼ Límite de la memoria asignada.

Sistema de control de procesos

Así como cada proceso tiene su PCB, el Sistema Operativo tiene un SCB (System Control Block), en el cual almacena toda la información necesaria para la ejecución apropiada del Sistema Operativo. Entre la información existente en el SCB tenemos:

◼ Ubicación de los PCB.

◼ Ubicación de las funciones controladoras del sistema.

◼ Cantidad de recursos disponibles.

◼ Cantidad de recursos asignados.

Cambio de contexto

◼ El cambio de contexto es el nombre que recibe el mecanismo mediante el cual, la CPU es asignada de un proceso a otro.

◼ Cuando el Sistema Operativo toma el control del procesador, éste guarda el PCB del proceso actual y recupera el PCB del proceso siguiente.

◼ El tiempo empleado en el cambio de contexto es considerado sobrecarga, debido a que el sistema NO realiza trabajo útil mientras tanto.

◼ El tiempo empleado depende del soporte de hardware.

Cambio de contexto

Cambio de contexto

Sistemas Operativos Expulsivos

El Sistema Operativo puede interrumpir la ejecución de un proceso para tomar control del procesador(Multiprogramación).

Sistemas Operativos Expulsivos

◼Cada 10 milisegundos el SO interrumpe la ejecución del proceso actual y decide si continúa con el proceso actual o conmuta a otro proceso. Esta labor es realizada por el PlanificadordeProcesosdelSO.

Sistemas Operativos Expulsivos

◼El Sistema Operativo tendrá que esperar a que el proceso termine su ejecución normal para poder tomar el control (Monoprogramación).

Aclaración de términos

◼Multiprocesador: Sistema con varios procesadores trabajando cooperativamente paraatendervariosprocesos.

◼Multicomputadora: Sistema donde varias computadoras trabajan cooperativamente pararesolvervariosproblemas.

Monoprogramación No expulsiva

Monoprogramación Expulsiva

Multiprocesador o Multicomputadora (CPU x3)

Colas de planificación de procesos

◼Coladetrabajos: Conjunto de todos los procesos en el sistema

◼Cola de listos: Conjunto de procesos que residen en memoria principal, listos y en espera de ser ejecutados

◼Colas de dispositivos: conjunto de procesos esperando por un dispositivo de E/S

◼Los procesos migran entre las distintas colas.

Cola listos y varias de dispositivos E/S

Representación de un planificador de procesos

Planificador de procesos

Un planificador de procesos es parte de un SO que se encarga de la toma de decisiones de selección sobre los procesos. Existen tres tipos de planificadores básicos:

1. Planificador de largo plazo: Llamado “planificador de trabajos”. Controla el número de procesos en memoria. Selecciona que proceso entrar en la cola de procesos listos. Lo ideal sería que la tasa de creación y salida de procesos fuese igual. Sólo se invoca con la ejecución o cancelación de un proceso.

2. Planificador de corto plazo: Llamado “planificador de procesos” o “planificador de CPU”. Selecciona un proceso que se encuentre en la memoria principal (procesos listos) para asignarle el procesador.

3. Planificador de mediano plazo: Llamado “planificador de swapping”. Encargado de bajar al disco algunos procesos para reducir la competencia del procesador (disminución de la carga del sistema). Para poder utilizar los tres planificadores, necesitamos entonces como mínimo cinco estados para los procesos.

Planificador de procesos

◼ El Planificador de corto plazo es invocado muy frecuentemente (milisegundos) => (debe ser rápido)

◼ El Planificador de largo plazo se invoca con poca frecuencia (segundos, minutos) => (puede ser lento)

▪ Controla el grado de multiprogramación

◼ Los procesos se pueden describir como:

▪ Procesos asociados a E/S: Pasan más tiempo haciendo E/S qué cálculos, muchas pequeñas explosiones de CPU.

▪ Procesos asociados a la CPU: Pasan más tiempo haciendo cálculos; pocas pero muy largas explosiones de CPU.

Agregar un planificador intermedio

Planificador de procesos

Planificador de procesos

Operaciones de control de procesos

Todo Sistema Operativo que brinde el servicio de multiprogramación debe también, brindarle al usuario un mínimo de operaciones para controlar los procesos, tales como:

◼ Ejecutar: Carga el proceso en memoria y coloca la dirección del PCB en la lista de procesos listos.

◼ Cancelar: Retira adecuadamente de la lista (Listo o Espera), la dirección del PCB del proceso y si está en ejecución, termina.

◼ Suspender: Pasa la dirección del PCB del proceso de la lista de procesos listos a la de procesos en espera y, si se está ejecutando, conmuta a otro.

◼ Reanudar: Pasa la dirección del PCB del proceso de la lista de procesos en espera a la lista de procesos listos.

Creación de procesos

◼ Un Proceso padre crea procesos hijos, que, a su vez pueden crear otros procesos, formando un árbol

◼ Esquemas para compartir recursos

▪ Padres e hijos comparten todos los recursos

▪ Los hijos comparten un subconjunto de los recursos del padre

▪ Padre e hijo no comparten recursos

◼ Esquemas de ejecución

▪ Padre e hijo se ejecutan de manera “concurrente”

▪ Padre espera hasta que el hijo termina

Creación de procesos

◼ Espacio de direcciones

▪ Hijo duplicado del padre

▪ Se carga un programa en el hijo

◼ Ejemplos UNIX

▪ fork llamada al sistema para crear nuevos procesos

▪ exec llamada al sistema, después de fork para reemplazar el espacio de memoria del proceso con un programa nuevo

Creación de proceso

Programa en C que implementa la Bifurcación de procesos

Creación de proceso en Java

Creación de proceso en Java

Árbol de procesos típico en Solaris

Terminación de proceso

◼ El proceso ejecuta su último enunciado y le pide al sistema operativo que lo borre (exit)

▪ Datos de salida de hijo a padre (vía wait)

▪ Recursos del proceso son liberados por el SO

◼ El padre puede terminar la ejecución de un proceso hijo (abort)

▪ El hijo excedió los recursos asignados

▪ La tarea asignada al hijo ya no es necesaria

▪ Si el padre está terminando

▪ Algunos sistemas operativos no permiten a los hijos continuar trabajando

▪ Todos los hijos son terminados – terminación en cascada

Concurrencia

◼ En un sistema que soporte multiprogramación o multiprocesamiento,básicamente existendostiposde procesos, procesos independientes y procesos cooperativos.

◼ La diferencia fundamental entre estos dos tipos de procesos es que entre los procesos independientes no existe relación alguna, es decir, estos procesos no afectan y no son afectados por otros procesos. Por el contrario los procesos cooperativos si pueden afectar o serafectadosporotrosprocesos.

Concurrencia

◼ Cuando dos o más procesos cooperan para solucionar un problema, ya sea en un sistema con uno o varios procesadores, se dice que estos procesostrabajandeforma concurrente.

◼ Está claro que para que exista concurrencia es sistemas de un solo procesador, es necesaria la existencia de la multiprogramación.Sin embargo la presencia de la multiprogramación no es condición suficienteparaqueexistalaconcurrencia.

Concurrencia

◼ Un proceso puede verse afectado por otro cuando uno o más de los recursos de software o de hardware que necesita para operar correctamente, son requeridos o compartidos por más procesos.

◼ Para que existan procesos cooperativos es necesario que el sistema operativo brinde servicios de comunicación y sincronización, es decir, que los procesos puedan “hablar” para compartir información y controlar el acceso concurrente.

◼ La cooperación de procesos necesita la comunicación entre proceso llamada IPC por sus siglas en inglés (InterProcess Communication).

Concurrencia

◼ Los mecanismos de sincronización tienen como objetivo:

▪ El control de acceso a los recursos compartidos de hardware o software.

▪ La asignación de recursos.

▪ El controlar el flujo de ejecución (el proceso P sólo debe ejecutarse cuando se ejecute completamente el proceso Q).

Comunicación entre procesos

◼ Existen dos esquemas complementarios de comunicación entre procesos:

▪ Mensajería entre procesos (Paso de mensajes): En este esquema el sistema operativo es el ente responsable de la comunicación, porque mueve la información generada por un proceso (mensaje) hacia otro.

▪ Memoria compartida: En estos sistemas los procesos comparten una zona de memoria o buffer por el cual ellos se comunican. En este esquema la comunicación es responsabilidad exclusiva de los procesos, es decir, el sistema operativo sólo brinda la posibilidad de compartir memoria. La forma de utilizarla para comunicarse depende de los procesos y no del sistema operativo.

Comunicación entre procesos

PasodeMensajesMemoriacompartida

Cuestiones importantes

Sea cual sea el método que se seleccione, debe darse solución de manera muy clara, entre otros, a los siguientes interrogantes:

◼ ¿Cuáles son los pasos que se deben seguir para comunicar dos procesos?

◼ ¿ Se puede crear un medio de comunicación compartido por más de dos procesos?

◼ ¿Cuántos medios de comunicación pueden haber entre dos procesos?

Cuestiones importantes

◼ ¿Cual es la capacidad de almacenamiento de un canal de comunicación cuando un proceso trasmite pero el otro no puede atenderlo?

◼ ¿Un proceso puede mantener más de un canal de comunicación abierto al mismo tiempo?

◼ ¿Cual es el tamaño máximo de información (por paquete) que se puede enviar por un canal de comunicación?

◼ ¿En una comunicación entre dos procesos usan un canal simplex (unidireccional), halfduplex (bidireccional no simultáneo), full duplex(bidireccional)?

Cuestiones importantes

◼¿Como hace un proceso para interrumpir o terminarunenlacedecomunicación?

◼¿Qué pasa con la información que aun no ha sido procesada, cuando ambos procesos terminan su ejecución,osielcanalesinterrumpido?

◼¿Qué pasa cuando un proceso desea comunicarse con otro que en el momento no se está ejecutando?

Cooperación entre procesos

◼ Procesos Independientes: No pueden afectar o ser afectadosporlaejecucióndeotrosprocesos

◼ Procesos Cooperativos: Pueden afectar o ser afectadoporlaejecucióndeotrosprocesos

◼ Ventajasdelacooperaciónentreprocesos:

▪ Intercambio de información

▪ Incrementar la velocidad de cómputo

▪ Modularidad

Problema productor/consumidor

◼ Paradigmapara procesos cooperativos, proceso productor genera informaciónpara unproceso consumidor

▪ Con buffer no-acotado no impone un límite práctico paraeltamañodelbuffer

▪ Con buffer acotado asume que existe un buffer de tamañofijo

Solución de memoria compartida con delimitación de “Buffer”

◼ Datos compartidos

La solución es correcta pero sólo puede utilizar BUFFER_SIZE-1 elementos

Productor con delimitación de “Buffer”

Consumidor con delimitación de “Buffer”

Comunicación entre procesos - Paso de mensajes

◼ Mecanismo para la comunicación entre procesos y la sincronización de sus acciones.

◼ Sistema de mensajes: Comunicación entre procesos sin recurrir a variables compartidas.

◼ Para la comunicación entre procesos se tiene dos operaciones:

▪ send(message): El tamaño de los mensaje puede ser fijo o variable

▪ receive(message)

◼ Si los procesos P y Q desean comunicarse, se necesita lo siguiente:

▪ Establecer un enlace de comunicaciones entre ellos.

▪ Intercambiar mensajes vía send/receive.

◼ Implementación del enlace de comunicaciones

▪ Físico: Memoria compartida o hardware (bus)

▪ Lógico: software

Comunicación Directa

◼ Un mensaje es información almacenada en un formato determinado. Este formato varía entre los distintos sistemas operativos. Sin embargo, en dicho formato debe ir por lo menos:

◼ Fuente: Identificación (ID) del proceso que envía la información.

◼ Destino: Identificación (ID) del proceso receptor de la información.

◼ Contenido: Información o cuerpo del mensaje.

◼ Para algunos sistemas operativos, existe más información importante que tiene que ir en el mensaje, como prioridad del mensaje, longitud, número del paquete, etc. Por otro lado, los procesos que deseen comunicarse deben tener una manera de referirse unos a otros. Para ello pueden usar comunicación directa o indirecta.

Comunicación Directa

◼ Los procesos deben conocer la identificación de los otros procesos de forma explícita:

▪ send (P, mensaje): Enviar un mensaje el proceso P

▪ receive(Q, mensaje): Recibir un mensaje del Q

◼ Propiedades del enlace de comunicaciones

▪ El enlace de comunicaciones se establece automáticamente.

▪ Un enlace es asociada con exactamente un para de procesos.

▪ Entre cada para de procesos existe exactamente un enlace.

▪ El enlace puede ser unidireccional, pero generalmente es bidireccional.

Comunicación Indirecta

◼ Los mensajes son dirigidos y recibidos desde buzones o casillas de correo (también llamados puertos).

▪ Cada buzón tiene un identificador.

▪ Los procesos pueden comunicarse sólo si ellos comparten un buzón.

◼ Propiedades del enlace de comunicaciones

▪ Enlace establecido sólo si los procesos comparten un buzón común.

▪ Un enlace puede estar asociado con muchos procesos.

▪ Cada par de procesos puede compartir varios enlaces de comunicaciones.

▪ Los enlaces pueden ser unidireccionales o bidireccionales.

Comunicación Indirecta

◼ Operaciones

▪ Crear un nuevo buzón

▪ Enviar y recibir mensajes a través de buzones

▪ Destruir un buzón

◼ Las primitivas son definidas así:

send(A, mensaje): Enviar un mensaje al buzón A receive(A, mensaje): Recibir un mensaje del buzón A

Sincronización

◼ El paso de mensajes puede ser bloqueante o no bloqueante.

◼ Bloqueante: Es considerado sincrónico.

▪ Enviar Bloqueo: Es enviado el bloqueo hasta que el mensaje es recibido.

▪ Recibir Bloqueo: Es recibido el bloqueo hasta que el mensaje esta disponible.

◼ No bloqueante: Es considerado Asincrónico

▪ Enviar No bloqueo hasta que el emisor envíe el mensaje y continúe.

▪ Enviar No bloqueo hasta que el receptor recibe un mensaje válido o nulo.

Buffering

◼ Memoria compartida según POSIX

▪ El primer proceso crea un segmento de memoria compartida segment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR);

▪ El proceso espera acceder a la memoria compartida sharedmemory = (char *) shmat(id, NULL, 0);

▪ Ahora el proceso puede escribir la memoria compartida sprintf(sharedmemory, "Writingtosharedmemory");

▪ Cuando se realiza un proceso puede separarse la memoria compartida de sus espacio de direcciones. shmdt(sharedmemory);

Ejemplo del sistema IPC - Mach

◼ El sistema de comunicaciones de Mach es basado en mensajes

▪ Incluso las llamadas al sistema son mensajes

▪ Cada tarea tiene dos buzones en la creación: El núcleo y notificaciones.

▪ Sólo tres llamadas al sistema son necesarias para transferir mensajes msg_send(), msg_receive(), msg_rpc()

▪ Los buzones necesarios para la comunicación son creados vía: port_allocate()

Comunicación de procesos locales

Comunicación de procesos locales

◼ El paso de mensajes locales es vía “local procedurecall – LPC”

▪ Sólo trabaja entre procesos sobre el mismo sistema.

▪ Utiliza puertos (similar buzones) para establecer y mantener el canal de comunicaciones.

▪ Las comunicaciones trabajan así:

▪ El cliente abre un identificador para el subsistema de conexión de puerto objetivo.

▪ El cliente envía una solicitud de conexión.

▪ El servidor crea dos puertos de comunicación privados y retorna el identificador de uno de ellos a el cliente.

▪ El cliente y el servidor usan el correspondiente identificador de puerto para enviar mensajes o escuchar las respuestas.

Llamado a Procedimientos Locales (LPC) en windows XP

Comunicación en sistemas

Cliente/Servidor

◼Sockets

◼RemoteProcedureCalls(RPC)

◼Pipes(Canalización)

◼RemoteMethodInvocation–RMI(Java)

Sockets

◼Un Socket está definido como un punto final de la comunicación.

◼Concatenación de dirección IP y puerto.

◼El socket 161.25.19.8:1625 se refiere al puerto 1625 sobre el host 161.25.19.8.

◼La comunicación consiste en un par de sockects.

Comunicación Sockets

RemoteProcedureCalls - RPC

◼Remoteprocedurecall (RPC) son llamados a procedimientos abstractos entre procesos sobreunsistemaenred.

El cliente inicia el proceso indicando al servidor que ejecute cierto procedimiento o función y enviando éste de vuelta el resultado dedichaoperaciónalcliente.

Ejecución de un RPC

Ejecución de un RPC

◼ Actúan como conductos o tuberías permitiendo la comunicación entre dos procesos

◼ Consideraciones

▪ ¿La comunicación es unidireccional o bidireccional?

▪ ¿En el caso de comunicación de dos vías, esta es half o full-duplex?

▪ ¿Existe una relación entre los procesos que se comunican (padre –hijo)?

▪ ¿Pueden utilizarse las tuberías a través de la red?

Tubería Ordinaria - Ordinary Pipes

◼ Las tuberías ordinarias permiten la comunicación estándar al estilo productor-consumidor.

◼ El productor escribe en uno de los extremos de la tubería

◼ El consumidor lee desde el otro extremo de la tubería.

◼ Las tuberías ordinarias son por lo tanto unidireccionales.

◼ Requieren una relación Padre-hijo entre los procesos comunicados.

Comunicación de procesos a través de Tuberías (Pipes)

Comunicación de procesos remotos

Servicio Web, Cliente / Servidor

¡ GRACIAS !

Referencias

STALLING W. Operating Systems: InternalsandDesignPrinciples. 7th Edition.2011.

SILBERSCHATZA,GALVINP, GAGNE G. Operating System Concepts.8thEdition.2009.

VIÑAS R, LLINAS F. Sistema Operativo GNU/Linux básico. UOC. 2003.

ESTEVEJ,BOLDRITOR, Administración avanzada de GNU/LINUX.UOC.2004.

Instrucciones para la línea de comandos

Sistemas tipo Unix

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.