La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Capítulo 3: procesos.

Presentaciones similares


Presentación del tema: "Capítulo 3: procesos."— Transcripción de la presentación:

1 Capítulo 3: procesos

2 Capítulo 3: procesos Concepto de Proceso Planificación de Procesos
Operaciones sobre los procesos Comunicación interprocesos Ejemplos de sistemas IPC Comunicación en los sistemas cliente-servidor

3 Objetivos Presentar el concepto de proceso (una instancia de un programa en ejecución), que es unidad de trabajo de todo sistema informático. Describir los diversos mecanismos relacionados con los procesos, incluyendo los de: Planificación, Creación y finalización de procesos, Mecanismos de comunicación (IPC): memoria compartida Paso de mensajes Mecanismos de comunicación en los sistemas cliente-servidor

4 Concepto de Proceso Un sistema operativo ejecuta una variedad de programas: 1945 – 1955: sistemas interactivos (1 solo usuario por vez) 1955 – 1970: se pasó a sistemas Batch (trabajos: sin un usuario dueño) Se trabajaba en monoprogramación 1960 : se inventa el disco magnético: se pudo hacer multiprogramación 1970 – aparecen los sistemas multiusuarios, de tiempo compartido – programas de usuario (tareas: asociada a un usuario) Aparece el término proceso que abarca: trabajo o tarea

5 Concepto de Proceso Proceso:
Una instancia de un programa en ejecución, Una actividad (instrucciones que se ejecutan): controlada por el SO en un sistema de computación, que se ejecuta secuencialmente, que puede ser pausada (detenida y luego se continúa desde donde se detuvo) en el tiempo, pero sin perder ningún dato (se dice que no tiene interrupción lógica) Un proceso incluye: Un espacio direccionable: Area de Código (las instrucciones o texto) Area de Datos (espacio asignado para las variables globales inicializadas) Area de Pila y Heap pila: Variables locales Parámetros que se pasan entre procedimientos Dirección de retorno heap (espacio dinámico para datos temporales) Variables globales no inicializadas Datos no previstos inicialmente El bloque de control de Proceso (PCB) o la información almacenada en la tabla de procesos (en el kernel) y necesaria para administrar los procesos: PID, Contenidos de registros de la CPU: PC, Registros generales; estado; prioridad; tiempos; punteros al espacio de memoria; punteros a archivos abiertos; a dispositivos solicitados; etc.

6 Imagen del proceso en memoria

7 Estados de un proceso Cuando un programa se carga en Mp y el SO, lo identifica como proceso, luego atraviesa por diferentes estados: Nuevo (new): el proceso está siendo creado Ejecución (running): sus instrucciones están siendo ejecutadas Esperando (waiting): el proceso está esperando por la ocurrencia de algún evento Listo (ready): el proceso está esperando que le asignen procesador Terminado (terminated): el proceso ha terminado su ejecución

8 Diagrama de los estados de un proceso

9 Bloque de control de proceso(PCB)
Es la información asociada con cada proceso Estado del proceso Contador de programa registros de la CPU Información de planificación de la CPU Información de administración de memoria Información de contabilidad Información de estado de entrada/salida

10 Bloque de control de proceso(PCB)

11 Cambiando el proceso que ejecuta en la CPU

12 Colas de Planificación de proceso
Cola de trabajos Batch: grupo de los procesos que intentan ingresar en el sistema y esperan pasar a memoria (al estado ready) cuando el nivel de multiprogramación lo permita. Cola de listos (ready): grupo de todos los procesos que residen en memoria principal, preparados y esperan ser elegidos por el planificador para ejecutar Colas en dispositivos: grupos de proceso esperando por un dispositivo de entrada/salida Los procesos migran entre las distintas colas

13 Cola ready y varias colas de dispositivos de entrada/salida

14 Representación de un proceso transitando por varias colas

15 Planificadores Planificador de largo plazo: Algoritmo del SO que decide qué trabajo batch de la cola de trabajos ingresa a Mp y debe ponerse en la cola de listos (ready) Planificador de corto plazo (Scheduler propiamente dicho): un código de bajo nivel de kernel, que se activa (ejecuta) cada vez que ocurre un evento (el proceso finaliza o hace una llamada al sistema bloqueante (abandona la CPU), llega a la cola ready un proceso desde el estado new o waiting, ocurre una interrupción) que selecciona qué proceso debe ser ejecutado la próxima vez y le asigna la CPU

