Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Documentos relacionados
Sistemas Operativos Tema 5. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Sistemas Operativos. Procesos

Procesos Definición y Estados

Arquitecturas cliente/servidor

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Introducción a los Sistemas Operativos

Sistemas Operativos Práctica 3

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

Threads. Hilos - Lightweight process - Procesos ligeros

Sistemas Operativos. Curso 2016 Procesos

Convivencia Gestión de Procesos

Fundamentos de los Sistemas Operativos. Tema 1. Conceptos generales Estructura del sistema operativo ULPGC - José Miguel Santos Espino

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Estructura Windows NT

Tema 1: Programación Multiproceso. Curso

Conceptos de Planificación

Introducción a los Sistemas Operativos

Concurrencia y paralelismo

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control

SISTEMAS OPERATIVOS: Lección 4: Planificación de Procesos

Unidad 2: Gestión de Procesos

Tema 12: El sistema operativo y los procesos

Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

T5-multithreading. Indice

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

Usando el Sistema Operativo

Procesos. Lecturas recomendadas. Ejemplo: gcc. Modelo de procesamiento. Modelo de procesamiento. Jean Bacon Operating Systems (4)

Tema 4: Gestión de Procesos

Modelo de procesamiento

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Procesos e Hilos en C

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

Threads, SMP y Microkernels. Proceso

TEMA 1: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

1 HILOS (THREADS) EN JAVA

1 ( 3,5 puntos) Responda, justificando sus respuestas, a las siguientes cuestiones:

Federico Peinado

HP - UX. Qué es HP UX?

Introducción a los sistemas operativos. Ing Esp Pedro Alberto Arias Quintero

SISTEMAS. Ciclo 2014 Plan 2012

Sistemas Operativos. Daniel Rúa Madrid

Programación concurrente

Capítulo 3: Procesos. n Concepto de Proceso. n Despacho (calendarización) de Procesos. n Operaciones en Procesos. n Procesos en cooperación

ESCUELA DE INGENIERIA Informática Y Sistemas

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas

Manipulación de procesos

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

FUNDAMENTOS DE INFORMÁTICA. Principios Básicos de Sistemas Operativos. Definición de Sistema Operativo

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

Sistemas Operativos Procesos Descripción y Control

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Sistemas operativos: una visión aplicada. Capítulo 2 Introducción a los sistemas operativos

Tecnología de software para sistemas de tiempo real

Convivencia Introducción

Sistemas Operativos. Introducción. Tema 6

Evolución del software y su situación actual

Parte I:Teoría. Tema 3:Introducción a los Sistemas operativos. Instalación

Fundamentos de Sistemas Operativos

Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9)

ADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas:

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistema Operativo. Introducción a los Sistemas Operativos. El Sistema Operatico como Interfaz Usuario/Computador. Objetivos del Sistema Operativo

INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos

GESTION DE LA MEMORIA

Administración de Redes

Introducción a los sistemas operativos

Conceptos y Estructuras de Sistemas Operativos

Universidad Autónoma de Baja California Facultad de Ciencias Administrativas Unidad Mexicali

1.1 Concepto y definición de Sistemas Operativos

Introducción a Java LSUB. 30 de enero de 2013 GSYC

PROGRAMACIÓN CONCURRENTE

Sistemas Operativos. Dr. Luis Gerardo de la Fraga. Departamento de Computación Cinvestav

UNIVERSIDAD DE BELGRANO FAC. ING. Y TECNOLOGIA INFORMATICA SISTEMAS OPERATIVOS UNIDAD 2 PROCESOS - CONCEPTOS

Diferentes Perspectivas de un Ordenador

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

3.- Procesos. Concepto de Proceso. Despacho (calendarización) de Procesos. Operaciones en Procesos. Procesos en cooperación

APUNTES SOBRE PROCESOS Y DEADLOCK CONCEPTO DE PROCESO 1

Sistemas Operativos I Manual de prácticas

