La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Concepto de proceso Sebastián Sánchez Prieto. Procesos 2  1999-2003 S2P, OGP & IGT Definición de proceso Un proceso es un programa en ejecución Componentes:

Presentaciones similares


Presentación del tema: "Concepto de proceso Sebastián Sánchez Prieto. Procesos 2  1999-2003 S2P, OGP & IGT Definición de proceso Un proceso es un programa en ejecución Componentes:"— Transcripción de la presentación:

1 Concepto de proceso Sebastián Sánchez Prieto

2 Procesos 2  1999-2003 S2P, OGP & IGT Definición de proceso Un proceso es un programa en ejecución Componentes: Código Datos Pila, etc. Ejemplo: Un compilador C NO es un proceso Un compilador C ejecutándose será un proceso para el sistema operativo Le asigna recursos (procesador, memoria, dispositivos, etc.) Controla su ejecución

3 Procesos 3  1999-2003 S2P, OGP & IGT Procesos y sistema operativo Los procesos se crean mediante llamadas al sistema: fork() sin parámetros en UNIX CreateProcess() con 10 parámetros y uno de ellos una estructura con 18 campos en WNT ¿Por qué múltiples procesos? Se aprovechan mejor los recursos físicos El rendimiento aumenta Incluso en sistemas monousuario es bueno poder navegar por Internet mientras se edita un documento y se escucha música

4 Procesos 4  1999-2003 S2P, OGP & IGT Estructura de un proceso UNIX int debug = 1; char *progname; main (int argc,char *argv[]) { int i; char *ptr,*malloc(); progname = argv[0]; printf("arg = %d\n",argc); for (i=1; i<argc; i++){ ptr = malloc(strlen(argv[i])+1); strcpy(ptr,argv[i]); if (debug) printf("%s\n",ptr); }

5 Procesos 5  1999-2003 S2P, OGP & IGT Texto (código) Datos iniciados de sólo lectura Datos iniciados de lectura-escritura Datos no iniciados Área dinámica (heap) Pila Contexto de usuarioContexto del núcleo Datos del núcleo Estructura de un proceso UNIX

6 Procesos 6  1999-2003 S2P, OGP & IGT Bloque de control de procesos Es la manifestación para el sistema operativo de que existe un proceso Almacena: Estado actual del proceso Identificación unívoca del proceso Prioridad del proceso Puntero a la zona de memoria asignada Puntero a los archivos abiertos Punteros a los recursos asociados Área de salvaguarda de registros Un puntero al siguiente PCB En Linux el PCB se conoce como task_struct Más información en: include/linux/sched.h

7 Procesos 7  1999-2003 S2P, OGP & IGT Hilos (Threads) Objetivo: compartir recursos entre procesos cooperantes de forma cómoda Hilo = proceso ligero = lightweight process = LWP = unidad fundamental de uso de procesador Básicamente se compone de un CP, una serie de registros y un área de pila Cada hilo comparte con con los otros hilos cooperantes código, datos y recursos del SO El código, los datos y los recursos son poseídos por otra entidad conocida como tarea (task) Una tarea sin hilos no tiene capacidad de ejecución, sólo “posee” recursos

8 Procesos 8  1999-2003 S2P, OGP & IGT Hilos (Threads) Un proceso tradicional (proceso pesado) se compone de una tarea con un hilo de ejecución La conmutación de un hilo a otro en la misma tarea requiere un coste mínimo ya que solo es necesario salvar los registros y conmutar la pila Los threads son muy adecuadas para sistemas distribuidos y sistemas multiprocesador (cada hilo se puede ejecutar en un procesador) Cada hilo sólo puede pertenecer a una tarea Los hilos pueden ser implementados en espacio de usuario o soportados por el núcleo

9 Procesos 9  1999-2003 S2P, OGP & IGT Hilos vs. procesos Los hilos se crean y se destruyen más rápidamente que los procesos Esto es así porque no es necesario asignarle recursos como la memoria El tiempo de conmutación entre hilos de la misma tarea es más rápida que la conmutación entre procesos Menor sobrecarga de comunicaciones debido a que todos los hilos de una tarea comparten memoria La programación con hilos debe hacerse cuidadosamente porque pueden producirse errores de sincronización

10 Procesos 10  1999-2003 S2P, OGP & IGT Hilos en espacio de usuario Ventajas: La conmutación entre hilos se puede realizar rápidamente sin ayuda del S.O. La planificación puede hacerla la aplicación Portabilidad entre SO diferentes Inconvenientes: Si el S.O. no sabe de la existencia de hilos en una tarea, el bloqueo de un hilo produce el bloqueo del resto de hilos de la misma tarea Dos hilos de una misma tarea no se pueden ejecutar en procesadores diferentes

11 Procesos 11  1999-2003 S2P, OGP & IGT Hilos soportados por el S.O. Ventajas: Si el S.O. soporta hilos, el bloqueo de uno de ellos en una tarea no afecta al resto Inconvenientes: La conmutación de un hilo a otro se hace vía interrupciones (mayor sobrecarga) En ambos casos la planificación puede tener resultados desagradables ¿Que pasaría en el caso de tener hilos a nivel de usuario y a nivel de kernel si tenemos dos tareas, una con cuarenta hilos y otra con un único hilo? La mayoría de los SS.OO. modernos soportan threads (OS/2, Mach, W2K, chorus, linux, etc). ¿Cómo programar con hilos?: Bibliotecas estándar “DCE Threads”, POSIX Threads, Sun threads, etc.

12 Procesos 12  1999-2003 S2P, OGP & IGT Ejemplo de uso de hilos #include void * periodic (void *arg) { int period; period = *((int *)arg); while (1) { printf("En tarea con periodo %d\n", period); sleep (period); } main() { pthread_t th1, th2; pthread_attr_t attr; int period1, period2; period1 = 2; period2 = 3;

13 Procesos 13  1999-2003 S2P, OGP & IGT Continuación del ejemplo if (pthread_attr_create (&attr) == -1) { perror (""); } if (pthread_create(&th1, attr, periodic, &period1) == -1) { perror(""); } if (pthread_create(&th2, attr, periodic, &period2) == -1) { perror(""); } sleep(30); printf("Salida del hilo principal\n"); exit(0); }