16 Agregado de un planificador de mediano plazo

17 Planificadores (Cont)
El (scheduler) planificador de corto plazo es invocado muy frecuentemente (milisegundos)  (debe ser corto, pocas instrucciones) El planificador de largo plazo es llamado con baja frecuencia (seconds, minutes)  (puede contener muchas instrucciones) El planificador de largo plazo controla el grado de multiprogramación de un sistema Los procesos pueden ser caracterizados como: Procesos limitados por entrada/salida (I/O bound): pasa más tiempo haciendo E/S que cálculos, muchas ráfagas de CPU cortas Procesos limitados por CPU (CPU bound): pasa más tiempo haciendo cálculos; pocas ráfagas de CPU muy largo

18 Cambio de contexto Cuando una CPU cambia a otro proceso (es decir deja de ejecutar uno para pasar a ejecutar otro proceso), el sistema debe salvar el estado del viejo proceso y cargar el estado del nuevo proceso a través de cambios de contexto (pasa del contexto del proceso de usuario al contexto del kernel, luego de que el planificador (kernel) decida qué proceso seguiría, se pasa al contexto del nuevo proceso a cargar y ejecutar). Por cada cambio de proceso hay al menos 2 cambios de contexto. El contexto de un proceso está representado (se ha guardado) en el PCB El tiempo de cambio de contexto introduce una sobrecarga en el sistema; el sistema no hace ninguna tarea útil mientras se está cambiando el contexto El tiempo depende del soporte de hardware que se disponga

19 Creación de un proceso Un proceso padre crea procesos hijos, los cuales a su vez crean otros procesos, formando un árbol de procesos Generalmente, los procesos son identificados y administrados a través de su identificador de proceso (pid) Recursos compartidos (hay 3 posibilidades) El padre y los hijos comparten todos los recursos (fork) Los hijos comparten un subconjunto de los recursos de su padre El padre y sus hijos no comparten recursos (después de un exec o con un Createprocess) Ejecución El padre y sus hijos ejecutan concurrentemente (alternadamente o paralelamente) El padre espera hasta que sus hijos terminen

20 Creación de proceso (Cont)
Espacio de direcciones El hijo duplica el contenido del espacio de su padre (fork) El hijo tiene un programa para cargarse dentro del espacio creado (se especifica en un exec()) Ejemplos en Unix La llamada al sistema fork crea un nuevo proceso La llamada sistema exec usada después de un fork reemplaza el espacio de memoria de un proceso con un nuevo programa

21 Creación de proceso

22 Procesos separados a partir de un fork en un programa en C.
int main() { pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0);

23 Un árbol de procesos en Solaris

24 Terminación de un proceso
Un proceso ejecuta la última instrucción, y pide al sistema operativo que lo elimine (exit) El padre espera la salida de los datos de los hijos (a través de una llamada al sistema wait) Los recursos de un proceso son quitados por el sistema operativo Un padre puede terminar la ejecución de sus procesos y hijos (abort) El hijo ha excedido la asignación de recursos Las tareas asignadas a los hijos ya no se requieren Si el padre muere Algunos sistemas operativos no permiten a los hijos continuar su ejecución. Todos los hijos terminan- terminación en cascada

25 Comunicación interprocesos
Los procesos que se ejecutan concurrentemente en un sistema pueden ser procesos independientes o procesos cooperativos La cooperación de proceso puede afectar o ser afectadas por otros procesos, incluyendo los datos compartidos Razones para la cooperación de procesos: Compartir información acelerar la computación modularidad conveniencia La cooperación de procesos necesita la comunicación interproceso (IPC) Hay dos modelos de IPC Memoria compartida Paso de mensajes

26 Modelo de Communicaciones
Paso de Mensajes Memoria Compartida

27 Procesos cooperativos
Los procesos independientes no pueden afectar o ser afectado por la ejecución de otros procesos Los Procesos cooperativos pueden afectar o ser afectado por la ejecución de otros procesos Ventajas de la cooperación de procesos Compartimento información Aceleración de la computación modularidad conveniencia

28 Problema del productor-consumidor con memoria compartida
Es el modelo típico de cooperación de procesos, el proceso productor produce información que es consumida por un proceso consumidor El buffer de tamaño infinito no tiene límites de tamaño del buffer El buffer limitado asume que hay un buffer de tamaño fijo

