Sie sind auf Seite 1von 99

Leccin 3

Procesos, hilos y planificacin


Grupo ARCOS Diseo de Sistemas Operativos Grado en Ingeniera Informtica Universidad Carlos III de Madrid

Objetivos
1. 2.

Conocimiento de los mtodos de gestin interna de recursos en un sistema operativo. Usar herramientas de monitorizacin, gestin y ajuste de sistemas operativos.

Alejandro Caldern Mateos

ARCOS @ UC3M

Lecturas recomendadas
Base
1.
1.

Recomendada
1.
1.

Carretero 2007:
Cap.3

Tanenbaum 2006(en):
Cap.2

2.
1.

Stallings 2005:
Parte dos. Procesos.

3.
1.

Silberschatz 2006:
Cap.2

Alejandro Caldern Mateos

ARCOS @ UC3M

ATENCIN!

Estas transparencias son un guin para la clase. Los libros dados en la bibliografa junto con lo explicado en clase representa el material de estudio para el temario de la asignatura.

Alejandro Caldern Mateos

ARCOS @ UC3M

Contenidos
1.
1.

Introduccin
Concepto de proceso e hilo

2. 3.
1. 2. 3.

Arquitectura de procesos e hilos (threads) Planificacin de procesos


Estados y cambio de contexto Colas de procesos Algoritmos de planificacin

4.

Creacin y terminacin
ARCOS @ UC3M

Alejandro Caldern Mateos

Contenidos
1.
1.

Introduccin
Concepto de proceso e hilo

2. 3.
1. 2. 3.

Arquitectura de procesos e hilos (threads) Planificacin de procesos


Estados y cambio de contexto Colas de procesos Algoritmos de planificacin

4.

Creacin y terminacin
ARCOS @ UC3M

Alejandro Caldern Mateos

Introduccin

Proceso

Concepto de proceso

Alejandro Caldern Mateos

ARCOS @ UC3M

Concepto de proceso
CPU

2 1 App 1

Memoria

Disco

Proceso
Programa en ejecucin Unidad de procesamiento gestionada por el S.O.

Alejandro Caldern Mateos

ARCOS @ UC3M

Introduccin
Concepto de proceso Modelo ofrecido

Proceso

Alejandro Caldern Mateos

ARCOS @ UC3M

Modelo ofrecido
CPU

Memoria

Disco

Procesos y recursos principales:


Zonas de memoria
Al menos: cdigo, datos y pila

Archivos abiertos Seales

10

Alejandro Caldern Mateos

ARCOS @ UC3M

App2

Modelo ofrecido
App 1 CPU App 2 App 3 Memoria

App1 App3

Multiprogramacin
Tener varias aplicaciones en memoria Si una aplicacin se bloquea por E/S, entonces se ejecuta mientras otra hasta que quede bloqueada
Cambio de contexto voluntario (C.C.V.)

Eficiencia en el uso del procesador Grado de multiprogramacin = nmero de aplicaciones en RAM


11
Alejandro Caldern Mateos

ARCOS @ UC3M

Modelo ofrecido
App 1 CPU App 2 App 3 Memoria

Proteccin / Comparticin
El espacio de direcciones privado por aplicacin, pero Posibilidad de comunicar datos entre dos aplicaciones
Paso de mensajes Comparticin de memoria

12

Alejandro Caldern Mateos

ARCOS @ UC3M

Modelo ofrecido
App 1 CPU App 2 App 3 Memoria
App1

App0

App2 App3

Jerarqua de procesos
Creacin de proceso
Como copia de otro proceso existente A partir del programa en disco Como proceso en el arranque

Grupo de procesos que comparten mismo tratamiento

13

Alejandro Caldern Mateos

ARCOS @ UC3M

Modelo ofrecido
App 1 CPU App 2 App 3 Memoria

App1

App2

App3

Multitarea
Cada proceso se ejecuta un quantum de tiempo (Ej.: 5 ms) y se rota el turno para ejecutar procesos no bloqueados
Cambio de contexto involuntario (C.C.I.)

Reparto del uso del procesador


Parece que todo se ejecuta a la vez

14

Alejandro Caldern Mateos

ARCOS @ UC3M

Modelo ofrecido
App 1 CPU App 2 App 3 Memoria

App1

App2

App3

Multiproceso
Se dispone de varios procesadores (multicore/multiprocesador) Adems del reparto de cada CPU (multitarea) hay paralelismo real entre varias tareas (tantas como procesadores)
Se suele usar planificador y estructuras de datos separadas por procesador con algn mecanismo de equilibrio de carga
15 ARCOS @ UC3M

Alejandro Caldern Mateos

Introduccin
Concepto de proceso Modelo ofrecido Implicaciones en S.O.

Proceso

kernel
16 ARCOS @ UC3M

Alejandro Caldern Mateos

Informacin principal asociada a un proceso


Estructuras de datos
Recursos:
Zonas de memoria:
Al menos:
cdigo, datos y pila

Planificador:
Estado de ejecucin Contexto
Informacin necesaria para guardar el estado del proceso y poder restaurar ms tarde para continuar la ejecucin. Principalmente: registros de la CPU

Ms:
Relacin de parentesco Conjuntos de procesos Procesos de una sesin Etc.

Zonas compartidas

Archivos abiertos Seales Cola de mensajes


de recepcin

Quantum restante Prioridad Afinidad


Evitar saltar de un core a otro core (continuar en el mismo)
Proceso

Locks y conditions

Funciones que las gestionan

17

Alejandro Caldern Mateos

ARCOS @ UC3M

Concepto de hilo (thread)


