La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistemas Operativos – Lázaro González Universidad Nacional de Ingeniería PROMECYS Tema 2: Procesos, Hilos y Concurrencias.

Presentaciones similares


Presentación del tema: "Sistemas Operativos – Lázaro González Universidad Nacional de Ingeniería PROMECYS Tema 2: Procesos, Hilos y Concurrencias."— Transcripción de la presentación:

1 Sistemas Operativos – Lázaro González Universidad Nacional de Ingeniería PROMECYS -2021 Tema 2: Procesos, Hilos y Concurrencias

2 Encuentro 4.2Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Temas  Concepto de proceso  Programación de procesos  Operaciones sobre procesos  Comunicación entre procesos  IPC en sistemas de memoria compartida  IPC en sistemas de paso de mensajes  Ejemplos de sistemas IPC  Comunicación en sistemas cliente-servidor

3 Encuentro 4.3Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Objetivos  Identificar los componentes separados de un proceso y comprender cómo se representan y programan en un sistema operativo.  Describir cómo se crean y terminan los procesos en un sistema operativo, incluido el desarrollo de programas utilizando las llamadas al sistema adecuadas que realizan estas operaciones.  Describir y contrastar la comunicación entre procesos utilizando la memoria compartida y el paso de mensajes.  Diseñar programas que utilicen canalizaciones y memoria compartida POSIX para realizar la comunicación entre procesos.  Describir la comunicación cliente-servidor mediante sockets y llamadas a procedimientos remotos.  Diseñar módulos del kernel que interactúen con el sistema operativo Linux.

4 Encuentro 4.4Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Concepto de proceso  Un sistema operativo ejecuta una variedad de programas que se ejecutan como un proceso.  Proceso : un programa en ejecución; la ejecución del proceso debe progresar de forma secuencial. Sin ejecución paralela de instrucciones de un solo proceso  Varias partes El código del programa, también llamado text section. Actividad actual que incluye contador de programa, registros del procesador Stack que contiene datos temporales  Parámetros de función, direcciones de retorno, variables locales Data section que contiene variables globales Heap que contiene memoria asignada dinámicamente durante el tiempo de ejecución

5 Encuentro 4.5Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Concepto de proceso (Cont.)  El programa es una entidad pasiva almacenada en el disco (archivo ejecutable ); el proceso está activo El programa se convierte en proceso cuando se carga un archivo ejecutable en la memoria  La ejecución del programa se inicia mediante los clics del mouse en la GUI, la entrada en la línea de comando de su nombre, etc.  Un programa puede tener varios procesos Considere que varios usuarios ejecutan el mismo programa

6 Encuentro 4.6Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Estructura de un proceso en memoria

7 Encuentro 4.7Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Disposición de memoria de un programa en C Esta figura es similar al concepto general de un proceso en la memoria Además : La sección de datos globales se divide en diferentes secciones para (a) datos inicializados y (b) datos no inicializados. Se proporciona una sección separada para los parámetros argc y argv pasados a la función main (). El comando size de GNU se puede utilizar para determinar el tamaño (en bytes) de algunas de estas secciones. Suponiendo que el nombre del archivo ejecutable del programa C anterior es memory, la siguiente es la salida generada al ingresar el comando size memory: Textdatabssdechexfilename 1158284 81450 5aamemory

8 Encuentro 4.8Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Estados de un proceso  A medida que se ejecuta un proceso, cambia de estado Nuevo : el proceso se está creando En ejecución : se están ejecutando instrucciones Esperando : el proceso está esperando que ocurra algún evento Listo : el proceso está esperando ser asignado a un procesador Terminado : el proceso ha finalizado su ejecución

9 Encuentro 4.9Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Diagrama de estado del proceso

10 Encuentro 4.10Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Bloque de control de proceso Process Control Block (PCB)  Estado del proceso: en ejecución, en espera, etc.  Contador de programa: ubicación de la instrucción para la próxima ejecución  Registros de CPU: contenido de todos los registros centrados en procesos  Información de planificación de la CPU: prioridades, punteros de cola de programación  Información de gestión de memoria: memoria asignada al proceso  Información contable: CPU utilizada, tiempo transcurrido desde el inicio, límites de tiempo  Información de estado de E/S: dispositivos de E/S asignados al proceso, lista de archivos abiertos Información asociada a cada proceso (también llamado bloque de control de tareas task control block )