29 Problema del productor-consumidor con memoria compartida
La solución es correcta, pero pueden usarse sólo BUFFER_SIZE-1 elementos como máximo en el buffer Datos compartidos #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; Proceso Productor while (true) { /* Produce an item */ while (((in = (in + 1) % BUFFER SIZE count) == out) ; /* do nothing -- no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER SIZE; } Proceso Consumidor while (true) { while (in == out) ; // do nothing -- nothing to consume // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; }

30 Buffer limitado– solución con memoria compartida
Tamaño del Buffer circular = Buffer_size=8 (en el ejemplo) out in Puntero que indica el elemento (vacío) donde escribir (entrada). Lo usa el productor Puntero que indica el elemento (lleno) a leer (salida). Lo revisa el consumidor

31 Comunicación interprocesos – Paso de mensajes
Es un mecanismo que sirve para la comunicación y sincronización de las acciones de los procesos Mensajes del sistema– procesos se comunican entre sí, sin recurrir a variables compartidas La facilidad IPC provee dos operaciones: send(message) – siendo el mensaje de tamaño fijo o variable receive(message) Si P y Q desean comunicarse, es necesario que: Establezcan un enlace de comunicación entre ellos Intercambien mensajes a través de send/receive La implementación del enlace de comunicación puede ser: físico (por ejemplo: memoria compartida, a través del bus) lógico(por ejemplo: propiedades lógicas)

32 Comunicación Directa Sistema Operativo Proceso Q Emisor Send(P, Msj)
Proceso P Receptor Receive(Q,Msj)

33 Comunicación indirecta: a través de buzones
Proceso Emisor P1 Proceso Emisor P2 Proceso Receptor Q Buzón del proceso Q Proceso Emisor P3 Proceso Emisor P4

34 Comunicación directa Se debe especificar explícitamente el nombre del proceso: send (P, message) – se envía un mensaje al proceso P receive(Q, message) – se pretende recibir un mensaje desde el proceso Q Propiedades del enlace de comunicación Los enlaces se establecen automáticamente Un enlace está asociado con exactamente un par de procesos de comunicación Entre cada par existe exactamente un enlace El enlace puede ser unidireccional, pero suele ser bidireccional

35 Comunicación indirecta
Los mensajes son dirigidos y recibidos de buzones de correo (también conocida como los puertos) Cada buzón tiene un identificador único Los procesos pueden comunicarse sólo si comparten un buzón Propiedades del enlace de comunicación El enlace queda 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 algún enlace de comunicación El enlace puede ser unidireccional o bidireccional

36 Comunicación indirecta
Operaciones Creación de un nuevo buzón Envío y recepción de mensajes a través del buzón Destrucción del buzón Las primitivas están definidas de la siguiente manera: send(A, mensaje) – envía un mensaje al buzón A receive(A, mensaje) – se espera recibir un mensaje desde el buzón A

37 Comunicación indirecta
Buzón compartido P1, P2, y P3 comparten el buzón A P1, envía; P2 y P3 reciben Quien recibe el mensaje? soluciones Permitir que un enlace esté asociado a más de dos procesos Permitir que sólo un proceso a la vez ejecute una operación de recepción Permitir al sistema seleccionar arbitrariamente el receptor. El receptor es notificado de quién ha recibido el mensaje.

38 Sincronización Los pasos de mensajes pueden ser :
bloqueantes o no bloqueantes El bloqueo se considera sincrónico El send bloqueante tiene al emisor bloqueado hasta que el mensaje es recibido El receive bloqueante tiene al receptor bloqueado hasta que el mensaje está disponible Los no bloqueantes se consideran asincrónicos En un send no bloqueante el emisor envía el mensaje y continúa En un receive no bloqueante el receptor no se detiene, por lo que puede recibir un mensaje válido o nulo

39 Buffering (técnica de almacenamiento temporal en cola)
Cola de mensajes adjuntos al enlace; implementadas de una de tres maneras: 1. De capacidad cero– 0 messages el emisor debe esperar siempre al receptor (rendezvous) 2. De capacidad limitada– longitud finita de N mensajes el emisor debe esperar si el enlace está lleno 3. De capacidad ilimitada– longitud infinita el emisor nunca espera


Descargar ppt "Capítulo 3: procesos."

Presentaciones similares


Anuncios Google