14 Procesos 14  1999-2003 S2P, OGP & IGT Hilos y procesos en Linux Se crean con la llamada clone() De hecho fork() y pthread_create() derivan de clone() Contextos: No permitidoAplicaciones Interrupciones Tareas de sistema Excepciones Llamadas al sistema Modo usuario Modo supervisor Contexto del núcleoContexto del proceso

15 Procesos 15  1999-2003 S2P, OGP & IGT Imagen de un proceso en Linux Cabecera 0x40000000 Código (Text) Datos (Data) Datos no iniciados (BSS) start_code end_code end_data end_bss Bibliotecas compartidas Cabecera 0x80000000 Código (Text) Sistema (1 Gb) Datos no iniciados (BSS) start_code end_code end_data end_bss Programa Información para carga dinámica 0xBFFFFFB Argumentos Variables de entorno Archivo del programa arg_start env_start Puntero a los argumentos y variables de entorno start_stack Datos (Data) 0x00000000 0x40000000 0xFFFFFFFF 0x3FFFFFFF Usuario (3 Gb)

16 Procesos 16  1999-2003 S2P, OGP & IGT Zombie Diagrama de estados Ejecución Listo Espera Desalojar Dormir Despertar Parado Despachar Dormir Despertar Finalizar

17 Procesos 17  1999-2003 S2P, OGP & IGT Información de la task_struct Estado del proceso En ejecución (Running) Esperando (Waiting) Por recursos o por eventos Puede a su vez estar interrumpible o ininterrumpible Detenido (Stopped) Generalmente por una señal (SIGSTOP) Útil en depuración Zombie No se ha liberado su entrada en la task_struct

18 Procesos 18  1999-2003 S2P, OGP & IGT Información de la task_struct Información de planificación Identificadores de proceso (pid) del padre (ppid) de usuario (uid) de grupo (gid) Enlaces “familiares” (pstree) Temporizadores periódicos o single-shot (señales)

19 Procesos 19  1999-2003 S2P, OGP & IGT Información de la task_struct Tiempo: jiffies en modo usuario y sistema (planificación) Sistema de archivos Punteros a cada descriptor de archivo Punteros a los VFS Raíz del proceso (home directory) Directorio actual (pwd) Memoria virtual Contexto específico del proceso

20 Procesos 20  1999-2003 S2P, OGP & IGT Procesos en W2K En W2K existen dos entidades relacionadas con la ejecución de programas: El proceso Los hilos (threads) El proceso es la unidad poseedora de recursos y su información se almacena en el “process block” El hilo es la entidad con capacidad de ejecución y su información se almacena en el “thread block” Ambas entidades son tratadas como objetos por el núcleo del SO

21 Procesos 21  1999-2003 S2P, OGP & IGT Proyección en memoria Usuario (2 Gb) Código.EXE Pilas de cada thread Heap Código.DLL Sistema (2 Gb) Ejecutivo, kernel, HAL, drivers, pilas del núcleo para cada hilo Win32K.sys 0x00000000 0x80000000 0xFFFFFFFF 0x7FFFFFFF Tabla de páginas Cache del sistema de archivos

22 Procesos 22  1999-2003 S2P, OGP & IGT Process block Proceso Tipo de objeto Atributos del cuerpo de objeto Servicios Crear proceso Abrir proceso Consultar información del proceso Configurar información del proceso Actualizar proceso... Operaciones con MV ID de proceso Token de acceso Prioridad base... Límites de cuota Contadores de E/S

23 Procesos 23  1999-2003 S2P, OGP & IGT Thread block Thread Tipo de objeto Atributos del cuerpo de objeto Servicios Crear hilo Abrir hilo Consultar información del hilo Actualizar hilo... Suspender Continuar ID de cliente Contexto del hilo Prioridad dinámica Prioridad base... Tiempo de ejecución

24 Procesos 24  1999-2003 S2P, OGP & IGT Diagrama de estados (threads) Finalizado Ejecución Listo Espera Desalojar Switch voluntario Switch voluntario Standby Ha perdido la pila Inicio Transición Desalojar Sólo en MP


Descargar ppt "Concepto de proceso Sebastián Sánchez Prieto. Procesos 2  1999-2003 S2P, OGP & IGT Definición de proceso Un proceso es un programa en ejecución Componentes:"

Presentaciones similares


Anuncios Google