ALGORITMOS DE PROGRAMACIÓN NO EXPULSIVOS

Sistemas Distribuidos. Soporte de Sistemas Operativos

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos.

1. Sistema Operativo Unix

Introduccion a Sistemas Operativos. Ej: Linux

Unidad 1: Conceptos generales de Sistemas Operativos.

IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR GESTIÓN DE PROCESOS

1. INTRODUCCIÓN 1.1. Qué es un sistema operativo? El sistema operativo como máquina extendida El sistema operativo como gestor de

Conceptos de Sistemas Operativos. Sistema Operativo

Sincronización de Threads

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

SISTEMAS OPERATIVOS:

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente.

Interbloqueo. Concurrencia: Interbloqueo e Inanición

Sistemas Operativos. Dr. Wenceslao Palma M.

FUNDAMENTOS DE LOS SISTEMAS OPERATIVOS

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

Transcripción:

Fundamentos de los Sistemas Operativos Tema 2. Procesos 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana

Contenidos del Tema 2 Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads) Algoritmos de planificación de la CPU 2

Bibliografía para el Tema 2 Silberschatz, 7ª edición en español: Capítulo 3 (procesos): 3.1, 3.2, 3.3 (3.4 en adelante tratan IPC, no entra en FSO) Capítulo 4 (hebras/hilos): entero, especial atención a 4.1 y 4.3 Capítulo 5 (planificación de la CPU): entero, excepto 5.7 3

Qué es un proceso? Un proceso es un programa en ejecución. Un proceso necesita recursos para poder ejecutarse: memoria, dispositivos de E/S, la CPU, etc. Áreas típicas de la memoria: código (también llamado «texto») datos (variables globales + memoria dinámica) pila (datos locales de subrutinas) 4

Organización de la memoria de un proceso (Unix, Windows) max stack heap data 0 text 5

Estados de un proceso A medida que un proceso se ejecuta, cambia de estado: nuevo: recién creado por el S.O. en ejecución: está en la CPU ejecutando instrucciones bloqueado: esperando a que ocurra algún evento (ej. una operación de E/S) preparado: esperando a que le asignen un procesador terminado: no ejecutará más instrucciones y el S.O. le retirará los recursos que consume 6

Estados de un proceso nuevo admitido planificador llamada al sist. o excepción terminado preparado ejecución interrupción finaliza la operación u ocurre el evento bloqueado llamada al sist. de E/S o espera por un evento 7

Bloque de control de proceso (BCP) Cada proceso debe tener una estructura de datos que almacena su estado y otra información de control: Valores de los registros de la CPU Estado actual (preparado, bloqueado, etc.) Información para el planificador (prioridad, tiempo de espera ) apuntadores a los recursos de memoria, E/S, archivos etc. que tiene concedidos o abiertos Información de contabilidad (tiempo consumido ) 8

Planificación de la CPU (CPU scheduling) Qué proceso utiliza la CPU en cada momento? Objetivos diferentes según el tipo de sistema: Multiprogramación básica à sacar rendimiento al procesador Tiempo compartido à garantizar tiempos de respuesta cortos Tiempo real à garantizar plazos de ejecución 9

Cola de planificación Conjunto de procesos en espera por la utilización de un determinado recurso Implementación: tabla, lista enlazada, árbol El planificador inserta y extrae procesos de la cola de acuerdo con la política implementada PLANIFICADOR (política de planificación) cola de planificación recurso estructura de control (petición) 10

Colas de procesos El SO organiza los BCP en colas de espera por el procesador o por los dispositivos de E/S. (colas de planificación: cola de procesos, colas de dispositivos) cola de preparados CPU E/S cola de espera por E/S E/S cola de espera por E/S 11

Niveles de planificación El planificador de corto plazo o de bajo nivel es el que asigna y desasigna la CPU. En los sistemas por lotes, existe un planificador de largo plazo (PLP) o de alto nivel, que suministra procesos a la cola de preparados. El PLP trata de conseguir una mezcla adecuada de trabajos intensivos en CPU y en E/S. Se ejecuta con poca frecuencia. Planificador de medio plazo (swapper). Envía al disco procesos bloqueados, para liberar memoria principal a los otros procesos à intercambio (swapping). 12