Un proceso puede tener mltiples flujos de ejecucin
thread: cada flujo de ejecucin de un proceso thread = hilo = proceso ligero

Aspectos de la relacin entre hilos de un proceso:


Threads de un mismo proceso comparten:
Mapa de memoria y regiones compartidas Otros recursos asociados al proceso
cdigo datos ficheros registros pila cdigo datos ficheros
regs. pila regs. pila

Cada thread tiene en propiedad:


Regiones de memoria especificas
thread stack

Contenido de los registros de la CPU


single-threaded multithreaded

18

Alejandro Caldern Mateos

ARCOS @ UC3M

Estrategias de implementacin
Thread de biblioteca
Implementado en una biblioteca de espacio de usuario para ofrecer la semntica a las aplicaciones
Usado cuando el sistema operativo no ofrece la abstraccin de hilo [I] Llamada bloqueante de un hilo bloquea todo el proceso [V] Gestin de hilo no implica al S.O.: ms ligeros, ms hilos, etc.

Thread de sistema
Disponible como abstraccin en el ncleo (espacio de kernel) y ofrecida la gestin a travs de un conjunto de llamadas al sistema
[I] Sobrecarga al sistema operativo la elevada creacin de hilos [V] Mayor paralelismo, si un hilo se bloquea otro puede continuar sin necesidad de un pesado cambio de contexto de proceso (cambio de contexto de un hilo es ms ligero)

19

Alejandro Caldern Mateos

ARCOS @ UC3M

Estrategias de implementacin:
resumen

(N-1)

(1-1)

(N-M)

20

Alejandro Caldern Mateos

ARCOS @ UC3M

Contenidos
1.
1.

Introduccin
Concepto de proceso e hilo

2. 3.
1. 2. 3.

Arquitectura de procesos e hilos (threads) Planificacin de procesos


Estados y cambio de contexto Colas de procesos Algoritmos de planificacin

4.

Creacin y terminacin
ARCOS @ UC3M

21

Alejandro Caldern Mateos

Informacin del proceso

App 1 Tabla de procesos

App 2 Tabla de procesos App 3 Tabla de memoria Tabla de E/S Tabla de ficheros Tablas del S.O. BCP (1) BCP (2) BCP (3)

Memoria fsica

22

Alejandro Caldern Mateos

ARCOS @ UC3M

Campos de una entrada (BCP) de la tabla de procesos


Gestin de proceso
Registros generales

Gestin de ficheros
Directorio raz Directorio de trabajo Descriptores de ficheros Identificador de usuario Identificador de grupo

Gestin de memoria
Puntero al segmento de cdigo Puntero al segmento de datos Puntero al segmento de pila

estado Id.

Contador de programa Registro de estado Puntero de pila Identificador del proceso Proceso padre Grupo de proceso Prioridad

Process Control Block (BCP)


Estructura de datos con la informacin necesaria para gestionar un proceso en particular Manifestacin de un proceso en el kernel

BCP

gestin

Parmetros del planificador Seales Instante inicio de ejecucin Tiempo de uso de CPU Tiempo hasta siguiente alarma

Thread Control Block (BCT)


Similar al BCP para cada hilo de un proceso

23

Alejandro Caldern Mateos

ARCOS @ UC3M

Informacin del proceso


La informacin de cada proceso est en el BCP Informacin fuera del BCP:
Por razones de eficiencia Para compartir informacin entre procesos
BCP (1) BCP (2) BCP (3) Tabla de procesos

Tabla de procesos Tabla de memora Tabla de E/S Tabla de ficheros

Ejemplos:
Tabla de pginas Tabla de punteros de posicin de ficheros
24 ARCOS @ UC3M

Alejandro Caldern Mateos

Informacin del proceso


Tabla de punteros de posicin de ficheros:
BCP 4 Tabla de ficheros 0 23 1 4563 2 56 3 4 4 678 BCP 7 BCP 23 Tabla de ficheros 0 23 1 4563 2 56 3 4 4 0 Tabla de ficheros 0 54 1 633 2 5368 3 33 4 2

fd

fd

fd

1 2 3 4

IDFF 24456 34512 28 34512

PP 0 2345 5566 10000

Describe la posicin de lectura/escritura de los ficheros abiertos La comparticin de estado del fichero entre procesos obliga a que sea externa al BCP El BCP contiene el ndice del elemento de la tabla que contiene la informacin del fichero abierto: el i-nodo y la posicin de lectura/escritura.
ARCOS @ UC3M

25

Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

Informacin del proceso


Linux
state (runability) stack scheduling info debugging support state (exit status) pid and tgid mm process hierarchy info pid hash table credentials fs files signal sighand task_struct (Process Descriptor)
26

stack + thread_info (low_level scheduling)

mm_struct (memory) fs_struct (directory name space) files_struct (Open Files)

tty_struct (communications) signal_struct (signals) sighand_struct (signal handers)

CS 6560 Operating System Design (clase 4: procesos)

Alejandro Caldern Mateos

ARCOS @ UC3M

Informacin del proceso


Windows 2000 Maneja diferentes estructuras:
En espacio de usuario
PEB (Process Environment Block): por proceso de usuario TEB (Thread Environment Block): por thread de usuario

En los subsistemas
CSRSS (Win32): por thread de usuario

En espacio del sistema


KPROCESS: por proceso EPROCESS: por proceso KTHREAD: por thread ETHREAD: por thread

27

Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Informacin del proceso


Windows 2000
KPROCESS EPROCESS

PEB

28

Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Informacin del hilo


Windows 2000
KTHREAD

ETHREAD

TEB

29

Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Informacin del proceso


minikernel

id estado contextoRegs pila siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja TipoBCP

contexto_t

