Apuntes_Leccion3_Procesos PDF
Document Details
Uploaded by DivineSilver
Instituto Tecnológico de Costa Rica
Luis Barboza Artavia
Tags
Summary
These notes cover the topic of processes in operating systems, including introduction, communication between processes, multiprogramming, threads, race conditions, and solutions to race conditions.
Full Transcript
CE4303 – Principios de Sistemas Operativos Procesos PROFESOR: ING. LUIS BARBOZA ARTAVIA Agenda • Introducción. • Procesos en un SO. • Comunicación entre procesos. • Modelo multiprogramación. • Hilos. • Condición de carrera. • Soluciones la condición de carrera. Introducción • Tenemos múltiples...
CE4303 – Principios de Sistemas Operativos Procesos PROFESOR: ING. LUIS BARBOZA ARTAVIA Agenda • Introducción. • Procesos en un SO. • Comunicación entre procesos. • Modelo multiprogramación. • Hilos. • Condición de carrera. • Soluciones la condición de carrera. Introducción • Tenemos múltiples programas corriendo, ¿cómo hacemos para que todos se ejecuten? • ¿Qué sucede si dos procesos necesitan el mismo recurso? • ¿Qué sucede si requiero que se comuniquen dos procesos? Introducción - RAM Procesos • Es una instancia de un programa en ejecución. • Dan la posibilidad de una operación concurrente. • Valores actuales de PC, registros, variables. Procesos • Todos los programas son procesos. • El CPU cambia de proceso en proceso de manera muy rápida. • Cada proceso tiene un “CPU virtual”. Procesos Procesos vs Programa How to bake a cake ¿Cuál es la diferencia entre un proceso y un programa? Procesos • Tiene un programa, entradas, salidas, estado. • Un único procesador puede ser compartido por varios procesos. • Puede haber un algoritmo de calendarización. • El programa puede ser almacenado en disco. Creación de procesos • Arranque del sistema. • Desde otro proceso. • Petición del usuario. • Inicio de trabajo por lotes. Creación de procesos – UNIX • Se utiliza la llamada fork. • Crea un clon exacto del proceso que realiza la llamada. • Ambos procesos tienen la misma imagen. • Con la llamada execve cambia la imagen y ejecuta el programa correspondiente. Creación de procesos – Windows • Se utiliza la llamada CreateProcess. • Crea un clon y carga el programa correcto. • La llamada tiene 10 parámetros. Creación de procesos • Una vez creado, tendrán su espacio de direccionamiento. • UNIX: espacio de direccionamiento es una copia. • Windows: espacio de direccionamiento son distintos. ¿Cuáles son los eventos que causa la creación de un proceso? Procesos • Procesos en primer plano. • Procesos en segundo plano. Daemons (demonios) • Procesos por debajo que no se asocian a un usuario, pero realizan una función específica. • UNIX: llamada ps. • Windows: uso del Task Manager. Terminación de procesos • Salida normal. • Salida por error. • Error fatal. • Eliminado por otro proceso. Salida normal • Es voluntaria. • Terminan cuando finalizan el trabajo • UNIX: exit. • Windows: ExitProcess. Salida por error • El proceso descubre que ha sucedido un error fatal. • Compilar un archivo que no existe. • Diálogo e intentar de nuevo. Error fatal • Error causado por un proceso. • Ejecución de instrucción ilegal, división por cero. Eliminado por otro proceso • Un proceso ejecuta una llamada para matar a otro proceso. • UNIX: kill. • Windows: TerminateProcess. ¿Cuáles son las condiciones de finalización de un proceso? Jerarquía en los procesos • La relación padre-hijo se mantiene en ciertos aspectos. • UNIX: grupo de procesos. • Recibir señales. • En UNIX el proceso inicial es init. • Windows no tiene concepto de jerarquía. Estados • Procesos son una entidad independiente. • ¿Los procesos se necesitan comunicar? • La salida de un proceso puede ser la entrada de otro. • Un estado puede estar en espera o ejecución. cat chapter1 chapter2 chapter3 | grep tree ¿Cómo se pueden crear los eventos? ¿Cuáles son las condiciones de finalización de un proceso? Estados • Ejecución. • Listo. Ejecución • Bloqueado. Bloqueado Listo Estados • Ejecución. • Listo. Nuevo Ejecución Saliente • Bloqueado. • Nuevo. • Saliente. Bloqueado Listo Procesos • El nivel más bajo es el calendarizador. • Todo el manejo de interrupciones y detalles para iniciar y detener procesos. • Se estructura de forma de procesos. Procesos • El cambio de proceso se puede ver como “algo sencillo”. • Es necesaria una tabla con una entrada por proceso. Bloque de control de proceso • Contiene toda la información de un proceso. • Para hacer cambio de proceso se necesita PCB. • Contiene: ◦ Contador de programa ◦ Estado del proceso. ◦ Apuntadores de pila. ◦ Asignación de memoria. ◦ Información sobre archivos abiertos. ◦ Información de contabilidad y planificación. ◦ Identificadores y demás elementos necesarios. Vector de interrupciones • A cada clase de I/O se tiene una ubicación. • Contiene una dirección del procedimiento encargado. Comunicación entre procesos • Memoria compartida. • Paso de mensajes. Memoria compartida • Una región de memoria a la cual ambos procesos tienen acceso. • Ambos procesos deben aceptar la restricción, con el fin de que ambos puedan leer y escribir. Paso de mensajes • Dos operaciones: enviar y recibir datos en ambos procesos. • Se debe establecer un enlace entre ambos. • Comunicación directa e indirecta. • Comunicación sincrónica o asincrónica. • Bufferización ¿A qué se refiere el término Quantum? Multiprogramación • El uso de CPU puede verse mejorado. • El uso del CPU se puede ver desde el punto de vista probabilístico. 𝐶𝑃𝑈 𝑢𝑡𝑖𝑙𝑖𝑧𝑎𝑡𝑖𝑜𝑛 = 1 − 𝑝𝑛 Hilos • Múltiples actividades sucediendo a la vez. • En algún momento se va a bloquear. • La descomposición hace el modelo más sencillo. • Son más livianos que los procesos. • Rendimiento. Hilos Hilos • Se puede estructurar: hilo de entrada, proceso y salida. Modelo clásico de hilos • Modelo de procesos se basa en: • Agrupamiento de recursos. • Ejecución. • Procesos son utilizados para agrupar recursos. • Hilos son entidades calendarizables para la ejecución en un CPU. Modelo clásico de hilos • Posibilidad de ejecución dentro del mismo ambiente. • Espacio de direccionamiento compartido. • ¿Existe protección en los hilos? Modelo clásico de hilos Dificultades con los hilos • Efectos en las llamadas al sistema como fork. • Si un proceso padre tiene múltiples hilos, ¿los hijos deben tenerlos? • ¿Qué sucede si un hilo cierra un archivo mientras otro lo esté utilizando? • ¿Qué sucede si un hilo asigna memoria y el siguiente también asigna memoria? Hilos en POSIX • IEEE definió un estándar para los hilos. Implementación hilos Espacio de usuario • Los hilos son implementados como una biblioteca. • Cada proceso requiere su tabla PCB para llevar control. • Invocar el calendarizador o rutinas de ejecución es más sencillo. • Permite configurar el calendarizador por proceso. Espacio de kernel • El kernel debe utilizar un tabla de threads donde se almacene información de todos los hilos del sistema. • Las llamadas que bloquean hilos, son implementadas como llamadas al sistema. • Uno de los problemas es el manejo de las señales de los procesos. Condición de carrera • Procesos que trabajan juntos pueden compartir recursos. • Dos o más procesos están leyendo o escribiendo datos compartidos y el resultado final depende de quién lo ejecuta y exactamente cuándo lo hace. Condición de carrera Para evitarlo se necesita: • Prevenir el problema. • Prohibir que dos o más procesos r/w sobre el recurso. • Exclusión mutua: mientras un proceso usa un recurso compartido, otro proceso es excluido de realizar lo mismo. Exclusión mutua Condición de carrera • Región crítica: sección del programa donde una memoria compartida es accedida. • Requerimiento: dos procesos NO estén al mismo tiempo. Condición de carrera • Dos procesos no pueden estar de manera simultánea dentro de sus regiones críticas. • No se pueden realizar suposiciones en tiempos o número de CPUs. • Un proceso corriendo fuera de su región crítica no puede bloquear un proceso. •Un proceso no debe esperar para siempre para entrar a su región crítica. Deshabilitando interrupciones • Al entrar se deshabilitan las interrupciones. • Al salir se habilitan. Variable candado • Solución de software. while (TRUE){ .... if (lock == 0){ lock = 1; critical_region(); lock = 0; } .... } while (TRUE){ .... if (lock == 0){ lock = 1; critical_region(); lock = 0; } .... } Alternancia estricta • Se llevan turnos para ingresar. Solución Peterson Semáforos • Variable entera para contar el número de accesos en el futuro. • Dos operaciones atómicas. • Down (sleep). • Up (wakeup). • Con múltiples CPU, deben estar protegidos por un candado. Down • Valor mayor a 0: lo disminuye y continúa. • Valor es 0: proceso se coloca dormido sin hacer disminución. Up • Incrementa valor del semáforo. • Más de un proceso dormido: se elige uno y se completa down. Elementos de un semáforo • El valor actual del semáforo. • El identificador del último proceso que operó con el semáforo • Cantidad de procesos en espera que el valor del mismo sea mayor. • Cantidad de procesos en espera que el valor del mismo sea cero. • Colas de proceso que están asociados a dicho semáforo. Referencias • Tanenbaum, A. and Bos, H., 2015. Modern Operating Systems. 4th ed. Pearson. • Stallings, W., 2012. Operating systems: internals and design principles. Boston: Prentice Hall. CE4303 – Principios de Sistemas Operativos Procesos PROFESOR: ING. LUIS BARBOZA ARTAVIA