Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificación de procesos e hilos Servicios POSIX para gestión de procesos e hilos Sistemas Operativos II (II-UJI)
2
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Procesos en Minix Estados de un proceso Implementación del descriptor de proceso Procesos en Linux Implementación de la tabla de procesos Implementación de la lista de procesos preparados Procesos en Windows NT/2000 Objetos tipo proceso e hilo Estados de un hilo Implementación del procesos e hilos Sistemas Operativos II (II-UJI)
3
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Planificación de procesos e hilos Planificación en Minix Planificación en Linux Planificación en Windows NT/2000 Sistemas Operativos II (II-UJI)
4
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Bibliografía J. Carretero et al. Sistemas Operativos: Una Visión Aplicada. McGraw-Hill Capítulo 3 W. Stallings. Sistemas Operativos. Prenctice-Hall Capítulos 3, 4, 9 y 10 A.S. Tanenbaum, A.S. Woodnull. Operating Systems. Design and Implementation. Prentice-Hall International, 2a. edición H. Custer. Inside Windows NT. Microsoft Press Sistemas Operativos II (II-UJI)
5
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificación de procesos e hilos Servicios POSIX para gestión de procesos e hilos Sistemas Operativos II (II-UJI)
6
Sistemas Operativos II (II-UJI)
Concepto de proceso ¿Qué es un proceso? Instancia de un programa en ejecución, requiriendo para ello unos recursos Programa: estructura pasiva Proceso: estructura activa Proceso PC Recursos: Procesador Zonas de memoria Ficheros Dispositivos, etc. Programa Pila Datos Código Otros recursos: Ficheros abierto Dispositivos E/S, etc. Sistemas Operativos II (II-UJI)
7
Sistemas Operativos II (II-UJI)
Concepto de proceso Jerarquía de procesos: Algunos SO, como Unix, mantienen una estructura jerárquica entre procesos Otros, como Windows NT/2000 (en adelante WNT/2K), no la mantienen init Inicio Shell Editor Dem. Impr. Dem. Com.. Proceso A Proceso B Proceso D Proceso C Proceso E Proceso F Proceso init: PID = 1 Ancestro de todos los procesos Sistemas Operativos II (II-UJI)
8
Sistemas Operativos II (II-UJI)
Concepto de proceso El proceso nulo (o la tarea ociosa): ¿Qué ocurre cuando el procesador está ocioso? Se ejecuta el proceso nulo ¿Qué hace el proceso nulo? Ejecuta un bucle infinito que no realiza ninguna operación útil En sistemas Unix suele tener PID=0 Objetivo: Entretener al procesador cuando no hay ninguna otra tarea Sistemas Operativos II (II-UJI)
9
Sistemas Operativos II (II-UJI)
Concepto de proceso Entorno del proceso: Tabla NOMBRE-VALOR que se pasa al proceso en su creación Se incluye en la pila Se establece: Por defecto Mediante mandatos del shell (export) Mediante API del SO (putenv, getenv ) Ejemplo de entorno de un proceso en Unix: $env LOGNAME=castano SHELL=/bin/bash TERM=vt100 HOME=/users/icc/castano PATH=/usr/local/bin:/bin:/usr/bin:/users/castano/bin ... Sistemas Operativos II (II-UJI)
10
Sistemas Operativos II (II-UJI)
Concepto de proceso Grupos de procesos: Los procesos forman grupos de procesos con alguna característica común Conjunto de procesos creados por el mismo padre Conjunto de procesos creados a partir de un shell Conjunto de procesos dependientes de un terminal Se pueden realizar ciertas operaciones sobre un grupo de procesos Matar todos los procesos de un grupo de procesos Envío de señales a todos los procesos de un grupo de procesos Sistemas Operativos II (II-UJI)
11
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificación de procesos e hilos Servicios POSIX para gestión de procesos e hilos Sistemas Operativos II (II-UJI)
12
Información del proceso
Estado del procesador: Contenido de los registros del modelo de programación Imagen de memoria: Contenido de los segmentos de memoria en los que reside el código y los datos del proceso Bloque de control de proceso (BCP) Sistemas Operativos II (II-UJI)
13
Información del proceso
Mapa de Memoria Mapa de memoria del Proceso A Tablas SO PC SP Estado del Proceso B del Proceso C Registros generales especiales Tablas del sistema operativo Tabla de procesos - Tabla de memoria - Tabla de E/S - Tabla de ficheros BCP Proceso B BCP Proceso A BCP Proceso C - - Identificación - Control Estado (registros) Sistemas Operativos II (II-UJI)
14
Sistemas Operativos II (II-UJI)
Estado del procesador Formado por el contenido de todos los registros del procesador: Registros generales Contador de programa Puntero de pila Registro de estado Registros especiales Cuando un proceso está ejecutando su estado del procesador reside en los registros del computador Cuando un proceso no se está ejecutando su estado del procesador reside en el BCP Sistemas Operativos II (II-UJI)
15
Preparación del código de un proceso
Problema Editor Módulo Módulo fuente A fuente B Compilador o ensamblador Módulo Módulo Otros objeto A objeto B objetos Montador Objeto Bibliotecas ejecutable del sistema Cargador Ejecutable en memoria Sistemas Operativos II (II-UJI)
16
Sistemas Operativos II (II-UJI)
Imagen de memoria Formada por los espacios de memoria que un proceso está autorizado a utilizar La memoria del proceso la asigna el gestor de memoria del SO Si un proceso genera una dirección que esta fuera del espacio de direcciones el HW genera una interrupción HW interna La imagen de memoria, dependiendo del computador, puede estar referida a memoria virtual o memoria física Sistemas Operativos II (II-UJI)
17
Una tabla de páginas por proceso
Imagen de memoria Imagen de memoria de un proceso en un sistema con memoria virtual: Memoria virtual Código Datos Pila Disco principal Tabla de páginas Una tabla de páginas por proceso RIED Tamaño Registro identificador de estado de direccionamiento Sistemas Operativos II (II-UJI)
18
Sistemas Operativos II (II-UJI)
Información del BCP Información de identificación: PID del proceso, PID del padre ID de usuario real (uid real) ID de grupo real (gid real) ID de usuario efectivo (uid efectivo) ID de grupo efectivo (gid efectivo) Estado del procesador Información de control del proceso: Información de planificación y estado Descripción de los segmentos de memoria del proceso Recursos asignados (ficheros abiertos, ...) Comunicación entre procesos (señales, ...) Punteros para estructurar los procesos en listas o colas Tabla de ficheros abiertos por el proceso Sistemas Operativos II (II-UJI)
19
Sistemas Operativos II (II-UJI)
Información del BCP ¿Qué información del proceso se saca fuera del BCP? La que tiene tamaño variable Ejemplo: Tabla de páginas Razones de eficiencia La tabla de procesos se construye como una estructura estática, formada por un número de BCP del mismo tamaño La que se comparte: El BCP es de acceso restringido al proceso que lo ocupa Ejemplo: Punteros de posición de ficheros abiertos por el proceso Sistemas Operativos II (II-UJI)
20
Sistemas Operativos II (II-UJI)
Información del BCP Tabla de páginas: Describe la imagen de memoria del proceso Tamaño variable El BCP contiene el puntero a la tabla de páginas La compartición de memoria requiere que sea externa al BCP Punteros de posición de los ficheros: Si se asocian a la tabla de ficheros abiertos por los procesos (en el BCP) no se pueden compartir Si se asocian al nodo-i se comparten siempre Se ponen en una estructura común a los procesos y se asigna uno nuevo en cada servicio open Sistemas Operativos II (II-UJI)
21
Compartir información
Tabla de ficheros BCP 4 BCP 7 BCP 23 23 24456 IDFF PP 54 4563 34512 2345 633 56 28 5566 5368 4 10000 33 678 2 1 3 fd Tabla de ficheros del sistema El proceso con BCP7 es hijo del proceso con BCP4 Los procesos con BCP7 y BCP4 comparten punteros a los mismos ficheros El proceso con BCP23 abre uno de los ficheros compartido por los procesos con BCP7 y BCP4 IDFF = Identificativo de fichero PP = Posición puntero al fichero Sistemas Operativos II (II-UJI)
22
Sistemas Operativos II (II-UJI)
Tablas del SO Tabla de procesos: Tabla con los BCP de los procesos del sistema Tabla de memoria: Información sobre el uso de la memoria Tabla de E/S: Información asociada a los periféricos y a las operaciones de E/S Tabla de ficheros: Información sobre los ficheros abiertos en el sistema Sistemas Operativos II (II-UJI)
23
Sistemas Operativos II (II-UJI)
Tablas del SO Implementación de una cola de procesos listos: Proceso 7 Proceso 5 Proceso 3 Proceso 9 Inicio Tabla de procesos Cola de procesos listos Fin BCP 1 BCP 2 BCP 3 BCP 4 Sistemas Operativos II (II-UJI)
24
Usuarios y grupos reales y efectivos
Usuarios reales y efectivos: UID (“real user identifier”): Identificativo real del usuario Usuario responsable del proceso en ejecución EUID (“effective user id.”): Identificativo efectivo del usuario Se usa para: Acceder a ficheros de otros usuarios Enviar señales a procesos Ejecutar programas “setuid” Grupos reales y efectivos: GID (“real group identifier”): EGID (“effective group identifier”) Sistemas Operativos II (II-UJI)
25
Usuarios y grupos reales y efectivos
Programas “SETUID”: Cuando un proceso ejecuta un programa “setuid” el núcleo asigna al EUID del proceso el identificativo del propietario de dicho programa y al EGID del proceso el identificativo del grupo del propietario de dicho programa Ejemplos de programas “setuid”: login, mount, passwd, mkdir, etc. Cambio del bit “setuid” para el usuario y del bit “setgid” para el grupo: -r-x-—x-—x -r-s--x-—x -r---—x-—x -r-S--x-—x -r-x—-x--- -r-x-—s—-- chmod 4511 (ó chmod u+s) Bit “setuid” chmod 4411 (ó chmod u+s) Bit “setgid” chmod 2510 (ó chmod g+s) Sistemas Operativos II (II-UJI)
26
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificación de procesos e hilos Servicios POSIX para gestión de procesos e hilos Sistemas Operativos II (II-UJI)
27
Sistemas Operativos II (II-UJI)
Estados de un proceso Cuando un proceso se ejecuta pasa por distintintos estados Diagrama de transición entre estados: Ejecución Exit A CPU Espera por E/S o evento Expulsión CPU Fin E/S o llegada evento Listo Bloqueado Sistemas Operativos II (II-UJI)
28
Sistemas Operativos II (II-UJI)
Estados de un proceso Estados suspendidos: Exit Ejecución a d o a f i c i P l a n i d o Espera por E/S o evento i r u m o c o n s m m p o e T i e M Listo Fin E/S o llegada evento Bloqueado o c s o o c c Entra al d i s i s e l d d i sistema d a l a l o o o d a d d r a a e s u l s u l p u p p c x x e E E R Zona de intercambio Listo y Fin E/S Bloqueado y Procesos por lotes suspendido suspendido en espera Sistemas Operativos II (II-UJI)
29
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificación de procesos e hilos Servicios POSIX para gestión de procesos e hilos Sistemas Operativos II (II-UJI)
30
Formación de un proceso
Mapa de memoria Imagen del proceso Tabla de procesos BCP C a r g d o Objeto ejecutable Biblioteca sistema Sistemas Operativos II (II-UJI)
31
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificación de procesos e hilos Servicios POSIX para gestión de procesos e hilos Sistemas Operativos II (II-UJI)
32
Concepto de hilo de ejecución
Características básicas del modelo tradicional de proceso (pesado): Ejecución secuencial. Ejecución independiente. Planteamiento: Varios procesos pueden cooperar para resolver una misma tarea del SO Ejecución concurrente entre procesos Comunicación entre procesos, por ejemplo, a través de memoria. Un programa podría incluir varias actividades concurrentes Ejecución concurrente dentro de un proceso. Sistemas Operativos II (II-UJI)
33
Concepto de hilo de ejecución
¿Qué es un hilo de ejecución? También llamado hebra, proceso ligero, flujo, subproceso o “thread”. Programa en ejecución que comparte la imagen de memoria y otros recursos del proceso con otros hilos. Desde el punto de vista de programación: Función cuya ejecución se puede lanzar en paralelo con otras. Un proceso puede contener uno o más hilos. Sistemas Operativos II (II-UJI)
34
Concepto de hilo de ejecución
¿Qué es un hilo de ejecución (cont.)? Hilo: unidad de planificación Proceso: unidad de asignación de recursos Proceso Hilo 2 PC2 PC1 Pila 1 Pila2 Datos Código Otros recursos: Ficheros abierto Dispositivos E/S, etc. Hilo 1 Sistemas Operativos II (II-UJI)
35
Concepto de hilo de ejecución
Descriptor de un proceso y de un hilo: . . . Hilo 1 (principal) Hilos Zonas de memoria Gestión de E/S Otros datos Estado, tiempo de CPU, registros de CPU, pila, etc. Espacio de direcciones Ficheros abiertos, dispositivos abiertos, etc. Hilo 2 Hilo j Sistemas Operativos II (II-UJI)
36
Concepto de hilo de ejecución
Descriptor de un proceso y de un hilo: Todos los hilos de un proceso comparten el mismo entorno de ejecución (variables globales, espacio de direcciones, ficheros abiertos, etc.). Cada hilo tiene su propio juego de registros de CPU, pila, variables locales, etc. No existe protección entre hilos: un error en un hilo puede estropear la pila de otro. Para ordenar la forma en la que los hilos acceden a datos comunes hay que emplear mecanismos de sincronización. Sistemas Operativos II (II-UJI)
37
Concepto de hilo de ejecución
Servidor con múltiples hilos: Un hilo está bloqueado en espera y otro puede estar en ejecución. Ejemplo: Servidor secuencial de ficheros. Algoritmo Mientras no haya que terminar { Esperar a que llegue una petición Comprobar que la petición es correcta Si (los datos no están en la caché) { Realizar operación de E/S bloqueante sobre disco } Enviar resultado Sencillo. Prestaciones pobres: permanece bloqueado. Caché para bloques accedidos recientemente Sistemas Operativos II (II-UJI)
38
Concepto de hilo de ejecución
Servidor con múltiples hilos (cont.): Ejemplo (cont.): Servidor de ficheros con múltiples hilos. Mayor complejidad. Buenas prestaciones. Sistemas Operativos II (II-UJI)
39
Múltiples hilos/proceso
Concepto de multihilo Capacidad de un SO para mantener varios hilos de ejecución dentro de un mismo proceso. Múltiples procesos Múltiples hilos/proceso Ej: Windows 2000, Solaris, OS/2 Técnica multihilo Un proceso Ej: Java Un hilo/proceso Ej: MS-DOS Ej: Algunos UNIX Mono Proce Sado res Técnica monohilo Proceso Hilo Multi sado Sistemas Operativos II (II-UJI)
40
Implementación de hilos
Dos categorías: Hilos a nivel de usuario Hilos a nivel de núcleo Sistemas Operativos II (II-UJI)
41
Hilos a nivel de usuario
Gestión de hilos realizada por la aplicación a nivel de usuario mediante una biblioteca de hilos. El núcleo no es consciente de la existencia de hilos. Es posible programar cualquier aplicación como multihilo. Biblioteca de hilos Modo supervisor Modo usuario P Hilo a nivel de usuario Proceso Sistemas Operativos II (II-UJI)
42
Hilos a nivel de usuario
Ventajas frente a hilos a nivel de núcleo: No necesario acceder al núcleo para intercambio de hilos. Algoritmos de planificación ad-hoc para cada aplicación. Pueden ejecutarse en cualquier SO. Desventajas frente a hilos a nivel de núcleo: Una llamada al sistema realizada por un hilo bloquea a todos los hilos del proceso. Una aplicación multihilo no puede aprovechar las ventajas del multiprocesamiento. Ejemplo: Pthreads de POSIX. Sistemas Operativos II (II-UJI)
43
Sistemas Operativos II (II-UJI)
Hilos a nivel de núcleo Gestión de hilos realizada por el núcleo. Es posible programar cualquier aplicación como multihilo. Modo supervisor Modo usuario Proceso Hilo a nivel de usuario P Hilo a nivel de núcleo Sistemas Operativos II (II-UJI)
44
Sistemas Operativos II (II-UJI)
Hilos a nivel de núcleo Ventajas frente a hilos a nivel de usuario: El bloqueo de un hilo no supone (necesariamente) bloquear todo el proceso. Planificación de múltiples hilos de un proceso en múltiples procesadores. Las funciones del núcleo pueden ser multihilo. Desventajas frente a hilos a nivel de usuario: El intercambio de hilos se realiza accediendo al núcleo. Ejemplos: Linux, Windows 2000, OS/2. Sistemas Operativos II (II-UJI)
45
Aproximaciones combinadas
Ejemplo: Solaris Creación, sincronización y planificación de hilos de una aplicación en modo usuario. Planificación de múltiples hilos de un proceso en múltiples procesadores. El bloqueo de un hilo no supone (necesariamente) bloquear todo el proceso. Sistemas Operativos II (II-UJI)
46
Aproximaciones combinadas
Ejemplo: Solaris (cont.) Modo usuario Biblioteca de hilos Modo supervisor Proceso Hilo a nivel de usuario P Hilo a nivel de núcleo Sistemas Operativos II (II-UJI)
47
Sistemas Operativos II (II-UJI)
Modelos multihilo Relación de: Muchos a uno. Uno a uno. Muchos a muchos. Descripción HNU:HNN Ejemplos Pthreads POSIX Windows 2000, OS/2 Solaris M:1 1:1 M:N Hilo a nivel de usuario (HNU) Hilo a nivel de núcleo (HNN) Sistemas Operativos II (II-UJI)
48
Concepto de hilo de ejecución
Ventajas de utilizar múltiples hilos: La ejecución concurrente de hilos de un mismo proceso puede mejorar la eficiencia del sistema. Paralelismo dentro del proceso (en multiprocesadores). Las operaciones bloqueantes no paralizan al proceso (completo). Mayor eficiencia que con múltiples procesos en: Creación/eliminación de unidades de planificación. Cambio de contexto. Una buena solución para sistemas cliente/servidor. Facilidad de implementación. Sistemas Operativos II (II-UJI)
49
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Estados de un proceso Implementación del descriptor de proceso Sistemas Operativos II (II-UJI)
50
Sistemas Operativos II (II-UJI)
Procesos en Minix Diagrama de transición entre estados: ready: Pone el proceso en alguna de las colas de procesos listos del planificador Activa el proceso unready: Elimina el proceso de las colas de procesos listos Suspende el proceso pick_proc: Selecciona el proceso listo a ser ejecutado por la CPU Planificador sched: Pone al final de la cola el proceso de usuario en ejecución pues éste ha agotado su quantum de CPU ready sched En ejecución unready pick_proc Bloqueado Listo Sistemas Operativos II (II-UJI)
51
Sistemas Operativos II (II-UJI)
Procesos en Minix Descriptor de un proceso: EXTERN struct proc{ int p_reg[NR_REGS]; /* process’ registers */ int *p_sp; /* stack pointer */ struct pc_psw p_pcpsw; /* pc and psw as pushed by interrupt*/ struct mem_map p_map[NR_SEGS];/* memory map */ int *p_splimit; /* lowest legal stack value */ int p_pid; /* process id passed in from MM*/ int p_flags; /* P_SLOT_FREE, SENDING, RECEIVING, */ /* or 0 if the process is runnable */ real_time user_time; /* user time in ticks */ real_time sys_time; /* sys time in ticks */ real_time child_utime; /* cumulative user time of children */ real_time child_stime; /* cumulative sys time of children */ real_time p_alarm; /* time of next alarm in ticks, or 0 */ Sistemas Operativos II (II-UJI)
52
Sistemas Operativos II (II-UJI)
Procesos en Minix Descriptor de un proceso (cont.): struct proc *p_callerq; /* head of list of procs wishing to send */ struct proc *p_sendlink; /* link to next proc wishing to send */ message *p_messbuf; /* pointer to message buffer */ int p_getfrom; /* from whom does process want to receive? */ stuct proc *p_nextready; /* pointer to next ready process */ int p_pending; /* bit map for pending signals */ } proc[NR_TASKS+NR_PROCS]; Sistemas Operativos II (II-UJI)
53
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Estados de un proceso Implementación del descriptor de proceso Implementación de la tabla de procesos Implementación de la lista de procesos preparados Sistemas Operativos II (II-UJI)
54
Sistemas Operativos II (II-UJI)
Procesos en Linux Diagrama de transición entre estado típico. Bloqueo de un proceso: Espera a que ocurra un cierto evento Proceso bloqueado e interrumplible: Puede ser interrumpido por señales Puede desbloquearle: Una interrupción HW Liberación de un recurso por el que esperaba Una señal Proceso bloqueado e ininterrumplible: No acepta señales Sistemas Operativos II (II-UJI)
55
Sistemas Operativos II (II-UJI)
Procesos en Linux Descriptor de un proceso: Estructura task_struct del fichero include/linux/sched.h Estado del proceso: volatile long state; #define TASK_RUNNING 0 /* Proceso listo o en ejecución */ #define TASK_INTERRUPTIBLE 1 /* Proceso bloqueado interrumpible */ #define TASK_UNINTERRUPTIBLE 2 /* Proceso bloquea ininterrumpible */ #define TASK_ZOMBIE 3 /* Proceso finalizado */ #define TASK_STOPPED 4 /* Proceso parado tras llegar una señal SIGSTOP*/ unsigned long flags; /* Combinación de las banderas de estado */ #define PF_STARTING 0x /* Recién creado */ #define PF_EXITING 0x /* Finalizando */ Variable current: Puntero a la estructura task_struct del proceso en ejecución Sistemas Operativos II (II-UJI)
56
Sistemas Operativos II (II-UJI)
Procesos en Linux Identificativos del proceso: pid_t pid; /* Identificativo del proceso */ pid_t pgrp; /* Identificativo del grupo del proceso*/ pid_t session; /* Número de sesión del proceso */ uid_t uid,euid; /* Identificativo real y efectivo del usuario */ gid_t gid,egid; /* Identificativo real y efectivo del grupo */ gid_t groups[NGROUPS]; /* Lista grupos a los que pertenece el proceso */ Sistemas Operativos II (II-UJI)
57
Procesos en Linux Planificación del proceso:
unsigned long policy; /* Tres posibles políticas de planificación */ #define SCHED_FIFO 1 #define SCHED_RR 2 #define SCHED_OTHER 0 long counter; /* Procesos SCHED_OTHER: Tiempo de CPU por consumir */ /* Procesos RR: Valor actual del quantum de CPU (prioridad dinámica) */ long priority; /* Procesos RR: Valor inicial del quantum de CPU (prioridad estática) */ Los tiempos de CPU se miden en tics de reloj Sistemas Operativos II (II-UJI)
58
Sistemas Operativos II (II-UJI)
Procesos en Linux Jerarquía del proceso: struct task_struct *p_opptr; /* Original parent */ struct task_struct *p_pptr; /* Parent */ struct task_struct *p_cptr; /* Youngest child */ struct task_struct *p_ysptr; /* Younger sibling */ struct task_struct *p_osptr; /* Older sibling */ h i j o m á s v e n p a d r _ t y c Sistemas Operativos II (II-UJI)
59
Sistemas Operativos II (II-UJI)
Procesos en Linux Señales del proceso: struct sigset_t signal; /* Mapa de bits de señales recibidas */ struct sigset_t blocked; /* Mapa de bits de señales bloqueadas */ struct sigset_t sigpending; /* Mapa de bits de señales no bloqueadas y pendientes */ struct signal_struct *sig; /* Manejadores de señales */ struct signal_struct { atomic_t count; struct sigaction action[NSIG];/* Función que modifica el tratamiento por defecto de la señal */ }; int exit_signal; /* Número de señal que mató al proceso */ struct wait_queue *wait_chldexit; /* Lista de espera de finalización de hijos */ Sistemas Operativos II (II-UJI)
60
Procesos en Linux Monitorización del proceso:
long per_cpu_utime[NR_CPU]; /* Tiempo del proceso en modo usuario */ long per_cpu_stime [NR_CPU]; /* Tiempo del proceso en modo supervisor */ long start_time; /* Tiempo de creación del proceso */ /* Tiempos sobre temporizadores y alarmas */ unsigned long it_real_value; /* Tiempo real */ unsigned long it_prof_value, /* Tiempo en ejecución o estado listo */ unsigned long it_virt_value; /* Tiempo en ejecución sin contar la ejecución de llamadas al sistema */ struct timer_list real_timer; /* Lista de alarmas */ ¿Temporizador vs. Alarma? Sistemas Operativos II (II-UJI)
61
Sistemas Operativos II (II-UJI)
Procesos en Linux Segmentos de memoria del proceso: struct mm_struct *mm; struct mm_struct { ... struct vm_area_struct *mmap; struct vm_area_struct *mmap_avl; struct vm_area_struct *mmap_cache; unsigned long start_code, end_code; /* Dirección de inicio y fin del segmento de código */ unsigned long start_data, end_data; /* Dirección de inicio y fin del segmento de datos */ unsigned long start_stack; /* Dirección del tope del segmento de pila de usuario */ ... }; Sistemas Operativos II (II-UJI)
62
Sistemas Operativos II (II-UJI)
Procesos en Linux Sistema de ficheros del proceso: struct fs_struct *fs; /* Información del sistema de ficheros */ struct files_struct *files; /* Información de ficheros abiertos por el proceso */ struct fs_struct { atomic_t count; /* Número de procesos que comparten esta estructura */ int umask; /* Máscara de creación de ficheros */ struct dentry * root; /* Directorio raíz del proceso */ struct dentry * pwd; /* Directorio de trabajo */ }; struct files_struct { tomic_t count; /* Num. procs que comparten estos ficheros abiertos */ fd_set * close_on_exec; /* Ficheros a cerrar ante una llamada exec */ fd_set * open_fds; /* Máscara bits de los descriptores de fichs usados */ struct file * fd_array[NR_OPEN_DEFAULT]; /* Tabla de ficheros abiertos por el proceso*/ Sistemas Operativos II (II-UJI)
63
Tabla de ficheros del proceso Tabla de ficheros del sistema
Procesos en Linux Sistema de ficheros del proceso (cont.): 1 2 3 4 5 6 READ . . . WRITE 1 /etc/passwd 2 /usr/castano Tabla de ficheros del proceso Tabla de ficheros del sistema Tabla de inodos Sistemas Operativos II (II-UJI)
64
Sistemas Operativos II (II-UJI)
Procesos en Linux Incluye el proceso en ejecución Lista de procesos preparados: Lista circular doblemente enlazada que comienza y finaliza con el proceso init_task (PID=0) struct task_struct *next_run; /* Siguiente proceso de esta lista */ struct task_struct *prev_run; /* Anterior proceso de esta lista */ extern struct task_struct init_task; /* Cabeza y cola de la lista */ int nr_running; /* Num. total de procesos listos */ struct task_struct *current; /* Proceso en ejecución */ proceso init_task proceso A proceso B next_run prev_run Sistemas Operativos II (II-UJI)
65
Sistemas Operativos II (II-UJI)
Procesos en Linux Lista de procesos del sistema: Lista circular doblemente enlazada que comienza y finaliza con el proceso init_task struct task_struct *next_task; /* Siguiente proceso de esta lista */ struct task_struct *prev_task; /* Anterior proceso de esta lista */ extern struct task_struct init_task; /* Cabeza y cola de la lista */ proceso init_task proceso A proceso B next_task prev_task Sistemas Operativos II (II-UJI)
66
Sistemas Operativos II (II-UJI)
Procesos en Linux Tabla de procesos: Vector task del fichero kernel/sched.c struct task_struct * task[NR_TASKS] = {&init_task, }; struct task_struct init_task; Operaciones habituales sobre (todos los procesos de) la lista de procesos del sistema: #define for_each_task(p) \ for (p = &init_task ; (p = p->next_task) != &init_task ; ) Sistemas Operativos II (II-UJI)
67
Sistemas Operativos II (II-UJI)
Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Objetos tipo proceso e hilo Estados de un hilo Implementación del procesos e hilos Sistemas Operativos II (II-UJI)
68
Procesos en Windows NT/2000
Características de un proceso de Windows NT/2000: Los procesos NT se implementan como objetos y son accedidos mediante servicios de objetos Un proceso NT tiene asociados varios hilos que se ejecutan en su espacio de direccionamiento El gestor de procesos NT no mantiene ninguna relación entre los procesos que crea Sistemas Operativos II (II-UJI)
69
Procesos en Windows NT/2000
Identificativo de proceso Objeto de acceso Prioridad base Afinidad del procesador Tiempo de ejecución Puertos de comunicación Estado de finalización etc. PROCESO Tipo del objeto Atributos del objeto Servicios del objeto Crear proceso Abrir proceso Pedir información del proceso Añadir información del proceso Finalizar proceso Asignar/liberar memoria virtual Leer/escribir memoria virtual Objeto tipo proceso: Sistemas Operativos II (II-UJI)
70
Procesos en Windows NT/2000
Objeto tipo proceso (cont.): Atributo Descripción ID proceso Valor único que identifica al proceso Acceso Objeto con información de seguridad sobre el usuario que generó el objeto Prioridad base Prioridad base de sus hilos Afinidad del procesador Procesadores en los que se pueden ejecutar sus hilos Límites de cuotas Cantidad máxima de memoria paginada y no paginada, de tiempo de ejecución, etc. Tiempo de ejecución Tiempo total de ejecución de todos sus hilos Puertos comunicación Canal de comunicación al que enviar un mensaje si un hilo genera una excepción Estado de finalización Motivo de la finalización del proceso Sistemas Operativos II (II-UJI)
71
Procesos en Windows NT/2000
Identificativo de hilo Contexto Prioridad base Prioridad dinámica Afinidad del procesador Tiempo de ejecución Puerto de terminación Estado de finalización etc. HILO Tipo del objeto Atributos del objeto Servicios del objeto Crear hilo Abrir hilo Pedir información del hilo Añadir información del hilo Finalizar hilo Suspender/continuar hilo Guardar/cargar contexto Objeto tipo hilo: Sistemas Operativos II (II-UJI)
72
Procesos en Windows NT/2000
Objeto tipo hilo (cont.): Atributo Descripción ID hilo Valor único que identifica al hilo Contexto Valores de los registros y de otros datos que definen su estado de ejecución Prioridad dinámica Prioridad de ejecución en ese instante Prioridad base Límite inferior de la prioridad dinámica Afinidad del procesador Procesadores en los que se puede ejecutar Tiempo de ejecución Tiempo de ejecución transcurrido en modo usuario y en modo supervisor Puerto de terminación Canal de comunicación al que enviar un mensaje cuando finaliza Estado de finalización Motivo de la finalización del subproceso Sistemas Operativos II (II-UJI)
73
Procesos en Windows NT/2000
Diagrama de transición entre estados (de un hilo): Inicializado Finalizado Ejecución Bloqueado Alerta Listo Evento Expulsar Reinicializar Finalización A CPU Esperar evento Planificador Sistemas Operativos II (II-UJI)
74
Procesos en Windows NT/2000
Algunos estados de un hilo: Alerta: Seleccionado como el siguiente hilo a ser ejecutado en un procesador dado Operación (planificación) previa a la invocación de un cambio de contexto Bloqueado: Espera a que un objeto de sincronización pase a una situación de marcado ("signaled") que indique la llegada del evento de espera Sistemas Operativos II (II-UJI)
75
Procesos en Windows NT/2000
Implementación de procesos e hilos en Windows NT/2000: O b j e t o p r c s d a D i ó n l v u m S x F h y z T . Sistemas Operativos II (II-UJI)
76
Sistemas Operativos II (II-UJI)
Ejercicios Ejercicio 1: Realizar un algoritmo o programa en el que, dado el número de identificación de un proceso, se obtenga el número de hijos que tiene dicho proceso y sus correspondientes números de identificación. Indicar que veremos en prácticas esas llamadas. Sistemas Operativos II (II-UJI)
77
Sistemas Operativos II (II-UJI)
Ejercicios Ejercicio 1 (solución): Solución I: void muetra_hijos (int pidPadre); {struct task_struct *p; int n_hijos=0; p=&init_task->next_task; while ((p->pid!=pidPadre) && (p!=&init_task)) p=p->next_task; if (p==&init_task) return (-1); if (p=p->cptr!=NULL) do printf (“%d \n”,p-> pid); n_hijos++1; while (p=p->p_osptr!=NULL); printf (“El proceso %d tiene %d hijos \n”,pidPadre,n_hijos); return (0); } Indicar que veremos en prácticas esas llamadas. Sistemas Operativos II (II-UJI)
78
Sistemas Operativos II (II-UJI)
Ejercicios Ejercicio 1 (solución): Solución II: void muetra_hijos (int pidPadre); {struct task_struct *p; int n_hijos=0; p=&init_task->next_task; while ((p->pid!=pidPadre) && (p!=&init_task)) p=p->next_task; if (p==&init_task) return (-1); for each_task (p) if (p->p_pptr->pid==pidPadre) {printf (“%d \n”,p->p_pptr->pid); n_hijos++1;} printf (“El proceso %d tiene %d hijos\n”,pidPadre,n_hijos); return (0); } Indicar que veremos en prácticas esas llamadas. Sistemas Operativos II (II-UJI)
79
Sistemas Operativos II (II-UJI)
Ejercicios Ejercicio 2: Desarrollar un algoritmo o un programa que genere una salida similar a la del comando pstree en el sistema operativo Linux. void pstree2 (); {struct task_struct *p; void pstree2_rec (struct task_struct *h); { hh=h->p_cptr; while (hh!=NULL) { printf (“Proc padre %d. Proc hijo %d\n”,h->pid,hh->pid); pstree2_rec (hh); hh=hh->p-osptr; } return (0); p=&init_task; pstree2_rec (p); Indicar que veremos en prácticas esas llamadas. Sistemas Operativos II (II-UJI)
80
Sistemas Operativos II (II-UJI)
Ejercicios Ejercicio 3: Desarrollar un algoritmo o un programa que calcule de la forma más eficaz posible el número de procesos huérfanos que hay en un sistema Linux en un instante dado. Indicar que veremos en prácticas esas llamadas. Sistemas Operativos II (II-UJI)
81
Sistemas Operativos II (II-UJI)
Ejercicios Ejercicio 4: Desarrollar un algoritmo o un programa en el que, dado el número de identificación de un proceso Linux, se muestre el proceso hijo preparado para ejecución (en estado listo) que lleva más tiempo ejecutándose, ya sea en modo usuario o supervisor. Indicar que veremos en prácticas esas llamadas. Sistemas Operativos II (II-UJI)
82
Sistemas Operativos II (II-UJI)
Imagen de memoria A Sistemas Operativos II (II-UJI)
83
Sistemas Operativos II (II-UJI)
Imagen de memoria A ¿Qué ocurre cuando el procesador está ocioso? Se ejecuta el proceso nulo ¿Qué hace el proceso nulo? Ejecuta un bucle infinito que no realiza ninguna operación útil En sistemas Unix suele tener PID=0 Sistemas Operativos II (II-UJI)
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.