Sistemas Operativos I. Tema 3. Procesos. Equipo de Sistemas Operativos DISCA / DSIC UPV



Documentos relacionados
Procesos. Planificación del Procesador.

Tema 1: Introducción a los S.O. Ejercicios de Planificiación de Procesos

Sistemas Operativos Tema 6. Planificación de procesos José Miguel Santos Alexis Quesada Francisco Santana

Sistemas Operativos. Curso 2014 Planificación

Sistemas Operativos. Curso 2015 Planificación

Planificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

Requerimientos Principales de un Sistema Operativo. Descripción y Control de Procesos. Proceso

Unidad II: Administración de Procesos y del procesador

Sistemas Operativos. Curso 2016 Procesos

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

Procesos. Procesos. Concurrencia de procesos. Qué es un proceso? Estados de un proceso. Modelo de 2 estados. (C) 2008 Mario Medina 1

Tema 4. Gestión de entrada/salida

Concurrencia. Primitivas IPC con bloqueo

El soporte del sistema operativo. Hace que un computador sea más fácil de usar. Permite que los recursos del computador se aprovechen mejor.

Requerimientos principales de un sistema operativo

Tema 8 Procesos. * Definición informal: un proceso es un programa en ejecución

Unidad 2: Gestión de Procesos

SOLUCION EXAMEN junio 2006

Hardware y Estructuras de Control. Memoria Virtual. Ejecución de un Programa. Ejecución de un Programa

Introducción a los Sistemas Operativos

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

CÓMO TRABAJA TU SISTEMA OPERATIVO?

ESTRUCTURAS BÁSICAS DE UN S.O.

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:

Unidad 1: Conceptos generales de Sistemas Operativos.

4. Programación Paralela

Unidad 2: Gestión de Procesos

Sistema de proceso por lotes: esquema operativo

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña

Tema 1. Conceptos fundamentales de los Sistemas Operativos

INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:

Sistemas operativos avanzados. 1.3 Algoritmos de planificación del procesador

PROGRAMACION CONCURRENTE. I.2 Recursos para la concurrencia.

1. Sistema Operativo Unix

Tema 2. Procesos. 1. Concepto de proceso

Procesos. Bibliografía. Threads y procesos. Definiciones

INFORMÁTICA. Matemáticas aplicadas a la Informática

TEMA 3: EL NÚCLEO DE UN SISTEMA OPERATIVO

La Tecnología líder en Simulación

2) Tenemos un sistema informático con una sola CPU que está gestionada mediante una cola multinivel con realimentación.

Capitulo V Administración de memoria

Tema 6. Gestión de la memoria

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

Sistemas Operativos Práctica 3

Gestión de procesos DEFINICIONES DE PROCESOS


Capítulo 1 Introducción a la Computación

Tema 11. Soporte del Sistema Operativo REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS MULTIPROGRAMACIÓN.

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Capítulo 2. Sistemas Operativos. Elementos, estructura y funciones generales.

Introducción a las redes de computadores

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

Hilos, comunicación y competencia entre procesos. Dr. Alonso Ramírez Manzanares 2-Sep-2010

Capítulo 4 Gestión de memoria

7. Manejo de Archivos en C.

INTRODUCCIÓN. Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware

8. Sentencia return y métodos

Introducción a la programación orientada a objetos

Tema 2: Implementación del núcleo de un Sistema Operativo

Sistemas operativos. Tema 9: Gestión n de E/S

CDI Exclusión mutua a nivel alto. conceptos

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Estructuras de Sistemas Operativos

Incidencias: Todas las incidencias que ocurrirán durante el apadrinamiento de un niño se deben registrar para poder buscar soluciones.

Unidad 1: Conceptos generales de Sistemas Operativos.

Ingeniería Superior de Informática. Curso 3º. Sistemas Operativos. Examen Final. TEORÍA. 31 de Enero de 2005

INTRODUCCION A LA PROGRAMACION DE PLC

Arquitectura de Aplicaciones

TEMA 1: VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS

Una mirada práctica a los Micro-Kernels y los Virtual Machine Monitors François Armand, Michel Gien INFORMATICA III

Fundamentos de los Sistemas Operativos (GII) Examen Final 15 de Junio de SEGUNDA PARTE - SOLUCIONES

Sistemas operativos: una visión aplicada. Capítulo 11 Estudio de casos: Linux

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

TEMA 7. GESTIÓN DE PROCESOS

Sistemas Operativos. Oscar Bedoya

Control y temporización Comunicación con la CPU Comunicación con el dispositivo externo Almacén temporal de datos Detección de errores

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

Unidad 2: Gestión de Memoria

Centro de Capacitación en Informática

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

WINDOWS : TERMINAL SERVER

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

SCT Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A.

UF0513 Gestión auxiliar de archivo en soporte convencional o informático

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Capítulo 9. Archivos de sintaxis

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACION DE COMPUTACIÓN PROYECTO DE CÁTEDRA. MATERIA: Introducción a la Programación

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Software Computacional y su clasificación

PROCESO ADMINISTRACIÓN DE RECURSOS TECNOLÓGICOS SUBPROCESO ADMINISTRACIÓN DE CONTINGENCIAS

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

ADMINISTRACIÓN DE BASES DE DATOS DISTRIBUIDAS

Señal de petición de Interrupción

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Capítulo 12: Indexación y asociación

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Transcripción:

Sistemas Operativos I Tema 3 Procesos Equipo de Sistemas Operativos DISCA / DSIC UPV

Introducción Existen varias razones para permitir la ejecución concurrente de procesos: Compartir recursos físicos Compartir recursos lógicos Acelerar los cálculos Modularidad Comodidad Objetivos del tema: Profundizar en el concepto de proceso Dar a conocer la implementación del modelo de procesos Estudiar las diferentes políticas de planificación del procesador 2

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. Bibliografía A. Silberschatz, P. Galvin. Sistemas Operativos. 5ª ed. Tema 4 W. Stallings. Sistemas Operativos 2ª ed. Tema 3. 7.- Evaluación de algoritmos. 8.- S.O. dirigido por eventos. 3

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 4

1.- Concepto de proceso Concepto de proceso: Existen diferentes visiones complementarias del concepto de proceso: Programa en ejecución. Unidad de asignación de recursos. Proceso como procesador virtual. 5

1.- Concepto de proceso Proceso como programa en ejecución: Programa: Lista de instrucciones. Ente pasivo. Proceso: Programa en ejecución. Ente activo. Pasa por una serie de estados Un programa reside normalmente en un fichero que se encuentra físicamente en el disco y es cargado en memoria cuando se crea el proceso para ejecutarlo. Puede haber dos o más procesos asociados a la ejecución de un mismo programa. Es habitual que un proceso genere más procesos durante su ejecución. 6