Niveles de planificación cola de trabajos PLP cola de preparados PCP CPU E/S cola de espera por E/S PMP memoria secundaria 13

Cambio de contexto (context switch) Es la operación que consiste en desalojar a un proceso de la CPU y reanudar otro. El módulo del SO encargado de esta acción se suele llamar despachador (dispatcher). Hay que guardar el estado del proceso que sale en su BCP, y recuperar los registros del proceso que entra. Cada contexto se encuentra en cada BCP. El cambio de contexto es tiempo perdido, así que debe ser lo más rápido posible. El hardware a veces ofrece mecanismos para reducir el tiempo del cambio de contexto (ej. en x86, instrucción PUSHA = guarda todos los registros; bancos de registros alternativos; etc.). 14

Cambio de contexto proceso P 0 sistema operativo proceso P 1 interrupción o llamada al sistema en ejecución guardar estado en BCP 0. recuperar estado en BCP 1 ocioso ocioso interrupción o llamada al sistema en ejecución guardar estado en BCP 1 recuperar estado en BCP 0. ocioso en ejecución 15

API PARA TRABAJAR CON PROCESOS 16

Qué ofrece una API de procesos? Creación de nuevos procesos Terminación de procesos Comunicación entre procesos (IPC) 17

Creación de procesos Todo proceso se crea mediante una llamada al sistema ejecutada por otro proceso. Al creador se le llama proceso padre y al nuevo, proceso hijo. Relación entre el padre y el hijo: ejecutan el mismo código? utilizan la misma área de memoria? comparten archivos abiertos y otros recursos? cuando el padre termina, el hijo muere con él? 18

Identificadores y árboles de procesos Cada proceso recibe un identificador único (PID en Unix y Windows) ps pid = 9298 Los padres e hijos van formando un árbol de procesos bash pid = 8416 login pid = 8415 emacs pid = 9204 khelper pid = 6 init pid = 1 kthreadd pid = 2 pdflush pid = 200 sshd pid = 3028 sshd pid = 3610 tcsch pid = 4005 19

Ejemplos de llamadas al sistema Windows: CreateProcess(): se indica el fichero ejecutable donde está el código del hijo UNIX: fork(): crea un proceso hijo que es un duplicado del padre exec(): sustituye el código por un nuevo fichero ejecutable (no crea un nuevo proceso) 20

