Sistemas de Operación II Introducción: Concurrencia Prof. Carlos Figueira Basado en materiales de Yudith Cardinale (USB) Williams Stallings, Eugene Styer
Contenido Definición de concurrencia Repaso de procesos e hilos Carlos Figueira/USB
Concurrencia Ejecución de múltiples tareas o actividades (hilos de ejecución) simultáneamente Plataformas: Procesador único: se alternan Múltiples núcleos o procesadores juntos: Symmetric Multi-Processor (SMP). Procesadores separados, conectados por redes de interconexión (Multiprocesadores) o por redes TCP/IP (Distribuidos) Carlos Figueira/USB
Tipos de Programas Concurrente: conjunto de procesos secuenciales ejecutados bajo un paralelismo abstracto, con memoria compartida Paralelos: procesos paralelos sobre múltiples procesadores (reales o virtuales) Distribuidos: paradigma de redes de procesadores, modelo de TCP/IP Carlos Figueira/USB
Arquitecturas paralelas Clasificadas en base a diferentes criterios: número de procesadores Conexión entre nodos Flujo de datos y de hilos de ejecución (taxonomía de Flynn, la veremos más adelante) Ejemplo: Multiprocesadores simétricos (SMP) Carlos Figueira/USB
Carlos Figueira/USB
Multiprocesadores Simétricos (SMP) Varios procesadores que comparten memoria de manera uniforme El núcleo (kernel) puede correr en cualquiera de los procesadores Típicamente cada procesador se encarga de su planificación desde el conjunto de procesos o hilos listos Carlos Figueira/USB
Carlos Figueira/USB
Procesos Carlos Figueira/USB
Proceso Un programa en ejecución Instancia de un programa ejecutando en un computador La entidad que puede ser asignada por y ejecutada en un procesador Una unidad de actividad caracterizada por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de instrucciones de sistema Carlos Figueira/USB
Elementos de un proceso Identificador Estado Prioridad Contador de programa Apuntadores a memoria Datos de contexto Información sobre estatus de I/O Contabilidad en uso de recursos Carlos Figueira/USB
Bloque de control de procesos (PCB) Contiene los elementos del proceso Creado y manejado por el S.O. Permite soporte para múltiples procesos Carlos Figueira/USB
Process Control Block Carlos Figueira/USB
Traza de procesos Secuencia de instrucciones que ejecuta un proceso Despachador cambia el procesador de un proceso a otro Carlos Figueira/USB
Ejemplo de ejecución Carlos Figueira/USB
Traza de Procesos Carlos Figueira/USB
Carlos Figueira/USB
Modelo de procesos con 5 estados Carlos Figueira/USB
Estados de Procesos Carlos Figueira/USB
Dos estados de suspendido Carlos Figueira/USB
Procesos y Recursos Carlos Figueira/USB
Modos de Ejecución Modo usuario Modo con menos privilegios Programas de usuario se ejecutan típicamente en este modo Modo sistema, modo de control o modo kernel Modo con más privilegios Núcleo del S.O. Carlos Figueira/USB
Creación de procesos Asigna un PID único Asigna espacio al proceso Inicializa el PCB Instala enlaces adecuados Ej: agrega el nuevo proceso a la lista enlazada usada por el planificador de CPU Crea o extiende otras estructuras de datos Ej: mantiene archivo de contabilidad (accounting) Carlos Figueira/USB
¿Cuándo sale proceso de CPU? Interrupción de reloj Proceso consumió su tajada de tiempo (time slice) Interrupción I/O Fallo de memoria Dirección corresponde a memoria que aún está en disco y debe ser traida a memoria principal Carlos Figueira/USB
¿Cuándo sale proceso de CPU? Trap Ocurrió un error o excepción Puede hacer que termine el proceso Llamada al supervisor Por ejemplo, abrir archivo Carlos Figueira/USB
Cambio de estado de proceso Salvar contexto del procesador, incluyendo el PC y otros registros Actualiza el PCB del proceso que está ejecutando Mueve PCB a la cola apropiada (listo, bloqueado, suspendido) Selecciona otro proceso para ejecución Carlos Figueira/USB
Cambio de estado de proceso Actualiza el PCB del proceso entrante Actualiza estructuras de manejo de memoria Restaura el contexto del proceso seleccionado Carlos Figueira/USB
Hilos Carlos Figueira/USB
Multihilos S.O. soporta múltiples hilos de ejecución en un mismo proceso MS-DOS soporta un sólo hilo UNIX soporta múltiples procesos de usuario, pero sólo un hilo por proceso Windows, Solaris, Linux, Mach, soportan múltiples hilos Carlos Figueira/USB
Carlos Figueira/USB
Procesos Tienen un espacio virtual de direcciones que contiene toda la imagen del proceso Acceso protegido a procesadores, otros procesos, archivos y recursos de I/O Carlos Figueira/USB
Hilo Un estado de ejecución (corriendo, listo, etc.) Se guarda el contexto del hilo cuando no está ejecutando Posee una pila de ejecución Espacio para variables locales (static) por hilo Acceso a la memoria y recursos del proceso (compartido por todos sus hilos) Carlos Figueira/USB
Carlos Figueira/USB
Beneficios de los hilos (vs. Procesos) Menor tiempo de creación/finalización Menor tiempo de cambio de contexto (en el mismo proceso) Comunicación eficiente entre hilos del mismo proceso a través de memoria y archivos, sin participación del núcleo Carlos Figueira/USB
Usos de hilos en un sistema de un solo usuario Varios trabajos simultáneos Procesamiento asíncrono Velocidad de ejecución Estructura de programa modular Carlos Figueira/USB
Hilos Suspender un proceso suspende todos sus hilos Terminar un proceso terminar todos sus hilos Carlos Figueira/USB
Estados del hilo Cambios de estado Creación (Spawn) Crea otro hilo Bloqueo Desbloqueo Termina Libera registros y pilas Carlos Figueira/USB
Multihilos Carlos Figueira/USB
Hilos a nivel de usuario Toda la gestión de los hilos es realizada por la aplicación (a través de librerías) El núcleo no se entera de la existencia de los hilos Carlos Figueira/USB
User-Level Threads Carlos Figueira/USB
Ventajas de hilo a nivel de usuario El cambio de hilo se hace a nivel de proceso usuario, sin costosos cambio de modo, Se pueden diseñar, si la librería lo permite, estrategias de planificación adaptadas a la aplicación Se puede ejecutar en cualquier S.O. (para la cual se disponga de la librería, e.g., POSIX) Carlos Figueira/USB
Desventajas Si un hilo hace una llamada bloqueante (p.e., I/O) se bloquea todo el proceso No se pueden aprovechar múltiples procesadores Carlos Figueira/USB
Hilos a nivel de núcleo Núcleo mantiene información de contexto para el proceso y los hilos Planificación de CPU es basada en hilos Ej.: GNU/Linux Carlos Figueira/USB
Kernel-Level Threads Carlos Figueira/USB
Ventajas de hilo a nivel de núcleo Varios hilos de un mismo proceso pueden ser asignados a diferentes procesadores Si un hilo se bloquea, el S.O. Puede asignar el CPU a otro hilo del mismo proceso El núcleo puede ser multihilos Carlos Figueira/USB
Desventajas Un cambio de hilo implica un trap y dos cambios de modo: Creación Hilo a nivel de núcleo demora aprox. 30 veces más que hilos a nivel de usuario Creación de proceso demora 10 veces más que hilo núcleo, Carlos Figueira/USB
Enfoque combinado Ejemplo: Solaris Creación de hilos en espacio de usuario Grueso de la planificación y la sincronización de hilos en la aplicación Carlos Figueira/USB
Carlos Figueira/USB
Anexo: Detalles sobre estructuras del S.O. Carlos Figueira/USB
Estructuras de control del SO Información acerca del estatus actual de cada proceso y cada recurso Las tablas son construidas por cada entidad manejada por el S.O. Carlos Figueira/USB
Memory Tables Allocation of main memory to processes Allocation of secondary memory to processes Protection attributes for access to shared memory regions Information needed to manage virtual memory Carlos Figueira/USB
I/O Tables I/O device is available or assigned Status of I/O operation Location in main memory being used as the source or destination of the I/O transfer Carlos Figueira/USB
File Tables Existence of files Location on secondary memory Current Status Attributes Sometimes this information is maintained by a file management system Carlos Figueira/USB
Process Table Where process is located Attributes in the process control block Program Data Stack Carlos Figueira/USB
Process Image Carlos Figueira/USB
Carlos Figueira/USB
Process Control Block Process identification Identifiers Numeric identifiers that may be stored with the process control block include Identifier of this process Identifier of the process that created this process (parent process) User identifier Carlos Figueira/USB
Process Control Block Processor State Information User-Visible Registers A user-visible register is one that may be referenced by means of the machine language that the processor executes while in user mode. Typically, there are from 8 to 32 of these registers, although some RISC implementations have over 100. Carlos Figueira/USB
Process Control Block Processor State Information Control and Status Registers These are a variety of processor registers that are employed to control the operation of the processor. These include Program counter: Contains the address of the next instruction to be fetched Condition codes: Result of the most recent arithmetic or logical operation (e.g., sign, zero, carry, equal, overflow) Status information: Includes interrupt enabled/disabled flags, execution mode Carlos Figueira/USB
Process Control Block Processor State Information Stack Pointers Each process has one or more last-in-first- out (LIFO) system stacks associated with it. A stack is used to store parameters and calling addresses for procedure and system calls. The stack pointer points to the top of the stack. Carlos Figueira/USB
Process Control Block Process Control Information Scheduling and State Information This is information that is needed by the operating system to perform its scheduling function. Typical items of information: Process state: defines the readiness of the process to be scheduled for execution (e.g., running, ready, waiting, halted). Priority: One or more fields may be used to describe the scheduling priority of the process. In some systems, several values are required (e.g., default, current, highest-allowable) Scheduling-related information: This will depend on the scheduling algorithm used. Examples are the amount of time that the process has been waiting and the amount of time that the process executed the last time it was running. Event: Identity of event the process is awaiting before it can be resumed Carlos Figueira/USB
Process Control Block Process Control Information Data Structuring A process may be linked to other process in a queue, ring, or some other structure. For example, all processes in a waiting state for a particular priority level may be linked in a queue. A process may exhibit a parent-child (creator-created) relationship with another process. The process control block may contain pointers to other processes to support these structures. Carlos Figueira/USB
Process Control Block Process Control Information Interprocess Communication Various flags, signals, and messages may be associated with communication between two independent processes. Some or all of this information may be maintained in the process control block. Process Privileges Processes are granted privileges in terms of the memory that may be accessed and the types of instructions that may be executed. In addition, privileges may apply to the use of system utilities and services. Carlos Figueira/USB
Process Control Block Process Control Information Memory Management This section may include pointers to segment and/or page tables that describe the virtual memory assigned to this process. Resource Ownership and Utilization Resources controlled by the process may be indicated, such as opened files. A history of utilization of the processor or other resources may also be included; this information may be needed by the scheduler. Carlos Figueira/USB
Processor State Information Contents of processor registers User-visible registers Control and status registers Stack pointers Program status word (PSW) contains status information Example: the EFLAGS register on Pentium machines Carlos Figueira/USB