1.- Concepto de proceso Proceso como procesador virtual: Proceso: cada una de las actividades paralelas que se ejecutan en la máquina. Da la apariencia de que todas ellas se ejecutan sobre procesadores diferentes en paralelo. Ejemplos: Procesos de usuario: Un proceso de edición de un sistema de tiempo compartido. Un trabajo en un sistema por lotes. La compilación de un programa fuente en Pascal: el programa que ejecuta el proceso es el propio compilador. Procesos del sistema: swapper (que decide qué procesos hay que extraer de la memoria o introducir en ella cuando la cantidad de memoria libre no llega o supera ciertos límites), pagedeamon (es el encargado de utilizar reemplazo para liberar marcos y pasarlos a la reserva). 7

1.- Concepto de proceso Proceso como procesador virtual: El sistema operativo simula la existencia de N procesadores virtuales (procesos) a partir de una CPU o procesador físico. Cada procesador virtual ejecuta secuencialmente un único programa. Todos los procesos se ejecutan concurrentemente 8

1.- Concepto de proceso Ejecución secuencial y ejecución concurrente. Ejecución secuencial: La ejecución de un proceso se dice que es secuencial porque sus operaciones son ejecutadas por la CPU una tras otra, en el orden que dicte el programa. Ejecución concurrente: La ejecución de dos procesos se dice que es concurrente porque estos se pueden ejecutar en paralelo. Concurrencia real: Si cada proceso se ejecuta sobre una CPU. Concurrencia virtual: La CPU reparte su tiempo entre los procesos para simular su ejecución paralela. 9

1.- Concepto de proceso Proceso como unidad de asignación de recursos: Para ejecutar un programa se necesita un entorno formado por una serie de recursos: memoria, descriptores de ficheros y otros atributos del proceso. Un proceso se puede considerar como la unidad de propiedad de todos esos recursos. Tiempo de CPU P1 Memoria Tabla de descriptores ficheros Otros atributos 10

1.- Concepto de proceso Estados de un proceso Al ejecutar un proceso éste va cambiando de estado. El estado de un proceso se define como el comportamiento que presenta en un instante dado: Activo: El proceso se puede ejecutar. No hay impedimentos en asignarle alguna CPU. Ejecución: El proceso tiene asignada una CPU, las instrucciones se están ejecutando. Preparado: El proceso puede ser ejecutado pero está esperando que se le asigne una CPU libre. Puede haber varios procesos en este estado. Suspendido: No puede ser ejecutado porque el proceso se encuentra esperando un evento como: la finalización de una operación de E/S (una lectura de teclado) la comunicación con otro proceso, etc. 11

1.- Concepto de proceso Estados de un proceso: Proceso terminado por otro proceso ACTIVO NUEVO Admitido Elegido Planificador Terminación TERMINADO PREPARADO Expulsión EN EJECUCIÓN Fin E/S o llegada evento SUSPENDIDO Esperar E/S o evento Proceso terminado por otro proceso 12

1.- Concepto de proceso Operaciones sobre procesos (1) Creación: Supone asignar todos los recursos que el proceso necesita para su ejecución, como p.e. memoria. Ejemplo en UNIX: fork(). La utiliza el proceso init para crear un proceso que gestione cada terminal y el shell cada vez que recibe una nueva orden del usuario (si ésta es externa). Terminación: Supone liberar los recursos previamente asignados al proceso. Esta terminación puede ser: Terminación normal: El proceso invoca su propia terminación. Ejemplo en UNIX: exit() Terminación anormal: El proceso termina por iniciativa del sistema operativo al detectar alguna condición de error (violación de límites, errores aritméticos) o por iniciativa de algún otro proceso. Ejemplo en UNIX: kill() y señales. 13

1.- Concepto de proceso Operaciones sobre procesos (2): Suspensión: Supone pasar un proceso al estado suspendido para que espere un evento o E/S. Ejemplo en UNIX: read() sobre un tubo vacío. Activación: Pasar un proceso al estado activo cuando se produce el evento que esperaba. Ejemplo en UNIX: un proceso efectúa un write() sobre un tubo en el que había un lector esperando. El lector se reactiva. 14

1.- Concepto de proceso Estados de un proceso en UNIX En ejec. (usuario) ESTADOS ACTIVOS Empieza fork() inicial Fin de interrup. o llamada al sist. Interrupción o llamada al sistema exit() zombie wait() Acaba fork() Cambios de contexto En ejec. (núcleo) Espera evento preparado Ocurre evento suspendido SIGCONT SIGSTOP parado 15

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 16

2.- Implementación de procesos Para implementar procesos es conveniente pensar en un proceso como un procesador virtual que ejecuta un programa y que se implementa a partir de un procesador físico. La implementación de procesos requiere: Bloque de control de un proceso PCB (Process Control Block): es una estructura de datos para administrar el proceso. Almacena información de un proceso. Asignar los recursos necesarios para su ejecución, fundamentalmente la memoria para almacenar el código, los datos y la pila. Multiplexar la CPU entre los procesos: repartir el tiempo de la CPU entre los diferentes procesos para simular la ejecución paralela (concurrencia virtual). Bloque de control del sistema: es una estructura de datos que el sistema utiliza para controlar la ejecución de los procesos. Almacena información de todos los procesos. 17

2.- Implementación de procesos Bloque de Control de proceso (PCB): Es una estructura de datos donde se almacenan los atributos de un proceso, es decir, la información asociada a un proceso. En un sistema de multiprogramación se requiere un gran cantidad de información de cada proceso para su administración. Esta información puede agruparse en tres categorías: Identificación de Proceso: a cada proceso se le asigna un identificador numérico único (puede ser tan simple como un índice en la tabla de procesos). Información de estado del procesador (Contexto): Básicamente está formada por el contenido de los registros del procesador. Cuando se interrumpe un proceso, el contenido de los registros del procesador debe salvarse de forma que pueda restaurarse cuando el proceso reanude su ejecución Información de control del proceso: Información necesaria para que el sistema operativo controle y coordine los diferentes procesos. 18

2.- Implementación de procesos Identificación de Procesos. El PCB guarda: Identificador de este proceso. Identificador del proceso que creó a este proceso (proceso padre). Identificador del usuario. Información de estado del procesador Registros generales (visibles para el usuario). Contador de programa: contiene la dirección de la próxima instrucción a ejecutar. Códigos de condición: muestran el resultado de la operación aritmética o lógica más reciente (signo, cero, acarreo, desbordamiento). Información de estado: Indicadores de habilitación e inhabilitación de interrupciones. Puntero de Pila: Cada proceso tiene una o más pilas LIFO asociadas, para almacenar parámetros y direcciones de retorno de procedimientos y de las llamadas al sistema. El puntero de pila siempre apunta a la cima de la pila. 19

