Concepto de proceso Sebastián Sánchez Prieto. Procesos 2 1999-2003 S2P, OGP & IGT Definición de...

24
Concepto de proceso Sebastián Sánchez Prieto

Transcript of Concepto de proceso Sebastián Sánchez Prieto. Procesos 2 1999-2003 S2P, OGP & IGT Definición de...

Page 1: 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:

Concepto de proceso

Sebastián Sánchez Prieto

Page 2: 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:

1999-2003 S2P, OGP & IGT Procesos 2

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

Page 3: 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:

1999-2003 S2P, OGP & IGT Procesos 3

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 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

Page 4: 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:

1999-2003 S2P, OGP & IGT Procesos 4

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);

}

}

Page 5: 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:

1999-2003 S2P, OGP & IGT Procesos 5

Texto (código)

Datos iniciados de

sólo lectura

Datos iniciados de

lectura-escritura

Datos no iniciados

Área dinámica (heap)

Pila

Contexto de usuario Contexto del núcleo

Datos del núcleo

Estructura de un proceso UNIX

Page 6: 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:

1999-2003 S2P, OGP & IGT Procesos 6

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

Page 7: 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:

1999-2003 S2P, OGP & IGT Procesos 7

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

Page 8: 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:

1999-2003 S2P, OGP & IGT Procesos 8

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

Page 9: 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:

1999-2003 S2P, OGP & IGT Procesos 9

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

Page 10: 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:

1999-2003 S2P, OGP & IGT Procesos 10

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

Page 11: 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:

1999-2003 S2P, OGP & IGT Procesos 11

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.

Page 12: 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:

1999-2003 S2P, OGP & IGT Procesos 12

Ejemplo de uso de hilos

#include <pthread.h>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;

Page 13: 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:

1999-2003 S2P, OGP & IGT Procesos 13

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);}

Page 14: 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:

1999-2003 S2P, OGP & IGT Procesos 14

Hilos y procesos en Linux

Se crean con la llamada clone() De hecho fork() y pthread_create() derivan de clone()

Contextos:

No permitido Aplicaciones

InterrupcionesTareas de sistema

ExcepcionesLlamadas al sistema

Modo usuario

Modo supervisor

Contexto del núcleo Contexto del proceso

Page 15: 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:

1999-2003 S2P, OGP & IGT Procesos 15

Imagen de un proceso en Linux

Cabecera0x40000000

Código (Text)

Datos (Data)

Datos no iniciados (BSS)

start_code

end_code

end_data

end_bss

Bibliotecas

compartidas

Cabecera0x80000000

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)

Page 16: 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:

1999-2003 S2P, OGP & IGT Procesos 16

ZombieZombie

Diagrama de estados

EjecuciónEjecución

ListoListo

EsperaEsperaDesalojarDesalojar

DormirDormir

DespertarDespertar

ParadoParadoDespacharDespachar

DormirDormir

DespertarDespertar

FinalizarFinalizar

Page 17: 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:

1999-2003 S2P, OGP & IGT Procesos 17

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

Page 18: 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:

1999-2003 S2P, OGP & IGT Procesos 18

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)

Page 19: 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:

1999-2003 S2P, OGP & IGT Procesos 19

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

Page 20: 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:

1999-2003 S2P, OGP & IGT Procesos 20

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

Page 21: 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:

1999-2003 S2P, OGP & IGT Procesos 21

Proyección en memoria

Usuario (2 Gb)

Código .EXEPilas de cada threadHeapCódigo .DLL

Sistema (2 Gb)

Ejecutivo, kernel, HAL,drivers, pilas del núcleopara cada hiloWin32K.sys

0x00000000

0x80000000

0xFFFFFFFF

0x7FFFFFFF

Tabla de páginas

Cache del sistema de archivos

Page 22: 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:

1999-2003 S2P, OGP & IGT Procesos 22

Process block

ProcesoTipo de objeto

Atributos del cuerpode objeto

Servicios Crear procesoAbrir procesoConsultar información del procesoConfigurar información del procesoActualizar proceso...Operaciones con MV

ID de proceso Token de acceso Prioridad base ... Límites de cuota Contadores de E/S

Page 23: 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:

1999-2003 S2P, OGP & IGT Procesos 23

Thread block

ThreadTipo de objeto

Atributos del cuerpode objeto

Servicios Crear hiloAbrir hiloConsultar información del hiloActualizar hilo...SuspenderContinuar

ID de cliente Contexto del hilo Prioridad dinámica Prioridad base ... Tiempo de ejecución

Page 24: 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:

1999-2003 S2P, OGP & IGT Procesos 24

Diagrama de estados (threads)

FinalizadoFinalizado

EjecuciónEjecución

ListoListo

EsperaEspera

DesalojarDesalojar

SwitchvoluntarioSwitchvoluntario

StandbyStandby

Ha perdido la pilaHa perdido la pila InicioInicio

TransiciónTransición

DesalojarDesalojar

Sólo en MPSólo en MP