11 Encuentro 4.11Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Hilos (Hebras) Threads  Hasta ahora, el proceso tiene un solo hilo de ejecución  Considere tener varios contadores de programas por proceso Se pueden ejecutar varias ubicaciones a la vez  Múltiples hilos de control -> threads  Luego debe tener almacenamiento para los detalles del hilo, múltiples contadores de programas en PCB

12 Encuentro 4.12Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Representación de procesos en Linux Representado por la estructura C task_struct pid t_pid; /* identificador de proceso */ long state; /* estado del proceso */ unsigned int time_slice /* información de programación */ struct task_struct *parent;/* padre de este proceso */ struct list_head children; /* hijos de este proceso */ struct files_struct *files;/* lista de archivos abiertos */ struct mm_struct *mm; /* espacio de direcciones de este proceso */

13 Encuentro 4.13Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Programación de procesos  El programador de procesos (Process scheduler) selecciona entre los procesos disponibles para la próxima ejecución en el núcleo de la CPU  Objetivo: maximizar el uso de la CPU, cambiar rápidamente los procesos al núcleo de la CPU  Mantiene las colas de programación de procesos Cola lista : conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse Colas de espera : conjunto de procesos que esperan un evento (es decir, E / S) Los procesos migran entre las distintas colas

14 Encuentro 4.14Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Colas listas y en espera Ready and Wait Queues

15 Encuentro 4.15Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Representación de la programación de procesos

16 Encuentro 4.16Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Cambio de CPU de proceso a proceso  Un cambio de contexto ocurre cuando la CPU cambia de un proceso a otro.

17 Encuentro 4.17Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Cambio de contexto  Cuando la CPU cambia a otro proceso, el sistema debe guardar el estado del proceso anterior y cargar el estado guardado para el nuevo proceso a través de un cambio de contexto.  Contexto de un proceso representado en el PCB  El tiempo de cambio de contexto es pura sobrecarga; el sistema no hace ningún trabajo útil al cambiar Cuanto más complejos sean el sistema operativo y el PCB  más largo será el cambio de contexto  El tiempo depende del soporte de hardware Algunos hardware proporcionan múltiples conjuntos de registros por CPU  múltiples contextos cargados a la vez.

18 Encuentro 4.18Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Multitarea en sistemas móviles  Algunos sistemas móviles (por ejemplo, la versión anterior de iOS (2018)) permiten que solo se ejecute un proceso; los otros, suspendidos  Debido al espacio de la pantalla, los límites de la interfaz de usuario, iOS proporciona un Proceso único en primer plano controlado a través de la interfaz de usuario Múltiples procesos en segundo plano: en memoria, en ejecución, pero no en la pantalla y con límites Los límites incluyen una sola tarea corta, recibir notificaciones de eventos, tareas específicas de larga duración como la reproducción de audio  Android se ejecuta en primer plano y en segundo plano, con menos límites El proceso en segundo plano utiliza un servicio para realizar tareas El servicio puede seguir funcionando incluso si se suspende el proceso en segundo plano El servicio no tiene interfaz de usuario, utiliza poca memoria

19 Encuentro 4.19Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Operaciones sobre procesos  El sistema debe proporcionar mecanismos para: Creación de procesos Terminación del proceso

20 Encuentro 4.20Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Creación de procesos  El proceso padre crea procesos hijos que, a su vez, crean otros procesos, formando un árbol de procesos.  Generalmente, proceso identificado y gestionado mediante un identificador de proceso ( pid )  Opciones para compartir recursos Padres e hijos comparten todos los recursos Los hijos comparten un subconjunto de los recursos de los padres Padre e hijo no comparten recursos  Opciones de ejecución Los padres y los hijos se ejecutan al mismo tiempo El padre espera hasta que los hijos terminen

21 Encuentro 4.21Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Creación de procesos (Cont.)  Espacio de dirección Hijo duplicado del padre El niño tiene un programa cargado  Ejemplos de UNIX La llamada al sistema fork () crea un nuevo proceso Exec () llamada al sistema utilizada después de un fork () para reemplazar el espacio de memoria del proceso con un nuevo programa El proceso padre llama a wait () esperando que el hijo termine Cuando se llama la función fork, esta genera un duplicado del proceso actual.

22 Encuentro 4.22Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Un árbol de procesos en Linux