2.- Implementación de procesos Información de control de proceso. Información necesaria para que el sistema operativo controle y coordine los diferentes procesos activos. Estado del proceso: preparado, en ejecución, suspendido, etc. Prioridad de un proceso Información de planificación: depende del algoritmo de planificación, por ejemplo la cantidad de tiempo que el proceso ha estado esperando y que se ejecutó la última vez. Suceso (evento): identidad del suceso que el proceso está esperando antes de poder reanudarse (solicitudes de E/S pendientes). Mapa de memoria: memoria de código, memoria de datos y memoria de pila. 20

2.- Implementación de procesos Implementación de varios procesos: Cambios de contexto La ejecución aparentemente simultánea de varios procesos en un mismo sistema, requiere repartir el tiempo de CPU entre los procesos a ejecutar. Ello implica desasignar la CPU al proceso en ejecución y asignarla a un proceso preparado. Esta actividad se conoce con el nombre de cambios de contexto. Realizar un cambio de contexto lleva consigo: Salvar el contexto del proceso en ejecución en su PCB. Poner en la CPU el contexto del nuevo proceso (nuevo contador de programa). Actualizar la información de control de los procesos. 21

2.- Implementación de procesos? Cambio de contexto n procesadores virtuales PCB #1 PCB #2 PCB #n P1 contexto P2 contexto Pn contexto (4) (1) (3) (2) P1 --> P2 1 procesador físico CPU PC SP registros P2 --> P1 22

2.- Implementación de procesos Cambio de contexto. Los cambios de contexto no son trabajo útil e implican una sobrecarga importante si se hacen con frecuencia: reducen la utilización. Utilización de CPU t P1 P2 P3 P1 Cambios de contexto Utilización de CPU = T(P1) + T(P2) +T(P3) T(P1) + T(P2) +T(P3) + 3t 23

2.- Implementación de procesos Motivos que provocan cambios de contexto: Terminación normal del proceso, el proceso en ejecución se acaba. El proceso en ejecución es suspendido en espera de una E/S o de un evento. El proceso en ejecución es expulsado bien porque ha agotado la cantidad de tiempo de CPU asignada bien porque se decide asignarla a otro proceso más prioritario. El sistema se puede representar como un diagrama de colas donde Los círculos representan recursos Los rectángulos representan colas de procesos que esperan acceder a los recursos. 24

2.- Implementación de procesos Implementación de varios procesos: Estructuras de control del sistema Proceso nuevo Para Para implementar implementar procesos procesos es es conveniente conveniente pensar pensar en en un un sistema sistema como como una una colección colección de de recursos recursos y y colas colas que que representan representan los los procesos procesos que que esperan esperan para para utilizar utilizar el el recurso. recurso. Cola de procesos esperando ejecución Proceso terminado Los Los PCBs PCBs se se almacenan almacenan en en colas, colas, cada cada una una de de las las cuales cuales representa representa un un estado estado particular particular de de los los procesos. procesos. Recursos E/S Cola de procesos preparados Expulsión Cola de procesos esperando E/S CPU Colas Suceso Cola de procesos esperando suceso 25

2.- Implementación de procesos Implementación de varios procesos: Estructuras de control del sistema Los datos que el sistema utiliza para controlar la ejecución de los procesos, se pueden considerar reunidos en una estructura que se suele conocer con el nombre de Bloque de Control del Sistema (SCB). El SCB contiene en la gran mayoría de casos la siguiente información: Tabla de procesos Un puntero a la cola de PCBs de los procesos nuevos, que no están activos y están esperando ejecución. Un puntero al PCB del proceso que está haciendo uso de la CPU Un puntero a la cola de PCBs de los procesos preparados Un puntero a la cola de PCBs de los procesos que están esperando a que se produzca algún evento, para poder volver a ejecutarse, no pudiendo hacerlo hasta que tenga lugar el evento esperado. Los identificadores de las rutinas necesarias para tratar las interrupciones producidas por el hardware, software o errores indeseados. Estructuras de datos relacionadas con la comunicación y sincronización de procesos Otras tablas y datos relacionados con la gestión de memoria y ficheros. 26

2.- Implementación de procesos ESTRUCTURAS DE CONTROL DEL SISTEMA PCB 3 PCB n Identificador Contexto Proceso en ejecución Cola de procesos preparados Cola de procesos nuevos Estado: PREP Evento: --... P. siguiente PCB 6 PCB 1 Estado: EJEC Evento: -- Mapa de memoria... P. Siguiente - Cola de procesos esperando evento i Estado: SUSP? Vectores de interrupción Evento: i... PCB 4 PCB 2 P. siguiente Tabla de procesos 27

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 28

3.- Hilos de ejecución (Threads) Concepto de hilo de ejecución (thread). Hay sistemas operativos donde un proceso puede tener internamente actividades concurrentes llamadas hilos de ejecución. Ejemplo: Un proceso UNIX videojuego puede tener un hilo de ejecución para cada uno de los elementos móviles de la pantalla. 29

3.- Hilos de ejecución (Threads) Concepto de hilo de ejecución (thread). El concepto de proceso que se ha presentado incluye las dos características siguientes: Unidad de propiedad de recursos: A cada proceso se le asigna un espacio de direcciones virtuales para albergar a la imagen del proceso y, de cuando en cuando también se le puede asignar otros recursos (canales de E/S, dispositivos de E/S y ficheros). Unidad de ejecución: Un proceso es un camino de ejecución a través de un programa. Esta ejecución puede ser intercalada con la de otros procesos. Estas dos características son la esencia del proceso, pero pueden ser tratadas de manera independiente por el s.o. 30

3.- Hilos de ejecución (Threads) Se puede diferenciar entre: Proceso (proceso pesado): Unidad de propiedad de los recursos (memoria, descriptores de ficheros, etc). Tiene muchos atributos y es lento de crear. Hilo de ejecución (proceso ligero): Actividad concurrente dentro de un proceso (pesado). Todos los hilos de ejecución que pertenecen a un mismo proceso comparten sus recursos (memoria, descriptores de fichero, etc). Tiene pocos atributos y se crea rápidamente. P1 P2 Hilos de ejecución 31