void * TipoBCP *

void * TipoTablaDescFicheros

30

Alejandro Caldern Mateos

ARCOS @ UC3M

Contenidos
1.
1.

Introduccin
Concepto de proceso e hilo

2. 3.
1. 2. 3.

Arquitectura de procesos e hilos (threads) Planificacin de procesos


Estados y cambio de contexto Colas de procesos Algoritmos de planificacin

4.

Creacin y terminacin
ARCOS @ UC3M

31

Alejandro Caldern Mateos

Planificacin de procesos

32

Alejandro Caldern Mateos

ARCOS @ UC3M

Campos de una entrada (BCP) de la tabla de procesos


Gestin de proceso
Registros generales

Gestin de ficheros
Directorio raz Directorio de trabajo Descriptores de ficheros Identificador de usuario Identificador de grupo

Gestin de memoria
Puntero al segmento de cdigo Puntero al segmento de datos Puntero al segmento de pila

estado Id.

Contador de programa Registro de estado Puntero de pila Identificador del proceso Proceso padre Grupo de proceso Prioridad

Estados de un proceso:
En ejecucin: con CPU asignada Listo para ejecutar: No procesador disponible para l Bloqueado: Esperando un evento Suspendido y listo: Expulsado pero listo para ejecutar Suspendido y bloqueado: Expulsado y esperando evento

gestin
33

Parmetros del planificador Seales Instante inicio de ejecucin Tiempo de uso de CPU Tiempo hasta siguiente alarma

Alejandro Caldern Mateos

ARCOS @ UC3M

Estados de un proceso
Linux

Signal

Stopped

Signal

Creation

Termination

Ready

Scheduling

Executing

Zombie

End of input/output

Input/output

Suspend

34

Alejandro Caldern Mateos

ARCOS @ UC3M

Estados de un proceso
Windows 2000

35

Alejandro Caldern Mateos

ARCOS @ UC3M

Estados de un proceso
Minikernel

Running

finalizacin

creacin

Ready

fin E/S

Blocked

36

Alejandro Caldern Mateos

ARCOS @ UC3M

Campos de una entrada (BCP) de la tabla de procesos


Gestin de proceso
Registros generales

Gestin de ficheros
Directorio raz Directorio de trabajo Descriptores de ficheros Identificador de usuario Identificador de grupo

Gestin de memoria
Puntero al segmento de cdigo Puntero al segmento de datos Puntero al segmento de pila

estado Id.

Contador de programa Registro de estado Puntero de pila Identificador del proceso Proceso padre Grupo de proceso Prioridad

Contexto de un proceso:
Registros generales: PC, RE, etc. Registros especficos: Registros de coma flotante, etc. Referencias a recursos: puntero a cdigo, datos, etc.

gestin
37

Parmetros del planificador Seales Instante inicio de ejecucin Tiempo de uso de CPU Tiempo hasta siguiente alarma

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando listo sistema operativo proceso P1

38

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando salvar estado en el BCP0 listo sistema operativo proceso P1

39

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando salvar estado en el BCP0 bloqueado listo sistema operativo proceso P1

40

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando salvar estado en el BCP0 bloqueado cargar estado en el BCP1 ejecutando listo sistema operativo proceso P1

41

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando salvar estado en el BCP0 bloqueado cargar estado en el BCP1
interrupcin o llamada al sistema

sistema operativo

proceso P1

listo

ejecutando

listo

42

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando salvar estado en el BCP0 bloqueado cargar estado en el BCP1
interrupcin o llamada al sistema

sistema operativo

proceso P1

listo

ejecutando

listo

salvar estado en el BCP1

43

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando salvar estado en el BCP0 bloqueado cargar estado en el BCP1 ejecutando salvar estado en el BCP1 listo sistema operativo proceso P1

listo

cargar estado en el BCP0

44

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


proceso P0 ejecutando salvar estado en el BCP0 bloqueado cargar estado en el BCP1 ejecutando salvar estado en el BCP1 listo sistema operativo proceso P1

listo

cargar estado en el BCP0 ejecutando

bloqueado

45

Alejandro Caldern Mateos

ARCOS @ UC3M

Cambio de contexto entre procesos


Minikernel

minikernel/modulosCargables/modulo_disco.c

/* cambiar el proceso en ejecucin */ proceso = procesoActual; proceso->estado = BLOQUEADO; procesoActual = planificador(); while (procesoActual == NULL) { esperaInterrupcion(); procesoActual=planificador(); } procesoActual->estado = EJECUCION; /* saltar al otro proceso */ cambio_contexto(&(proceso->contextoRegs), &(procesoActual->contextoRegs));
salvar estado en BCP0

cargar estado en BCP1

46

Alejandro Caldern Mateos

ARCOS @ UC3M

Contenidos
1.
1.

Introduccin
Concepto de proceso e hilo

2. 3.
1. 2. 3.

Arquitectura de procesos e hilos (threads) Planificacin de procesos


Estados y cambio de contexto Colas de procesos Algoritmos de planificacin

4.

Creacin y terminacin
ARCOS @ UC3M

47

Alejandro Caldern Mateos

Diversas colas de procesos


Adems de la tabla de procesos, el kernel utiliza varias colas de procesos para la gestin de procesos. Las principales colas son:
Cola de listos: lista de procesos que residen en memoria y que estn esperando a ejecutar Cola de bloqueados por recurso: lista de procesos que residen en memoria y que esperan la finalizacin de una peticin de operacin en un recurso (Ej.: fin de E/S o desbloqueo en un cerrojo).

El kernel se encarga de migrar entre las diferentes colas cuando cambia el estado de un proceso por algn evento