23 Encuentro 4.23Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Programa C, Bifurcación de Procesos #include int main() { pid t pid; /* bifurca un proceso hijo */ pid = fork(); if (pid < 0) { /* ocurrió un error */ fprintf(stderr, “Bifurcación (FORK) fallido"); return 1; } else if (pid == 0) { /* proceso hijo */ execlp("/bin/ls","ls",NULL); } else { /* proceso padre */ /* el padre esperará a que el hijo se complete */ wait(NULL); printf("hijo Completado"); } return 0; }

24 Encuentro 4.24Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Creando una bifurcación de un proceso a través de la API de Windows #include int main(VOID) { STARTUPINFO si; PROCESS INFORMATION pi; /* asignar memoria */ ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); /* crear proceso hijo */ if (!CreateProcess(NULL, /* use la línea de comando */ "C: ∖∖ WINDOWS ∖∖ system32 ∖∖ mspaint.exe", /* comando */ NULL, /* no hereda el identificador del proceso */ NULL, /* no hereda el identificador del hilo */ FALSE, /* deshabilita la herencia de manejadores */ 0, /* sin banderas de creación */ NULL, /* usa el bloque de entorno de los padres */ NULL, /* usa el directorio existente de los padres */ &si, &pi)) { fprintf(stderr, “Fallo en la Creación del Proceso"); return -1; } /* el padre esperará a que el hijo se complete*/ WaitForSingleObject(pi.hProcess, INFINITE); printf(“Hijo Completo"); /* cerrar los manejadores */ CloseHandle(pi.hProcess); CloseHandle(pi.hThread); }

25 Encuentro 4.25Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Terminación del proceso  El proceso ejecuta la última declaración y luego le pide al sistema operativo que la elimine usando la llamada al sistema exit (). Devuelve datos de estado de hijo a padre (a través de wait () ) Los recursos del proceso son desasignados por el sistema operativo  El padre puede terminar la ejecución de procesos hijos usando la llamada al sistema abort (). Algunas razones para hacerlo: El hijo superó los recursos asignados La tarea asignada al hijo ya no es necesaria El padre está saliendo y el sistema operativo no permitirá que un hijo continúe si su padre terminó

26 Encuentro 4.26Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Terminación del proceso  Algunos sistemas operativos no permiten que el hijo exista si su padre ha terminado. Si un proceso termina, todos sus hijos también deben terminarse. terminación en cascada. Se da de baja a todos los hijos, nietos, etc. La terminación la inicia el sistema operativo.  El proceso padre puede esperar la terminación de un proceso hijo utilizando la llamada al sistema wait (). La llamada devuelve información de estado y el pid del proceso terminado. pid = wait(&status);  Si ningún padre está esperando (no invocó wait () ) el proceso es un zombi  Si el padre termina sin invocar wait (), el proceso es huérfano

27 Encuentro 4.27Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Importancia de la Jerarquía de procesos, Android  Los sistemas operativos móviles a menudo tienen que finalizar procesos para recuperar recursos del sistema, como la memoria. De mayor a menor importancia: Procesos de primer plano Procesos visible Procesos de servicio Procesos en el backgroud Procesos vacíos  Android comenzará a terminar los procesos que son menos importantes.

28 Encuentro 4.28Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Arquitectura multiproceso: navegador Chrome  Muchos navegadores web se ejecutaron como un solo proceso (algunos todavía lo hacen) Si un sitio web causa problemas, todo el navegador puede bloquearse o bloquearse  El navegador Google Chrome es multiproceso con 3 tipos diferentes de procesos: El proceso del navegador (Browser) gestiona la interfaz de usuario, el disco y la E / S de red El proceso de renderizado renderiza páginas web, se ocupa de HTML, Javascript. Un nuevo renderizado creado para cada sitio web abierto.  Se ejecuta en un espacio aislado (sandbox) que restringe la E/S de red y disco, minimizando el efecto de las vulnerabilidades de seguridad Plug-in de proceso para cada tipo de plug-in

29 Encuentro 4.29Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Comunicación entre procesos  Los procesos dentro de un sistema pueden ser independientes o cooperantes  El proceso de cooperación puede afectar o verse afectado por otros procesos, incluido el intercambio de datos  Razones para cooperar en los procesos: El intercambio de información Aceleración de la computación Modularidad Conveniencia  Los procesos cooperativos necesitan comunicación entre procesos ( interprocess communication IPC )  Dos modelos de IPC Memoria compartida Paso de mensajes