3.- Hilos de ejecución (Threads) Compartir memoria Los procesos UNIX no comparten memoria (código o datos). Cada uno tiene su propio espacio de direcciones. Los hilos de ejecución de un mismo proceso pueden tener rutinas o variables comunes. No obstante, cada hilo tendrá su propia pila donde se guardarán las variables locales y argumentos de invocación. 32

3.- Hilos de ejecución (Threads) Los hilos de ejecución pueden implementarse de tres formas: Hilos a nivel de usuario (user-level threads): los hilos se crean a nivel del proceso de usuario vía un conjunto de procedimientos de biblioteca o vía el soporte de ejecución del lenguaje de programación. El sistema operativo sólo crea un hilo de ejecución en el núcleo por cada espacio de direcciones (proceso). El resto de los hilos son implementados por el run-time del lenguaje. Es la aproximación utilizada en sistemas operativos que no soportan hilos. Los cambios de contexto entre los hilos a nivel de usuario son rápidos, ya que no involucran llamadas al sistema. La política de planificación de estos hilos no está restringida a la propia del sistema operativo. Cuando este tipo de hilos invocan llamadas al sistema bloqueantes, normalmente se bloquea todo el proceso. No pueden explotar un sistema multiprocesador, ya que el sistema operativo ve un único proceso. 33

3.- Hilos de ejecución (Threads) Implementación de hilos Hilos a nivel de usuario Un programa, muchos hilos Un programa, muchos hilos Soporte en ejecución del lenguaje Soporte en ejecución del lenguaje Núcleo del SO = Espacio de direcciones = construcción lingüística o hilo a nivel usuario = proceso o hilo del SO 34

3.- Hilos de ejecución (Threads) Implementación de hilos de ejecución Hilos a nivel de núcleo Hilos a nivel del núcleo (kernel-level threads): El sistema operativo soporta hilos de ejecución y proporciona un conjunto de llamadas al sistema para su manipulación. Un programa, muchos hilos Soporte en ejecución del lenguaje Un programa, muchos hilos Soporte en ejecución del lenguaje El sistema crea un hilo de ejecución por cada hilo a nivel de usuario. Son la unidad de planificación del sistema. El bloqueo y activación de hilos corre a cargo del núcleo. Los cambios de contexto son manejados por el kernel y son unas 10 veces más lentos que en el caso de los hilos de usuario. Núcleo del SO = Espacio de direcciones = construcción lingüística o hilo a nivel usuario = proceso o hilo del SO 35

3.- Hilos de ejecución (Threads) Implementación de hilos de ejecución Aproximación híbrida: u 1 u 2 Un programa, muchos hilos Se implementan las dos clases de hilos anteriores. El sistema operativo permite más de un hilo por proceso. El soporte del lenguaje de programación utiliza un hilo del núcleo para implementar un grupo de hilos de usuario. Proporciona flexibilidad y el máximo rendimiento potencial al programador de aplicaciones. Soporte en ejecución del lenguaje k 1 Núcleo del SO = Espacio de direcciones = construcción lingüística o hilo a nivel usuario = proceso o hilo del SO 36

3.- Hilos de ejecución (threads) Utilización de hilos de ejecución Los hilos de ejecución pueden ser creados y manejados: Utilizando un lenguaje de programación convencional y llamadas al sistema. Ejemplo: C y threads en POSIX Utilizando construcciones lingüísticas (o clases) de un lenguaje de programación que admita concurrencia Ejemplo: Tareas en Ada95, threads en Java 37

3.- Hilos de ejecución (threads) Threads en POSIX: llamadas básicas Llamada pthread_create(thread_id, attr, func, args) pthread_exit (status) pthread_join (thread_id) pthread_t pthread_self() Descripción Crea un nuevo hilo de ejecución. El hilo de ejecución empieza en func y se le pasan los parámetros args. El hilo que la invoca finaliza su ejecución. Suspende la ejecución del hilo que invoca esta llamada, hasta que el thread_id acabe. Devuelve el identificador del thread que la invoca. 38

3.- Hilos de ejecución (threads) Threads en POSIX: un ejemplo #include #include <stddef.h> <stddef.h> #include #include <pthread.h> <pthread.h> void void * process(void process(void * arg){ arg){ printf("%s printf("%s ", ",(char (char*) *) arg); arg); fflush(stdout); fflush(stdout); pthread_exit(0); }} int int main(){ main(){ pthread_t pthread_t th_a, th_a, th_b; th_b; pthread_create(&th_a, NULL, NULL, process, process, "Hello"); "Hello"); pthread_create(&th_b, NULL, NULL, process, process, "World"); "World"); sleep(1); sleep(1); }} 39

3.- Threads en Ada: Declaración Ada permite la programación de actividades concurrentes. La facilidad Ada que permite programar estas actividades es el tipo de datos task. El tipo tarea debe ser especificado en primer lugar y posteriormente implementado. Las tareas Ada comparten memoria y se comunican y sincronizan mediante citas y/o objetos protegidos. Pueden declararse objetos tarea directamente omitiendo type. En este caso no pueden definirse variables. Cada tarea dispone de una copia de las variables locales declaradas. task task type typeniño; task task body bodyniño is is Sueño: Sueño: Boolean; Edad: Edad: Natural; begin begin loop loop Dormir; loop loop Comer; Comer; Jugar_O_Incordiar; exit exitwhen whensueño end endloop; exit exitwhen whenedad >...... end endloop; end endniño; Victor,Santiago,Gabriela: Niño; Niño; 40

3.Threads en Ada: activación y finalización Cuando un programa Ada comienza, se crea la tarea principal, la cual ejecuta el subprograma principal. Cuando se declara una variable del tipo task, el soporte en tiempo de ejecución del lenguaje Ada crea un hilo de ejecución (proceso ligero) dentro del proceso que está ejecutando el programa. Una tarea comienza su ejecución cuando comienza la ejecución de la unidad (maestra) donde se declara. La unidad de ejecución maestra sólo finaliza cuando finalizan todas las tareas que dependen de ella. procedure Guarderia is is task task type typeniño; task task body bodyniño is is ------ ------ end endniño; Victor, Victor, Santiago, Gabriela: Niño; Niño; begin begin -- --unidad maestra; end endguarderia; Inician Inician Guarderia y los los tres tres niños niños Guarderia espera espera la la terminación de de los los tres tres niños niños 41

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 42

4.- Concepto de planificación Recursos reutilizables en serie Escasez de recursos: el número de recursos es inferior al número de procesos que compiten por ellos. Recursos reutilizables en serie: aquellos que sólo pueden estar asignados a un proceso en un instante de tiempo dado. Ejemplos: Impresoras, CPU. Planificación de recursos: Con recursos reutilizables en serie el s.o. tiene que aplicar una política para asignar recursos a los procesos. 43