48

Alejandro Caldern Mateos

ARCOS @ UC3M

Diversas colas de procesos


Adems de la tabla de procesos, el kernel utiliza varias colas de procesos para la gestin de procesos. Las principales colas son:
Cola de listos: lista de procesos que residen en memoria y que estn esperando a ejecutar Cola de bloqueados por recurso: lista de procesos que residen en memoria y que esperan la finalizacin de una peticin de operacin en un recurso (Ej.: fin de E/S o desbloqueo en un cerrojo).

El kernel se encarga de migrar entre las diferentes colas cuando cambia el estado de un proceso por algn evento
Un proceso solo puede estar en una cola (como mucho)
49
Alejandro Caldern Mateos

ARCOS @ UC3M

Diversas colas de procesos


BCP7 cola de listos cabeza cola registros BCP2 registros

BCP3 cola en disco cabeza cola registros

BCP1 registros

BCP5 registros

50

Alejandro Caldern Mateos

ARCOS @ UC3M

Implementacin de las colas de procesos

Proceso 0
Estado del proceso Registros

Proceso 1
Estado del proceso Registros Lmites de memoria Lista de ficheros abiertos ...

Proceso n
Estado del proceso Registros

Tabla de procesos

Lmites de memoria Lista de ficheros abiertos ...

Lmites de memoria Lista de ficheros abiertos ...

Cola de listos Cola de

cabeza cola cabeza cola

51

Alejandro Caldern Mateos

ARCOS @ UC3M

Colas de procesos: estructura de datos


minikernel
minikernel/include/nucleoBasico/ListaBCP_Planificador.h
id estado contextoRegs pila id estado contextoRegs pila siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja id estado contextoRegs pila

tablaProcesos[]

siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja

siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja

procesoActual

primero

listaListos

ultimo

listaBloqueadosPorX
primero

primero ultimo

listaDormidos

ultimo

52

Alejandro Caldern Mateos

ARCOS @ UC3M

Colas de procesos
minikernel
minikernel/include/nucleoBasico/ListaBCP_Planificador.h
id estado contextoRegs pila id estado contextoRegs pila siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja id estado contextoRegs pila

tablaProcesos[]

siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja

siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja

iniciarTablaProcesos() buscarBCPLibreTablaProcesos() procesoActual mostrarTablaProcesos(char*,int)


primero

listaListos

ultimo

listaBloqueadosPorX
primero

primero ultimo

listaDormidos

ultimo

53

Alejandro Caldern Mateos

ARCOS @ UC3M

Colas de procesos
minikernel
minikernel/include/nucleoBasico/ListaBCP_Planificador.h
id estado contextoRegs pila id estado contextoRegs pila id estado contextoRegs pila

tablaProcesos[]

inicializarListaBCP(TipoListaBCP *) siguiente siguiente infoMemoria infoMemoria infoMemoria primeroListaBCP(TipoListaBCP *) tablaDescFicheros tablaDescFicheros tablaDescFicheros eliminarPrimeroListaBCP(TipoListaBCP *) prioridad prioridad prioridad despertarEnTicks despertarEnTicks despertarEnTicks insertarUltimoListaBCP(TipoListaBCP *, TipoBCP*) rodaja rodaja rodaja mostrarListaBCP(TipoListaBCP *, char *, int)
siguiente

procesoActual

primero

listaListos

ultimo

listaBloqueadosPorX
primero

primero ultimo

listaDormidos

ultimo

54

Alejandro Caldern Mateos

ARCOS @ UC3M

Colas de procesos
minikernel
minikernel/include/nucleoBasico/ListaBCP_Planificador.h
id estado contextoRegs pila id estado contextoRegs pila siguiente infoMemoria tablaDescFicheros id estado contextoRegs pila

tablaProcesos[]

siguiente infoMemoria tablaDescFicheros

siguiente infoMemoria tablaDescFicheros prioridad despertarEnTicks rodaja

TipoBCP *planificador() prioridad prioridad despertarEnTicks despertarEnTicks insertarListaListos(TipoBCP *) rodaja rodaja mostrarListaListos(char *, int)
procesoActual

primero

listaListos

ultimo

listaBloqueadosPorX
primero

primero ultimo

listaDormidos

ultimo

55

Alejandro Caldern Mateos

ARCOS @ UC3M

Diversas colas de procesos


Adems de la tabla de procesos, el kernel utiliza varias colas de procesos para la gestin de procesos. Las principales colas son:
Cola de listos: lista de procesos que residen en memoria y que estn esperando a ejecutar Cola de bloqueados por recurso: lista de procesos que residen en memoria y que esperan la finalizacin de una peticin de operacin en un recurso (Ej.: fin de E/S o desbloqueo en un cerrojo).

El kernel se encarga de migrar entre las diferentes colas cuando cambia el estado de un proceso por algn evento
Un proceso solo puede estar en una cola (como mucho)
56
Alejandro Caldern Mateos

ARCOS @ UC3M

Gestin: llamada al sistema


Minikernel
minikernel/modulosCargables/modulo_teclado.c

int peticionCaracter_teclado(int descDispositivo, char *caracter, int operacion) { if (estaVacioBufferCaracteres(&(datosPropiosDispositivo->bufferCaracteres)) ) { /* si esta vaco bloquear el proceso y seleccionar otro */ proceso = procesoActual; insertarUltimoListaBCP (&(datosPropiosDispositivo->listaProcesosBloqueados),proceso); proceso->estado = BLOQUEADO; procesoActual = planificador(); while (procesoActual == NULL) { esperaInterrupcion(); procesoActual=planificador(); } /* saltar al otro proceso */ procesoActual->estado = EJECUCION; cambio_contexto(&(proceso->contextoRegs), &(procesoActual->contextoRegs)); }

57

Alejandro Caldern Mateos

ARCOS @ UC3M

Gestin: interrupcin software


Minikernel

minikernel/modulosCargables/modulo_teclado.c

void interrupcionSW_teclado(int descDispositivo) { TipoDatosPropiosDispositivo_teclado *datosPropiosDispositivo; TipoBCP *proceso; /* obtener datos propios del dispositivo */ datosPropiosDispositivo = (TipoDatosPropiosDispositivo_teclado *) tablaDispositivos[descDispositivo].datosPropiosDispositivo; /* recorrer la lista de procesos esperando y despertar al primero */ proceso = primeroListaBCP (&(datosPropiosDispositivo->listaProcesosBloqueados)); if (proceso != NULL) { eliminarPrimeroListaBCP (&(datosPropiosDispositivo->listaProcesosBloqueados)); proceso->estado = LISTO; insertarListaListos (proceso); } }

58

Alejandro Caldern Mateos

ARCOS @ UC3M

Gestin: interrupcin software


Minikernel

minikernel/modulosCargables/modulo_teclado.c

void interrupcionSW_teclado(int descDispositivo) { TipoDatosPropiosDispositivo_teclado *datosPropiosDispositivo; TipoBCP *proceso; /* obtener datos propios del dispositivo */ datosPropiosDispositivo = (TipoDatosPropiosDispositivo_teclado *) tablaDispositivos[descDispositivo].datosPropiosDispositivo; /* recorrer la lista de procesos esperando y despertar al primero */ proceso = primeroListaBCP (&(datosPropiosDispositivo->listaProcesosBloqueados)); if (proceso != NULL) { eliminarPrimeroListaBCP (&(datosPropiosDispositivo->listaProcesosBloqueados)); proceso->estado = LISTO; insertarListaListos (proceso); } }

Un proceso solo puede estar en una cola (como mucho): [ok] eliminar + insertar [ko] insertar + eliminar
Alejandro Caldern Mateos

59

ARCOS @ UC3M

Contenidos
1.
1.

Introduccin
Concepto de proceso e hilo

2. 3.
1. 2. 3.

Arquitectura de procesos e hilos (threads) Planificacin de procesos


Estados y cambio de contexto Colas de procesos Algoritmos de planificacin

4.

Creacin y terminacin
ARCOS @ UC3M

60

Alejandro Caldern Mateos

Planificacin de procesos (a corto plazo)


Planificador: Selecciona el proceso a ser ejecutado entre los que estn listos para ejecutar Activador: Da control al proceso que el planificador ha seleccionado (cambio de contexto - restaurar)
BCP7 cabeza cola registros registros BCP2

Running

finalizacin

creacin

Ready

fin E/S

Blocked

Ready & Suspend

Blocked &

Suspend

61

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin de procesos
niveles de planificacin

finalizacin Running

A largo plazo
aadir procesos a ejecutar Invocado con baja frecuencia
puede ser algo lento

creacin Ready

fin E/S Blocked

A medio plazo
aadir procesos a RAM

Planificacin a corto plazo

A corto plazo
Ready & Blocked &

Suspend

Suspend

qu proceso tiene la UCP Invocado frecuentemente


rpido

Planificacin a medio plazo Planificacin a largo plazo

62

Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin de procesos
objetivos de los algoritmos de planificacin (segn sistema) Todos los sistemas:
Equitativo ofrece a cada proceso una parte equitativa de la CPU Expeditivo cumplimiento de la poltica emprendida de reparto Balanceado mantener todas las partes del sistema ocupadas

Sistemas batch:
Productividad maximizar el nmero de trabajos por hora Tiempo de espera minimizar el tiempo entre emisin y terminacin del trabajo Uso de CPU mantener la CPU ocupada todo el tiempo

Sistemas Interactivos:
Tiempo de respuesta responder a las peticiones lo ms rpido posible Ajustado satisfacer las expectaciones de los usuarios

Sistemas de tiempo real:


Cumplimiento de plazos evitar la prdida de datos Predecible evitar la degradacin de calidad en sistemas multimedia
63
Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin de procesos
caractersticas de los algoritmos de planificacin (1/3)

Preemption:
Sin expulsin:
El proceso conserva la CPU mientras desee. Cambios de contexto voluntarios (C.C.V.) [v/i] Un proceso puede bloquear al resto pero solucin fcil a la comparticin de recursos Windows 3.1, Windows 95 (16 bits), NetWare, MacOS 9.x.

Con expulsin:
Exige un reloj que interrumpe peridicamente:
cuando pasa el quantum de un proceso se cambia a otro

(Se aade) Cambios de contexto involuntarios (C.C.I.) [v/i] Mejora la interactividad pero precisa de mecanismos para condiciones de carrera AmigaOS (1985),Windows NT-XP-Vista-7, Linux, BSD, MacOS X

64

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin de procesos
caractersticas de los algoritmos de planificacin (2/3)

Clasificacin de elementos en las colas:


Por prioridad

Por tipo
CPU-bound (ms rachas burst de tiempo usando CPU) IO-bound (ms rachas de tiempo esperando E/S)

65

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin de procesos
caractersticas de los algoritmos de planificacin (3/3)

CPU-aware:
Afinidad:
Los procesos tienen afinidad (affinity) a una CPU: mejor volver a la misma CPU

Simetra:
Los procesos se ejecutan en la CPU que tienen unas capacidades especficas a dicha CPU

66

Alejandro Caldern Mateos

ARCOS @ UC3M

Principales algoritmos de planificacin (1/3)


Cclico o Round Robin:
Asignacin rotatoria del procesador
Se asigna un tiempo mximo de procesador (rodaja o quantum)
Grande: menos cambios de contexto Peor reactividad

Equitativo pero interactivo:


Mejor por UID que por proceso En Linux:
Aparicin reciente de un parche para el kernel que automticamente crea un grupo de tareas por TTY para mejorar la interactividad en sistemas cargados. Son 224 lneas de cdigo que modifican el planificador del kernel que en las primeras pruebas muestra que la latencia media cae a una 60 veces (1/60).

Uso en sistemas de tiempo compartido


67
http://www.phoronix.com/scan.php?page=article&item=linux_2637_video&num=1

Alejandro Caldern Mateos

ARCOS @ UC3M

Principales algoritmos de planificacin (2/3)


Por prioridad:
Asignacin a procesos ms prioritarios el procesador
Se puede combinar con cclica. Ejemplo con tres clases de prioridad
Prioridad 3 Prioridad 2 Prioridad 1

Caractersticas:
Uso de prioridades fijas: problema de inanicin No fijas: uso de algn algoritmo de envejecimiento

Uso en sistemas de tiempo compartido con aspectos de tiempo real

68

Alejandro Caldern Mateos

ARCOS @ UC3M

Principales algoritmos de planificacin (3/3)


Primero el trabajo ms corto:
Dado un conjunto de trabajo del que se sabe la duracin total de la ejecucin de cada uno de ellos, se ordenan de la menor a la mayor duracin. Caractersticas:
[v] Produce el menor tiempo de respuesta (medio) [i] Penaliza los trabajos largos.

Uso en sistemas batch.

FIFO:
Ejecucin por el estricto orden de llegada. Caractersticas:
[v] Simple de implantar. [i] Penaliza los trabajos prioritarios.

Uso en sistemas batch.


69 ARCOS @ UC3M

Alejandro Caldern Mateos

Poltica vs mecanismo
Separacin de lo qu se puede hacer de cmo se puede hacer
Normalmente, un proceso conoce cul es el hilo ms prioritario, el que ms E/S necesitar, etc.

Uso de algoritmos de planificacin parametrizados


Mecanismo en el kernel

Parmetros rellenados por los procesos de usuarios


Poltica establecida por los procesos de usuario

70

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin FIFO
minikernel
minikernel/nucleoBasico/ListaBCP_Planificador.c

/* * Funcin de planificacin que implementa un algoritmo FIFO. */ TipoBCP * planificador() { TipoBCP * procesoAux; /*obtener el primero proceso listo */ procesoAux = primeroListaBCP(&listaListos) ; if (NULL != procesoAux) { eliminarPrimeroListaBCP(&listaListos) ; } return (procesoAux); }

71

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin RR
minikernel (1/3)
minikernel/nucleoBasico/ListaBCP_Planificador.c

/* * Funcin de planificacin que implementa un algoritmo FIFO. */ TipoBCP * planificador () { TipoBCP * procesoAux; /*obtener el primero proceso listo */ procesoAux = primeroListaBCP(&listaListos) ; if (NULL != procesoAux) { eliminarPrimeroListaBCP(&listaListos) ; } return (procesoAux); }

72

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin RR
minikernel (2/3)
minikernel/nucleoBasico/Interrupciones_Excepciones.c

/* * Manejador de interrupciones de reloj */ void interrupcionReloj () { /* actualizar los ticks de reloj */ ticks = ticks + 1; // parte a realizar en la prctica: comprobar dormidos insertarUltimaTareaPend(&listaTareasPend, planificarRodaja, NULL); /* activar las interrupciones software pendientes */ activar_int_SW(); }

73

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin RR
minikernel (2/3)
minikernel/nucleoBasico/Interrupciones_Excepciones.c

/* * Manejador de interrupciones de reloj */ void interrupcionReloj () { /* actualizar los ticks de reloj */ ticks = ticks + 1; // parte a realizar en la prctica: comprobar dormidos insertarUltimaTareaPend(&listaTareasPend, planificarRodaja, NULL); /* activar las interrupciones software pendientes */ activar_int_SW(); }

74

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin RR
minikernel (3/3)
minikernel/nucleoBasico/Interrupciones_Excepciones.c

/* * Interrupcin software generada por la Int. de reloj */ void planificarRodaja (void *datos) { <actualizar la rodaja de tiempo del proceso actual> if ( <fin rodaja del proceso actual> ) { <insertar el BCP del proceso actual en la lista de listos> <pedir al planificador un nuevo proceso actual> <realizar el cambio de contexto (activador)> } }

75

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin multipoltica
Linux y Windows

Windows 2000

Linux

Prioridades de RT 16 niveles de RT 31-16

1-99

15-1 15 niveles variables

Prioridades procs. convencionales variables

1 nivel del sistema

76

Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin: estructuras de datos


Windows 2000 Dispatcher database:
base de datos de hilos esperando para ejecutar y a qu proceso pertenecen

Dispatcher ready queue


Una cola por nivel de prioridad

Ready summary
Un bit por nivel Si biti =1 un hilo en ese nivel Aumenta velocidad de bsqueda

Idle summary
Un bit por procesador Si bit =1 procesador libre
77
Inside Microsoft Windows 2000 (Microsoft Programming Series)

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin: escenarios (1/3)


Windows 2000 Cambio de contexto voluntario:
Entra en el estado de espera por algn objeto:
evento, mutex, semforo, operacin de E/S, etc.

Al terminar pasa al final de la cola de listos + temporary priority boost. Rodaja de T: se mantiene

78

Inside Microsoft Windows 2000 (Microsoft Programming Series)

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin: escenarios (2/3)


Windows 2000 Expulsin:
Un hilo T de menor prioridad es expulsado cuando otro de mayor prioridad se vuelve listo para ejecutar T se pone a la cabeza de la cola de su prioridad Rodaja de T: si RT entonces se reinicia en caso contrario se mantiene

79

Inside Microsoft Windows 2000 (Microsoft Programming Series)

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin: escenarios (3/3)


Windows 2000 Fin de rodaja:
Un hilo T agota su rodaja de tiempo (quantum) Acciones del planificador:
Reducir la prioridad de T -> otro hilo pasa a ejecutar No reducir la prioridad -> T pasa al ltimo de la cola de su nivel (si vaca, vuelve de nuevo)

Rodaja de T: se reinicia

80

Inside Microsoft Windows 2000 (Microsoft Programming Series)

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin: aumento de prioridad


Windows 2000 Priority boost:
Se aumenta la prioridad en ciertas ocasiones (solo en los niveles 0-15):
Cuando se completa una operacin de E/S Al salir del estado de una operacin wait Cuando el hilo lleva mucho tiempo en la cola de listo sin ejecutar:
El hilo de kernel balance set manager aumenta la prioridad por envejecimiento Muestrea 1 vez por segundo la cola de listos y si T.estado=READY ms de 300 ticks (~3 4 segundos) entonces T.prioridad<-15 T.rodaja <- 2*rodaja_normal

81

Inside Microsoft Windows 2000 (Microsoft Programming Series)

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin: estructura de datos


Linux

Kernel/sched.c
runqueue

140

active

Cada procesador tiene su propio runqueue Cada runqueue tiene dos vectores de prioridad:
Activo y Expirado

expired

CPU #0

140

Cada vector de prioridad tiene 140 listas:

Una por nivel de prioridad Incluye 100 niveles de tiempo real

82

CS 6560 Operating System Design (clase 4)

Alejandro Caldern Mateos

ARCOS @ UC3M

Planificacin: gestin
Linux El planificador elige los procesos de la lista de activos de acuerdo a su prioridad
140

runqueue

Cuando expira la rodaja de un proceso, lo mueve a la lista de Expirado


Se recalcula prioridad y rodaja

active

expired

CPU #0

140

Cuando la lista de activos est vaca, el planificador intercambia las listas de activo y expirados Si un proceso es suficientemente interactivo permanecer en la lista de activos
CS 6560 Operating System Design (clase 4)

83

Alejandro Caldern Mateos

ARCOS @ UC3M

Contenidos
1.
1.

Introduccin
Concepto de proceso e hilo

2. 3.
1. 2. 3.

Arquitectura de procesos e hilos (threads) Planificacin de procesos


Estados y cambio de contexto Colas de procesos Algoritmos de planificacin

4.

Creacin y terminacin
ARCOS @ UC3M

84

Alejandro Caldern Mateos

Creacin y terminacin

85

Alejandro Caldern Mateos

ARCOS @ UC3M

Campos de una entrada (BCP) de la tabla de procesos


Gestin de proceso
Registros generales

Gestin de ficheros
Directorio raz Directorio de trabajo Descriptores de ficheros Identificador de usuario Identificador de grupo

Gestin de memoria
Puntero al segmento de cdigo Puntero al segmento de datos Puntero al segmento de pila

estado Id.

Contador de programa Registro de estado Puntero de pila Identificador del proceso Proceso padre Grupo de proceso Prioridad

Process Identification (PID)


Identificador de cara a los usuarios Nmero positivo de 16 bits (32767) dinmicamente asignado, reusado no de forma inmediata

gestin

Parmetros del planificador Seales Instante inicio de ejecucin Tiempo de uso de CPU Tiempo hasta siguiente alarma

Address of process descriptor (APD)


Identificacin dentro del kernel Existe mecanismo PID -> APD (Ej.: hash)

86

Alejandro Caldern Mateos

ARCOS @ UC3M

Creacin de procesos

Un proceso se crea:
Durante el arranque del sistema
Hilos del kernel + primer proceso (Ej.: init, swapper, etc.)

Cuando un proceso existe hace una llamada al sistema para crear otro:
Cuando el sistema operativo comienza un nuevo trabajo Cuando un usuario arranca un nuevo programa Cuando durante la ejecucin de un programa se necesite

87

CS 6560 Operating System Design (clase 4: procesos)

Alejandro Caldern Mateos

ARCOS @ UC3M

Finalizacin de procesos

Un proceso termina:
De forma voluntaria:
Finalizacin normal Finalizacin con error

De forma involuntaria:
Finalizado por el sistema (Ej.: excepcin, sin recursos necesarios) Finalizado por otro proceso (Ej.: a travs de llamada al sistema) Finalizado por el usuario (Ej.: control-c por teclado)
En Unix/Linux se usan seales como mecanismo Se pueden capturar y tratar (salvo SIGKILL) para evitar finalizar involuntariamente

88

CS 6560 Operating System Design (clase 4: procesos)

Alejandro Caldern Mateos

ARCOS @ UC3M

Creacin de procesos
operaciones tpicas para modelo convencional Buscar entrada libre en tabla de procesos Leer fichero ejecutable Crear mapa de memoria a partir del ejecutable Crear pila inicial de usuario con el entorno del proceso Crear pila del ncleo
Con direccin del punto de arranque del programa Proceso comienza en rutina en modo ncleo haciendo RETI

Crear contexto inicial en BCP:


Fijar valores iniciales de los registros:
PC inicial=direccin de cdigo de SO que contiene RETI

Estado = LISTO Incluir BCP en cola de listos


89
Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Finalizacin de procesos
operaciones tpicas para modelo convencional

Finalizacin de hilos Limpieza de temporizadores y seales pendientes Cierre de todos los ficheros abiertos Liberacin de semforos y cerrojos activos Liberacin de memoria
Liberacin de zonas de memoria Liberacin de tablas de pginas

Guardar la informacin del estado de finalizacin por si el padre desea saberlo.

90

Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Creacin y terminacin de procesos


Llamadas al sistema Linux
fork() wait()
padre

exec()

exit()
hijo

Windows
CreateProcess() GetExitCodeProcess() padre ExitProcess() hijo 91
Sistemas operativos: una visin aplicada

Alejandro Caldern Mateos

ARCOS @ UC3M

Creacin de procesos
Windows: CreateProcess

crea EPROCESS crea esp. M inicial proc. crea KPROCESS crea PEB

crea pila thread crea contexto thread crea thread y queda suspendido

activa el primer thread del


Kernel32.dll: mensaje a Win32: manejadores; flags; PID padre proceso [IW2K: 315]: 12 pasos construye: contexto y pila inicial del thread: -IRQL APC -- encola APC: loader, heap manager, etc --baja a IRQL 0: hace APC --... -- se pone en modo U

thread inicial: comienza ejecucin en contexto nuevo proceso

92

http://flylib.com/books/en/4.491.1.52/1/

Alejandro Caldern Mateos

ARCOS @ UC3M

Creacin de procesos
Linux: fork + exec
fork:
Obtener entrada libre en Tabla de Procesos Copiar PCB del padre Clona al proceso padre y da una nueva identidad al hijo Duplicar mapa de M del padre (incluyendo pilas) Estado listo Otras actualizaciones: p.ej., limpiar seales, eventos y mensajes pendientes

PCB en cola de listos

Devuelve PID al padre


93

Devuelve 0 al hijo
ARCOS @ UC3M

Alejandro Caldern Mateos

Creacin de procesos
Linux: fork + exec
exec:
Liberar imagen de M del proceso Leer ejecutable Cambia la imagen de memoria de un proceso usando como recipiente uno previo Crear nueva imagen M BCP Cargar secciones .texto y .datos Crear pila inicial U Crear pila S: dir. principio programa Inicio BCP: regs.; dir SO: RETI
94

Otras acciones: gestin de seales, SETUID, etc

PC

Alejandro Caldern Mateos

ARCOS @ UC3M

Terminacin de procesos
Linux: exit
exit:
Finaliza todos los hilos menos uno Limpia operaciones asncronas, temporizadores y seales pendientes Termina la ejecucin de un proceso y libera los recursos Cierra todos los descriptores de archivo Libera semforos y cerrojos activos Reasigna hurfanos a init Estado proceso <- zombie Trata de enviar seal SIGCLD al padre:

si responde: freeproc(): libera P y M


95

NO responde: mantener seal


ARCOS @ UC3M

Alejandro Caldern Mateos

Creacin de procesos
minikernel
minikernel/nucleoBasico/LlamadasSistema.c

int crearTarea(char *programa) { void * imagen, *pc_inicial; int error=0; int numProceso; TipoBCP *proceso; numProceso = buscarBCPLibreTablaProcesos(); if (-1 == numProceso) /* no hay entrada libre */ return -1; proceso=&(tablaProcesos[numProceso]); /* crea la imagen de memoria leyendo ejecutable */ imagen = crear_imagen(programa, &pc_inicial); if (!imagen) /* fallo al crear imagen */ return -1; /* asignar imagen de memoria */ proceso->infoMemoria = imagen; proceso->pila = crear_pila(TAM_PILA);
96 ARCOS @ UC3M

Alejandro Caldern Mateos

Creacin de procesos
minikernel
minikernel/nucleoBasico/LlamadasSistema.c

/* crear estado inicial de los registros del procesador */ fijar_contexto_ini(proceso->infoMemoria, proceso->pila, TAM_PILA, pc_inicial, &(proceso->contextoRegs)); /* copiar tabla de descriptores de ficheros del padre */ inicializarTablaDescFicheros(proceso->tablaDescFicheros); if (NULL != procesoActual) memcpy(proceso->tablaDescFicheros, procesoActual->tablaDescFicheros, MAX_TABLA_DESCFICHEROS * sizeof(TipoDescFichero) ); /* asignar los valores iniciales */ proceso->id = numProceso; /* id. de proceso */ proceso->estado = LISTO; proceso->rodaja = TICKS_POR_RODAJA; /* lo inserta al final de cola de listos */ insertarListaListos(proceso); return 0; }
97 ARCOS @ UC3M

Alejandro Caldern Mateos

Terminacin de procesos
minikernel
minikernel/nucleoBasico/LlamadasSistema.c

void liberarProceso() { TipoBCP * procesoAnterior; /* Preparar un cambio de contexto */ procesoAnterior = procesoActual; procesoActual = planificador(); while (procesoActual == NULL) { esperaInterrupcion(); procesoActual = planificador(); } /* Liberar recursos */ liberar_imagen(procesoActual->infoMemoria); liberar_pila(procesoAnterior->pila); procesoActual->estado=TERMINADO; cambio_contexto(NULL, &(procesoActual->contextoRegs)); return; /* no debera llegar aqu */ }

98

Alejandro Caldern Mateos

ARCOS @ UC3M

Leccin 3
Procesos, hilos y planificacin
Grupo ARCOS Diseo de Sistemas Operativos Grado en Ingeniera Informtica Universidad Carlos III de Madrid

Das könnte Ihnen auch gefallen