30 Encuentro 4.30Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Comunicación entre procesos (a) Shared memory. (b) Message passing. (a) Memoria compartida. (b) Transferencia de mensajes.

31 Encuentro 4.31Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Problema productor-consumidor  Paradigma de procesos cooperativos: El proceso de producción produce información que es consumida por un proceso de consumo.  Dos variaciones: Unbounded-buffer no coloca ningún límite práctico en el tamaño del búfer:  El productor nunca espera  El consumidor espera si no hay búfer para consumir Bounded-buffer supone que hay un tamaño de búfer fijo  El productor debe esperar si todos los búferes están llenos  El consumidor espera si no hay búfer para consumir

32 Encuentro 4.32Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS IPC - Memoria compartida  Un área de memoria compartida entre los procesos que desean comunicarse  La comunicación está bajo el control de los procesos de los usuarios, no del sistema operativo.  El problema principal es proporcionar un mecanismo que permita a los procesos del usuario sincronizar sus acciones cuando acceden a la memoria compartida.  La sincronización se analizará con gran detalle posteriormente.

33 Encuentro 4.33Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Búfer limitado: solución de memoria compartida  Datos compartidos #define BUFFER_SIZE 10 typedef struct {... } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0;  La solución es correcta, pero solo puede usar elementos BUFFER_SIZE-1

34 Encuentro 4.34Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Proceso de productor: memoria compartida item next_produced; while (true) { /* producir un artículo en la próxima producción */ while (((in + 1) % BUFFER_SIZE) == out) ; /* hacer nada */ buffer[in] = next_produced; in = (in + 1) % BUFFER_SIZE; }

35 Encuentro 4.35Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Proceso de consumidor: memoria compartida item next_consumed; while (true) { while (in == out) ; /* no hacer nada */ next_consumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; /* consumir el artículo en el próximo proceso de consumido */ }

36 Encuentro 4.36Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS ¿Qué hay de llenar todos los búferes?  Supongamos que quisiéramos proporcionar una solución al problema consumidor-productor que llena todos los búferes.  Podemos hacerlo si tenemos un contador de enteros que realiza un seguimiento del número de búferes completos.  Inicialmente, el contador se establece en 0.  El productor incrementa el contador de enteros después de producir un nuevo búfer.  El contador de enteros disminuye y lo reduce el consumidor después de consumir un búfer.

37 Encuentro 4.37Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Productor while (true) { /* producir un artículo en la próxima producción */ while (counter == BUFFER_SIZE) ; /* hacer nada */ buffer[in] = next_produced; in = (in + 1) % BUFFER_SIZE; counter++; }

38 Encuentro 4.38Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Consumidor while (true) { while (counter == 0) ; /* hacer nada */ next_consumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; /* consumir el artículo en el próximo consumido */ }

39 Encuentro 4.39Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Página 137 sección 3.7 Ejemplos de sistemas IPC  En esa sección del libro, se exploran cuatro sistemas de IPC diferentes. Primero se cubre la API POSIX para memoria compartida y luego se discute el paso de mensajes en el sistema operativo Mach. A continuación, se presenta el Windows IPC, que curiosamente utiliza la memoria compartida como mecanismo para proporcionar ciertos tipos de transmisión de mensajes. Se Concluye con las tuberías, uno de los primeros mecanismos de IPC en sistemas UNIX. Revisar los ejemplos de esa sección

40 Encuentro 4.40Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Hilos y Concurrencias  Visión general  Programación multinucleo  Modelos de subprocesos múltiples  Bibliotecas de subprocesos  Enhebrado implícito  Problemas de subprocesos  Ejemplos de sistemas operativos En la próxima sesión

41 Encuentro 4.41Sistémas Operativos Universidad Nacional de Ingeniería PROMECYS Objetivos  Identificar los componentes básicos de un hilo y contrastar hilos y procesos.  Describir los beneficios y desafíos de diseñar aplicaciones multiproceso.  Ilustrar diferentes enfoques para el subproceso implícito, incluidos los grupos de subprocesos, la unión de bifurcaciones y Grand Central Dispatch  Describir como los sistemas operativos Windows y Linux representan subprocesos.  Diseñar aplicaciones multiproceso utilizando las API de subprocesamiento de Pthreads, Java y Windows En la próxima sesión


Descargar ppt "Sistemas Operativos – Lázaro González Universidad Nacional de Ingeniería PROMECYS Tema 2: Procesos, Hilos y Concurrencias."

Presentaciones similares


Anuncios Google