4.- Concepto de planificación P1 Ejecución Interrup. o llamada al sist 1 Salvar contexto en PCB #1 PLANIFICADOR: -- Tratamiento escoger nuevo proceso Cargar contexto desde PCB #2 2 P2 Ejecución Interrup. o llamada al sistema P3 4 Salvar contexto en PCB #2 PLANIFICADOR: -- Tratamiento escoger nuevo proceso 3 Ejecución Cargar contexto desde PCB #3 Sistema operativo 44

4.- Concepto de planificación Planificador Elemento del sistema operativo que determina a qué proceso se le asigna un determinado recurso (p. e. CPU) en cada instante de tiempo, de acuerdo con alguna política. En el caso de que el recurso a asignar sea la CPU se distinguen entre tres planificadores: Planificador a largo plazo. Planificador a medio plazo Planificador a corto plazo. 45

Diagrama de colas del sistema Proceso nuevo Cola de procesos esperando ejecución Planificador a largo plazo Planificador a corto plazo Proceso terminado Cola de procesos preparados CPU Planificador a medio plazo Cola de procesos intercambiados a disco Expulsión Planificador a medio plazo Recursos Colas E/S Suceso Cola de procesos esperando E/S Cola de procesos esperando suceso 46

4.- Concepto de planificación Planificador a largo plazo En un sistema de procesos por lotes, los procesos recién incorporados permanecen detenidos en una cola de procesamiento por lotes, en el disco. El planificador a largo plazo creará procesos a partir de la cola cuando sea posible. Dos son las decisiones que toma el planificador a largo plazo: Cuando crear un nuevo proceso: controla el grado de multiprogramación. Cuál va a ser el siguiente proceso a admitir: algoritmo FCFS (firts_come, firstserved), tener en cuenta prioridades, tiempos de ejecución esperados, exigencias E/S. Controla el grado de multiprogramación: conjunto de procesos que residen simultáneamente en memoria y se ejecutan concurrentemente. Selecciona procesos de la cola de procesos que están esperando ser ejecutados y los carga en memoria. Se ejecuta con poca frecuencia, ya que pueden transcurrir minutos entre la creación de nuevos procesos en el sistema. 47

4.- Concepto de planificación Planificador a medio plazo Cuando un usuario se conecta al sistema, se genera una solicitud de crear un proceso, los usuarios de tiempo compartido no pueden ser puestos en una cola y esperar a que el sistema pueda aceptarlos. En ocasiones es interesante sacar procesos de memoria para reducir el grado de multiprogramación o para mejorar la mezcla de procesos (orientados a CPU o E/S). Se encarga de controlar qué procesos, de entre todos los iniciados deben estar en memoria y qué otros deben estar en el espacio de intercambio. El planificador a medio plazo se encarga de sacar el proceso y volverlo a introducir más tarde. El proceso continuará su ejecución a partir del punto donde se había quedado. A este esquema comúnmente se le denomina swapping. 48

4.- Concepto de planificación Planificador a corto plazo Selecciona un proceso de la cola de procesos preparados para ejecución y le asigna la CPU. Se ejecuta con mucha frecuencia. El proceso seleccionado quizás se ejecute únicamente durante unos milisegundos antes de iniciar una solicitud de E/S. Se ejecuta cuando ocurre un evento que conduce a la interrupción del proceso actual, expulsando el proceso a favor de otro. Ejemplos de eventos: Interrupciones de reloj. Interrupciones de E/S. Llamadas al sistema operativo. Señales. 49

4.- Concepto de planificación Procesos orientados a CPU u orientados a E/S Un proceso orientado a CPU es aquel que invierte la mayor parte de su tiempo en efectuar cálculos y genera solicitudes de E/S con poca frecuencia. Proceso orientado a CPU CPU E/S CPU E/S CPU Un proceso orientado a E/S es aquel que emplea más tiempo en realizar E/S que en efectuar cálculos. Proceso orientado a E/S CPU E/S CPU E/S CPU El planificador a largo plazo debe seleccionar una mezcla adecuada de procesos orientados a CPU y orientados a E/S. 50

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 51

5.- Criterios de planificación Criterios de planificación Algunos de los criterios y características que un planificador debe conseguir son: Utilización: Los recursos se han de mantener tan ocupados como sea posible. Tiempo_recurso_ocupado / Tiempo_total Rendimiento: Maximizar el número de tareas procesadas por unidad de tiempo. Número_de_trabajos_terminados / Tiempo_total Tiempo de retorno: Tiempo que tarda en ejecutarse un proceso. Tiempo de salida - Tiempo de entrada =? TCPU +? TE/S +? TColas 52

5.- Criterios de planificación Criterios de planificación (2): Tiempo de espera: Tiempo que un proceso está en la cola de procesos preparados. Tiempo de respuesta: Tiempo que transcurre desde que se presenta una solicitud hasta que el sistema comienza a contestar (en procesos interactivos). Equidad: Garantizar que cada proceso obtiene la proporción justa de CPU. Es decir, que los procesos sean tratados de manera igualitaria. Lo opuesto a equidad sería inanición. 53

5.- Criterios de planificación Optimización de los criterios de planificación. No se pueden optimizar todos los criterios a la vez porque algunos de ellos son contrapuestos. Cada tipo de sistema tiene sus prioridades: Sistema por lotes: Maximizar utilización y rendimiento y minimizar el tiempo de retorno y de espera. Sistemas interactivos: Proporcionar equidad y hacer el tiempo de respuesta razonable y predecible. La multiprogramación en sí misma supone una mejora de muchos de los criterios anteriores respecto a la ejecución secuencial. Los algoritmos de planificación también tienen como objetivo mejorar algunos de los criterios mencionados. 54

5.- Criterios de planificación Ejemplo: Proceso P0 SIN MULTIPROGRAMACIÓN Proceso P1 Utilización Utilización CPU CPU = 6/10 6/10 = 60 60 Productividad Productividad = 2 trabajos/10 trabajos/10 = 0.2 0.2 Tiempo Tiempo de de retorno retorno = (5+10)/2 (5+10)/2 = 7.5 7.5 CPU E/S CPU E/S CPU CPU E/S CPU E/S CPU Proceso P0 CPU E/S CON MULTIPROGRAMACIÓN Se intercalan ráfagas de CPU con ráfagas de E/S CPU E/S CPU Proceso P1 Utilización Utilización CPU CPU = 100% 100% Productividad Productividad = 2 trabajos trabajos /6 /6 = 0.33 0.33 Tiempo Tiempo de de retorno retorno = (5 (5 + 6)/2 6)/2 = 5.5 5.5 Este Este representa representa un un caso caso extremo. extremo. En En el el caso caso de de TCPU TCPU << << T E/S E/S la la utilización utilización de de la la CPU CPU sería sería < 100% 100% CPU E/S CPU E/S CPU 55

5.- Criterios de planificación Histograma de intervalos de tiempo de CPU Gran número de ráfagas de CPU de corta duración Pequeño número de ráfagas de CPU de larga duración. frecuencia 160 140 120 100 80 60 40 20 8 16 24 32 duración de ràfaga (pulsos de reloj) 56

5.- Criterios de planificación Para mejorar la utilización de la CPU se podría: Aumentar el grado de multiprogramación (mientras la memoria lo permita). Adoptar un algoritmo de planificación adecuado que optimice el orden de ejecución de los procesos. Para conseguir un algoritmo de planificación óptimo se podría: Determinar qué parámetros se quiere optimizar. Conocer el tipo de comportamiento de los procesos. 57

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 58

6.- Algoritmos de planificación Objetivo Decidir a cuál de los procesos que están en la cola de procesos listos se le asignará la CPU. Clasificación de algoritmos de planificación: Por orden de llegada (FCFS). Circular (RR, round-robin) Por prioridades Sin expulsión ( Non preemptive ) / Con expulsión ( Preemptive ) Estáticos / Dinámicos Combinación de algoritmos: Clases de prioridades. 59

6.- Algoritmos de planificación Servicio por orden de llegada (FCFS : first-come, first-served ) La CPU es asignada a todos los procesos en el mismo orden que lo solicitan. Proceso T. llegada T. CPU P1 0 24 P2 0 3 P3 0 3 Caso 1) Orden de llegada P1, P2, P3 T. de espera medio: (0 + 24 + 27) / 3 = 17 P1 P2 P3 0 24 27 30 Caso 2) Orden de llegada P2, P3, P1 T. de espera medio: (6 + 0 + 3) / 3 = 3 P2 P3 P1 0 3 6 30 60

6.- Algoritmos de planificación Servicio por orden de llegada (FCFS : first-come, first-served ) Propiedades Sin expulsión: Cuando un proceso tiene asignada la CPU, la conserva hasta que desee liberarla, bien sea porque finaliza o por solicitud de una E/S. Ventajas Fácil de implementar Inconvenientes No optimiza el tiempo de espera: es muy variable en función del orden de llegada de los procesos y la duración de los intervalos de CPU. Efecto convoy: Los trabajos largos retrasan a los cortos (por ejemplo: piense en un sistema con un único trabajo con largas ráfagas de CPU y muchos trabajos con ráfagas cortas de CPU). No es adecuado para sistemas interactivos: Por ser sin expulsión un trabajo con una ráfaga de CPU larga puede provocar una espera larga a otros usuarios. 61

6.- Algoritmos de planificación Prioridad al trabajo más breve ( SJF: shortest job first ) Se asocia a cada trabajo (proceso) el tiempo del siguiente intervalo de CPU. Se asigna la CPU al trabajo con menor tiempo asociado. Sin expulsión: cuando un proceso tiene asignada la CPU, la conserva hasta que desee liberarla. 62

6.- Algoritmos de planificación Ejemplo: Prioridad al trabajo más breve (SJF). SJF (sin expulsión) Procesos Instante de llegada Duración P1 0 7 P2 2 4 P3 4 1 P4 5 4 Media del tiempo de espera: (0 + 6 + 3 + 7) / 4 = 4 P1 P3 P2 P4 0 7 8 12 16 Tiempo de espera medio: (0 + 6 + 3 + 7) / 4 = 4 63

6.- Algoritmos de planificación Variante con expulsión del SJF ( SRTF: Shortest Remaining Time First ) Prioridad al que le resta menos tiempo (para finalizar). La CPU es asignada al proceso que le queda menos tiempo para acabar la ráfaga de CPU en curso. Variante con expulsión de SJF: Si llega un proceso con un intervalo de CPU inferior al tiempo que le falta al proceso en ejecución para abandonar la CPU, entonces el nuevo proceso se hace con la CPU. 64

6.- Algoritmos de planificación Ejemplo del SRTF. Procesos T. Llegada Duración P1 0 7 P2 2 4 P3 4 1 Diagrama de Gantt P4 5 4 P1 P2 P3 P2 P4 P1 0 2 4 5 7 11 16 Cronograma por procesos P1 P2 P3 P4 Media del tiempo de espera: (9 + 1 + 0 + 2 ) / 4 = 3 65

6.- Algoritmos de planificación SRTF: Shortest Remaining Time First Ventajas SRTF optimiza la media de tiempo de espera. Inconvenientes El tiempo del siguiente intervalo de CPU es difícil de predecir. Esto lo hace difícil de implementar para un planificador a corto plazo.(en los sistemas por lotes el usuario puede aportar información). Posibilidad de inanición: los trabajos largos no se ejecutarán mientras haya trabajos cortos. 66

6.- Algoritmos de planificación Planificación SJF/SRTF Aunque no se conoce la longitud de la siguiente ráfaga se puede predecir su valor esperando que sea de longitud similar a las anteriores. Estimación del siguiente intervalo de CPU Se utiliza la media exponencial: T n+1 =? t n + (1 -? ) T n t n : tamaño real del n-ésimo intervalo de CPU T n : Tamaño estimado del n-ésimo intervalo de CPU.? : coeficiente exponencial 0?????? Caso??= 1, los datos históricos son irrelevantes y sólo tiene importancia la ráfaga más reciente de CPU. T n+1 = t n Caso? = 0, la historia reciente no tienen efecto, se supone que las condiciones actuales son transitorias. T n+1 = T n Es habitual que? = 1/2, por lo que la historia reciente y antigua se ponderan de igual manera. 67

6.- Algoritmos de planificación Planificación SJF/SRTF Estimación del siguiente intervalo de CPU Desarrollando la fórmula y sustituyendo T n+1 por t n llegamos a: T n+1 =? t n + (1 -? )? t n-1 + + (1 -? ) j? t n-j + + (1 -? ) n+1 T 0 Puesto que tanto (1 -? ) como? son menores o iguales que 1 cada término sucesivo tiene menos peso que el anterior. 12 10 Ejemplo de promedio exponencial para? = 1/2, y T 0 = 10 longitud de ráfaga 8 6 4 2 tiempo Ráfaga de CPU: 6 4 6 4 13 13 13 Predicción: 10 8 6 6 5 9 11 68

6.- Algoritmos de planificación Planificación por prioridades Se asocia a cada proceso un número (entero), llamado prioridad de acuerdo con algún criterio. Se asigna la CPU al trabajo con mayor prioridad (normalmente, mayor número). Ejemplo: SJF es un caso particular de prioridades en el que la prioridad es 1/T. 69

6.- Algoritmos de planificación Ejemplo: Planificación prioridades Diagrama de Gantt Procesos T. Llegada Duración Prioridad P1 0 7 5 P2 2 4 10 P3 4 1 15 P4 5 4 10 P1 P2 P3 P2 P4 P1 0 2 4 5 7 11 16 Cronograma por procesos P1 P2 P3 P4 70

6.- Algoritmos de planificación Planificación por Prioridades: Variantes Algoritmos con expulsión/sin expulsión. Prioridades estáticas/dinámicas. Prioridades estáticas: La prioridad se asigna antes de la ejecución y no cambia. Prioridades dinámicas: La prioridad cambia con el tiempo. 71

6.- Algoritmos de planificación Planificación por prioridades Problema de inanición Un algoritmo de prioridades es inherentemente poco equitativo. El problema extremo es: Inanición: Los procesos con baja prioridad no se ejecutan nunca. Solución: Actualización de prioridades: Esquema de prioridades dinámicas, donde la prioridad de un proceso aumenta con el tiempo de espera. 72

6.- Algoritmos de planificación Planificación circular ( RR: Round Robin ) A cada proceso se le asigna una pequeña cantidad de tiempo de CPU, llamada quantum de tiempo, normalmente 10-100mseg. Si el proceso tiene un intervalo de CPU mayor que el quantum, entonces es expulsado de la CPU y añadido a la cola de procesos listos. Si hay n procesos, cada uno obtiene 1/n del tiempo de la CPU en intervalos de q unidades, como máximo. 73

6.- Algoritmos de planificación Ejemplo: Planificación circular Diagrama de Gantt Quantum q=4 Procesos T. Llegada Duración P1 0 16 P2 0 3 P3 0 11 P1 P2 P3 P1 P3 P1 P3 P1 0 4 7 11 15 19 Cronograma por procesos P1 P2 P3 23 26 30 74

6.- Algoritmos de planificación Planificación circular Valor del quantum de tiempo Para q grandes: el algoritmo degenera en un algoritmo FCFS. Para q pequeños: q ha de ser grande respecto al tiempo necesario para el cambio de contexto, sino la sobrecarga introducida es muy alta. Regla práctica: El 80% de los intervalos de CPU han de ser inferiores al quantum de tiempo. 75

6.- Algoritmos de planificación Planificación circular Propiedades: Equitativo. El tiempo de espera máximo está limitado por (n -1)q, antes de recibir su siguiente cuanto de tiempo. El tiempo de retorno medio varía con el cuanto de tiempo. En general es peor que el del algoritmo SRTF. Mejora si un porcentaje alto de trabajos acaban antes de que acabe el cuanto de tiempo. 76

6.- Algoritmos de planificación Planificación con múltiples colas Los procesos se pueden clasificar fácilmente en distintos grupos (interactivos, por lotes, etc.). La cola de procesos preparados consiste en realidad en diversas colas Cada cola ha de tener su propio algoritmo de planificación. Ha de haber un algoritmo de planificación entre colas. 77

6.- Algoritmos de planificación Ejemplo de algoritmo de planificación entre colas: Prioridades estáticas: Los procesos en cola con menor prioridad no se ejecutan mientras haya procesos en cola con mayor prioridad. Posibilidad de inanición. Cuotas de tiempo: Cada cola está asignada a un porcentaje del tiempo de CPU. Ejemplo: el 80% a trabajos interactivos y el 20% a trabajos por lotes. Procesos Sistema Usuarios privilegiados Procesos Interactivos Procesos Por Lotes FCFS (prio. 10) PRIO (prio. 8) RR (prio. 6) SJF (prio. 4) Colas de procesos preparados 78

6.- Algoritmos de planificación Planificación con múltiples colas realimentadas. Existen diferentes colas de procesos preparados. Cada cola posee: Política de planificación. Una prioridad asignada. Un proceso puede cambiar de cola de acuerdo con un esquema de actualización de prioridades: Los procesos con un tiempo de espera acumulado elevado son promocionados a una cola con prioridad superior. Los procesos con un tiempo de utilización de la CPU elevado son degradados a una cola con prioridad inferior. 79

6.- Algoritmos de planificación Planificación con múltiples colas realimentadas. Ejemplo RR [q=8] (prio. 10) RR [q=16] (prio. 8) FCFS (prio. 6) Colas de procesos preparados 80

6.- Algoritmos de planificación Múltiples colas realimentadas Parámetros de las colas realimentadas: Número de colas. Prioridad de cada cola. Método de promoción de un proceso. Método de degradación de un proceso. Método para determinar la cola de entrada de un proceso. 81

6.- Algoritmos de planificación Planificación en UNIX SVR2 Algoritmo de colas multinivel realimentadas. La prioridad es mayor cuanto menor sea el número asignado. Los procesos que se ejecutan a nivel de usuario tienen prioridades por encima del valor base (base = 60 en UNIX SVR2). Los procesos que se ejecutan en el núcleo (debido a que han efectuado una llamada al sistema) tienen una prioridad cuyo valor se encuentra comprendido entre 0 y valor base-1. 82

6.- Algoritmos de planificación Planificación en UNIX SVR2 Las colas tienen un algoritmo RR con quantum de 1seg. Asignación dinámica de prioridades, de acuerdo con: El proceso en ejecución incrementa su uso de CPU en una unidad, cada pulso de reloj (60 veces por segundo). Cada segundo se divide el uso de CPU por 2 y se recalcula la nueva prioridad con: Uso CPU= uso CPU/2 Nueva prioridad = valor base + uso CPU /2 La base puede empeorarse con la llamada nice 83

6.- Algoritmos de planificación Planificación en UNIX SVR2 Cambios entre modo usuario y núcleo. Cuando un proceso realiza una llamada al sistema, no altera su prioridad a menos que deba suspenderse. Cuando un proceso es suspendido en el núcleo adquiere una prioridad de núcleo (< 60) que únicamente depende de la razón que le ha llevado a suspenderse y no de su prioridad de usuario. Ejemplo: (A>>B, significa que A es más prioritario que B, y por tanto A tiene menor número de prioridad que B) Espera de operación en disco >> Espera de entrada de teclado >> Espera de finalización de escritura en pantalla >> Espera de terminación de proceso hijo (ver figura transparencia 85). Cuando un proceso finaliza una llamada al sistema, recupera la prioridad que tenía antes de suspenderse dentro del núcleo. Aunque el planificador sea expulsivo, un proceso no puede ser expulsado mientras se ejecute dentro del núcleo. 84

