Concepto de proceso Sebastián Sánchez Prieto. Procesos 2 1999-2003 S2P, OGP & IGT Definición de...
-
Upload
martita-prudencio -
Category
Documents
-
view
214 -
download
0
Transcript of Concepto de proceso Sebastián Sánchez Prieto. Procesos 2 1999-2003 S2P, OGP & IGT Definición de...
Concepto de proceso
Sebastián Sánchez Prieto
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
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
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);
}
}
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
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
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
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
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
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
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.
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;
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);}
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
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)
1999-2003 S2P, OGP & IGT Procesos 16
ZombieZombie
Diagrama de estados
EjecuciónEjecución
ListoListo
EsperaEsperaDesalojarDesalojar
DormirDormir
DespertarDespertar
ParadoParadoDespacharDespachar
DormirDormir
DespertarDespertar
FinalizarFinalizar
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
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)
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
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
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
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
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
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