Sistemas Operativos
2008
Kilian Perdomo Curbelo Airam Rodríguez Quintana
1
Introducción. Conceptos básicos
• Proceso y programa. ¿En qué se diferencian? • E t d de un proceso Estados d • Estructura Task_Struct
• Cambio de contexto
• Planificación de procesos • Funciones del planificador
2
Proceso y programa. ¿En qué se diferencian?
• Programa: es una colección deinstrucciones que el procesador interpreta y ejecuta. Los programas se almacenan de modo permanente en memoria secundaria Un módulo cargador secundaria. los mueve a memoria principal para poder ser ejecutados. • Proceso: es un programa en ejecución. Como consecuencia de ello, el sistema operativo le va a asignar recursos como memoria, dispositivos, archivos, cpu, etc. Tiene su propio contador deprograma. • Es el SO el encargado de lanzar el programa y convertirlo en proceso
3
Estados de un proceso en Linux p
167 #define TASK_RUNNING 0 //En ejecución o listo para ejecutarse
168 #define TASK_INTERRUPTIBLE 1 /*Esperando por algún evento: interrupción hardware liberación de un recurso por el que espera que llegue hardware, espera, una señal, etc... Si esto ocurre pasa aTASK_RUNNING*/ p p g 169 #define TASK_UNINTERRUPTIBLE 2 /*Esperando por algún evento. A diferencia de TASK_INTERRUPTIBLE, no puede ser interrumpido por ninguna señal.*/ 170 #define TASK_STOPPED 4 /*Proceso detenido tras recibir alguna señal: SIGTSTP, SIGSTOP, SIGTTIN, SIGTTOU. Reanuda su ejecución cuando recibe la seña SIGCOUNT*/ 171 #define TASK_TRACED 8 /*El proceso se está depurando mediante la funciónptrace()*/
4
Estados de un proceso en Linux p
173 #define EXIT_ZOMBIE 16 /*El proceso ha finalizado, pero se EXIT ZOMBIE finalizado mantiene su estructura task_struct hasta que su padre haga un wait()*/ 174 #define EXIT_DEAD 32 /*El proceso ha finalizado, y su padre ha hecho wait(). Se libera la estructura del proceso.*/ 176 #define TASK_NONINTERACTIVE 64 /*Previene cualquier cambio sobresleep_avg(calcular prioridad). Asume que todos los procesos en este estado no son interactivos / interactivos*/ 177 #define TASK_DEAD 128 /*El proceso ha sido finalizado mediante do_exit(), poniendo la memoria ocupada por el proceso a do exit() NULL. Este es el estado previo a EXIT_ZOMBIE.*/
5
Diagrama de un proceso en Linux g p
Esperando por E d SIGCOUNT Esperando por E d ptrace()
stoppeduninterruptible
traced
esperando por e/s, señal, ...
Creación running
interruptible
do_exit( ) d it(
zombie bi
Esperando por wait. wait
dead d d
Esperando a ser eliminado de la tabla.
6
Estructura task_struct. Descriptor de proceso
• Identificando un proceso • Listas de procesos • Listas de procesos en estado Task_Running • Relaciones entre los procesos • Campospara expresar la relación de paternidad • Actualización del estado de un proceso • Otros campos de la estructura
7
Introducción a la estructura task_struct
• Cada proceso del sistema en Linux tiene una estructura del tipo task_struct asociada. • En ella se almacena toda la información relacionada con el proceso: aspectos de planificación, identificadores, relación con otros procesos,memoria utilizada por el proceso, archivos abiertos, etc.
8
Identificando un proceso
• Cada tarea ha de poder planificarse independientemente, por lo que ha de tener su propio descriptor de proceso (task_struct). (task struct). Cada proceso se puede identificar desde el kernel como un puntero a su task struct task_struct. Desde el punto de vista del usuario, el identificador del proceso seráel PID que es un campo de la estructura PID, estructura.
855 pid_t pid; 856 pid_t t id id t tgid; //Identificador del proceso //Id tifi d del líder cuando se usan hilos //Identificador d l líd d hil
•
•
9
Listas de procesos
Las estructuras task struct que describen a los procesos están task_struct procesos, enlazadas mediante los campos “tasks”, formando una lista circular...
Regístrate para leer el documento completo.