6.- Algoritmos de planificación Planificación en UNIX Prioridad más baja Prioridad más alta 63 62 61 60 59 58 57 56. Prioridad de usuario 3 Prioridad de usuario 2 Prioridad de usuario 1 Prioridad de usuario 0 Esperando finalización hijo Espera E/S por terminal Esperando buffer de disco Esperando E/S de disco. Procesos esperando en modo usuario Procesos esperando en modo kernel 85

Planificación en UNIX Tiempo Proceso A Proceso B Proceso C Prioridad t. CPU Prioridad t. CPU Prioridad t. CPU 0 60 0 60 0 60 0 1. 60 1 75 30 60 0 60 0 1. 60 2 67 15 75 30 60 0 1. 60 3 63 7 67 15 75 30 8. 67 4 76 33 63 7 67 15 8. 67 5 68 16 76 33 63 7 SUPUESTOS: A, B, C se crean simult. Los procesos no hacen llamadas al sistema Prioridad inicial = Prioridad base = 60 El menor valor para la prioridad de usuario es el valor base (60), que a su vez indica la clase de mayor prioridad. El reloj interrumpe al sistema 60 veces/seg. Cada segundo calcula: t.cpu= t.cpu/2 prioridad= (t.cpu/2) + 60 86

6.- Algoritmos de planificación Un ejemplo: Planificación de hilos Algoritmo del sistema operativo Round Robin (RR) cuanto = 2 t10 I/O Algoritmo biblioteca threads Turno de llegada (FCFS) P1 t11 t12 0 1 2 3 P2 t20 0 5 87

6.- Algoritmos de planificación Un ejemplo: Planificación de hilos t10 t11t12 t20 P1 P2 t10 t11t12 t20 P1 P2 t10 t11t12 t20 Núcleo _ P1 P2 tn1 tn2 tn3 Threads a nivel de núcleo tn4 Núcleo _ tn1 tn2 Threads de usuario Núcleo _ tn1 tn3 tn2 Threads híbridos 88

6.- Algoritmos de planificación Planificación de hilos a nivel de núcleo t10 t11 t12 t20 t10 t11 t20 Usuario 0 1 3 4 6 7 8 11 Núcleo tn1 tn2 tn3 tn4 tn1 tn2 tn4 t10 I/O t10 t11t12 P1 P2 t20 P1 t11 t12 P2 t20 Núcleo _ 0 1 2 3 0 5 tn1 tn2 tn3 tn4 89

6.- Algoritmos de planificación Planificación de hilos a nivel de usuario t10 t20 t11 t20 t11 t12 t20 t10 Usuario 0 1 3 5 7 8 9 10 11 Núcleo tn1 tn2 tn1 tn2 tn1 tn2 tn1 t10 I/O t10 t11t12 t20 P1 P2 P1 t11 t12 0 1 2 3 P2 t20 0 5 tn1 Núcleo _ tn2 90

6.- Algoritmos de planificación Planificación de hilos en la aproximación híbrida t10 t20 t11 t12 t10 t20 t11 t20 Usuario 0 1 3 5 7 8 9 10 11 Núcleo tn1 tn2 tn3 tn1 tn2 tn3 tn2 t10 I/O P1 t10 t11t12 P2 t20 P1 t11 t12 P2 t20 Núcleo _ 0 1 2 3 0 5 tn1 tn3 tn2 91

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 92

7.- Evaluación de algoritmos Procesos en la selección de un algoritmo: (1) Selección de criterios (utilización CPU, t. respuesta, etc.). (2) Estudiar la adaptación de cada algoritmo a esos criterios. Es necesario evaluar para cada sistema cual es el algoritmo de planificación más adecuado. 93

7.- Evaluación de algoritmos Existen diferentes métodos para llevar a cabo dicha evaluación: Evaluación analítica: Dada la carga de trabajos producir una fórmula matemática del rendimiento para cada algoritmo de planificación. Modelo determinista: Evaluar el rendimiento para cada caso particular de carga. Modelos de colas: Caracterizar la carga con una distribución estadística (distribución exponencial). Caracterizar la tasa de llegada de trabajos. Caracterizar el tiempo de servicio de un recurso. Hacer análisis estadístico de las redes de colas. Ejemplo: Fórmula de Little n =? * E n: tamaño medio de la cola,? tasa media de llegada, E: tiempo medio de espera en la cola. Simulaciones: Hacer un modelo, programarlo y ejecutarlo. 94

Índice 1.- Concepto de proceso. 2.- Implementación de procesos. 3.- Hilos de ejecución (threads). 4.- Conceptos de planificación. 5.- Criterios de planificación. 6.- Algoritmos de planificación. 7.- Evaluación de Algoritmos. 8.- S.O. dirigido por eventos. 95

8.- S.O. dirigido por eventos El S.O. puede verse como un programa que atiende y sirve los eventos producidos por los procesos y los dispositivos. Cuando se da alguno de estos eventos cambia el estado de alguno de los procesos existentes en el sistema o el propio estado del sistema operativo. Qué podemos considerar un evento de este tipo? Una llamada al sistema. Una interrupción de un dispositivo de E/S. Una interrupción de reloj. Una excepción provocada por el código de un proceso (Instrucciones ilegales, acceso a memoria no asignada, divisiones por cero,...). 96

8.- S.O. dirigido por eventos Proceso actual Llamada Atención de llamadas SISTEMA OPERATIVO IPC IPC, espera E/S Activación del proceso Suspensión del proceso Fin de E/S Fin de espera temporal Atención de interrupciones Fin de quantum Interrupción HW Fallo de página Excepción Atención de excepciones Terminación Planificación Instr. ilegal, div. por cero Terminación del proceso 97

Flujo de control del S.O. Reloj Interrupción de periférico Excepción del Procesador Llamada al Sistema Activación del Sistema Operativo Guardar parte del contexto de usuario, para realizar cambio de modo de ejecución (usuario->núcleo) Anotar el avance del tiempo Si tiempo límite excedido: Proceso en ejecución a preparado Pasar a preparado al proceso que esperaba el fin de la E/S Finalizar el proceso en ejecución Pasar a suspendido al proceso en ejecución Crear hijo. Hijo a preparado Resolver la llamada al sistema Planificador: Selección del próximo proceso. Realizar cambio de contexto Realizar cambio de modo de ejecución (núcleo -> usuario). Recuperar contexto de usuario. 98