Ejemplo de fork() y exec() pid_t pid = fork(); if ( pid!=0 ) { puts ("Soy el proceso padre"); // otras acciones del proceso padre } else { // el hijo entrará por aquí puts ("Soy el proceso hijo"); // el hijo ejecuta la orden "ls -l // que reemplaza el código actual del hijo execlp ("ls", "ls", "-l", NULL); } 21

Terminación de procesos Un proceso termina cuando invoca a una llamada al sistema específica, ej. exit() También si se genera una excepción y el S.O. decide abortarlo. En UNIX, cuando un proceso termina, con él mueren sus descendientes. Podría existir una llamada al sistema para abortar otro proceso, ej. kill() Esperar por la terminación de un proceso hijo: wait() 22

Ejemplo de sincronización con wait() pid_t pid = fork(); if ( pid!=0 ) { puts ("Soy el padre, pid=%d\n", getpid()); //... otras acciones del padre int status; pid_t hijo = wait(&status); // espera por el hijo //... el padre puede continuar } else { printf("soy el hijo, pid=%d\n", getpid()); //... otras acciones del hijo exit(1234); } 23

Comunicación entre procesos (IPC) Cómo pueden intercambiar datos varios procesos? Dos modelos: Memoria compartida Paso de mensajes Mecanismos clásicos (Unix, Windows): Ficheros normales (ineficiente) Zonas de memoria compartida Tuberías (pipes) Sockets Llamadas a procedimiento remoto (RPC) 24

HILOS (THREADS) 25

Hilos (threads) Un hilo, hebra o proceso ligero es una unidad básica de ejecución, con su propio: contador de programa registros de CPU pila (stack) Los hilos dentro de una misma aplicación comparten: código y datos recursos del S.O. (ficheros, E/S, etc.) NOTA: thread se pronuncia «zred», NO «zrid» 26

Procesos pesados, procesos ligeros Un proceso pesado contiene uno o varios hilos que comparten la misma memoria y recursos. Proceso pesado = aplicación Hilos = actividades concurrentes dentro de la aplicación Hilos = procesos ligeros (lightweight processes) 27

La memoria en una aplicación multihilo código datos hilo1 hilo2 hilo3 pila1 pila2 pila3 Proceso pesado 28

Beneficios de los hilos Ventajas de N hilos en un único proceso pesado, respecto a N procesos pesados: Comunicación más sencilla entre los procesos (memoria compartida) Más concurrencia con menos recursos (usan el mismo espacio de memoria para código y datos) La conmutación entre hilos puede ser más eficiente (ej. al cambiar de hilo no hay que limpiar cachés y tablas de páginas) 29

Hilos a nivel de usuario / de núcleo (kernel threads / user threads) Algunos sistemas manejan los hilos fuera del núcleo, dentro de la propia aplicación à hilos de usuario Java JVM clásica, POSIX threads, etc. Hilos de núcleo à el propio núcleo es el que soporta los hilos Actualmente, es el caso más frecuente En un sistema con hilos de usuario, el núcleo no «sabe» que un proceso tiene concurrencia interna à si un hilo queda bloqueado, se bloquea a todo el proceso pesado 30

API de hilos: pthreads (Unix) #include <pthread.h> void* rutina1 ( void* arg ) { /* acciones que realizará un hilo */ } void* rutina2 ( void* arg ) { /* acciones que realizará otro hilo */ } int main() { // Declara dos objetos de tipo hilo pthread_t un_hilo, otro_hilo; // Lanza un hilo concurrente que ejecuta: rutina1(null) pthread_create ( &un_hilo, NULL, rutina1, NULL); // Lanza otro hilo que ejecuta: rutina2(null) pthread_create ( &otro_hilo, NULL, rutina2, NULL); } // El hilo principal espera a que finalicen los otros dos hilos void* dummy; // no se usa en este ejemplo pthread_join ( un_hilo, &dummy ); pthread_join ( otro_hilo, &dummy ); exit(0); 31

API de hilos: Java // Método uno: implementar la interfaz Runnable public class UnTipoDeHilo implements Runnable { public void run() { /* acciones del hilo */ } } // Método dos: heredar de la clase Thread class OtroTipoDeHilo extends Thread { public void run() { /* acciones del hilo */ } } public static void main(string args[]) { Thread t1 = new Thread(new UnTipoDeHilo); t1.start(); } Thread t2 = new OtroTipoDeHilo(); t2.start(); // espera a que acaben los hilos t1.join(); t2.join(); 32

Hilos implícitos / automáticos Objetivo: aliviar al programador del manejo de hilos Compiladores, bibliotecas, lenguajes de programación que tratan de crear y gestionar hilos automáticamente a partir de indicaciones abstractas del programador OpenMP, GCD (Apple), MTTD (Microsoft) 33

Hilos implícitos / automáticos Lenguajes con marcas para identificar zonas concurrentes OpenMP, go (Google), GCD (Apple) El entorno de tiempo de ejecución decide si se crea o no un hilo, dependiendo de los recursos disponibles; O bien mantiene un «pool de hilos» de tamaño fijo y a medida que se quedan libres hilos del pool se van ejecutando los bloques concurrentes 34

Fundamentos de los Sistemas Operativos Tema 2. Procesos FIN DEL PRIMER BLOQUE 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana