diseño de sistemas operativos, procesos, hilos y planificación (v2b)

125
Lección 3 Procesos, hilos y planificación Diseño de Sistemas Operativos Grado en Ingeniería Informática Grupo ARCOS Universidad Carlos III de Madrid

Upload: alejandro-calderon-mateos

Post on 15-Apr-2017

64 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Lección 3Procesos, hilos y planificación

Diseño de Sistemas Operativos

Grado en Ingeniería Informática

Grupo ARCOS

Universidad Carlos III de Madrid

Page 2: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Lecturas recomendadas

ARCOS @ UC3M2

1. Carretero 2007:

1. Cap.3

1. Tanenbaum 2006(en):

1. Cap.2

2. Stallings 2005:

1. Parte dos. Procesos.

3. Silberschatz 2006:

1. Cap.2

BaseBase RecomendadaRecomendada

Page 3: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

A recordar…

ARCOS @ UC3M3

1. Estudiar la teoría asociada.

Estudiar el material asociado a la bibliografía: las transparencias solo no son suficiente.

Crear cuestiones con sus respuestas y justificación.

2. Repasar lo visto en clase.

Realizar el cuaderno de prácticas progresivamente.

3. Ejercitar las competencias.

Realizar las prácticas progresivamente.

Realizar todos los ejercicios posibles.

1. Estudiar la teoría asociada.

Estudiar el material asociado a la bibliografía: las transparencias solo no son suficiente.

Crear cuestiones con sus respuestas y justificación.

2. Repasar lo visto en clase.

Realizar el cuaderno de prácticas progresivamente.

3. Ejercitar las competencias.

Realizar las prácticas progresivamente.

Realizar todos los ejercicios posibles.

Page 4: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Contenidos

ARCOS @ UC3M4

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en el sistema operativo

Aspectos de diseño e implementación

Estructuras de datos

Multiprogramación

Multitarea

Planificador

Llamadas al sistema

Page 5: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Contenidos

ARCOS @ UC3M5

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en el sistema operativo

Aspectos de diseño e implementación

Estructuras de datos

Multiprogramación

Multitarea

Planificador

Llamadas al sistema

Page 6: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en S.O.

ARCOS @ UC3M6

Proceso

kernel

Page 7: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Introducción

Concepto de proceso

ARCOS @ UC3M7

Proceso

Page 8: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Concepto de proceso

Proceso

Programa en ejecución

Unidad de procesamiento gestionada por el S.O.

ARCOS @ UC3M8

12

Disco

CPU

Memoria

App 1

Page 9: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Hilo (thread): Concepto

ARCOS @ UC3M9

Un proceso puede tener múltiples flujos de ejecución

thread: cada flujo de ejecución de un proceso

thread = hilo = proceso ligero

Aspectos de la relación entre hilos de un proceso:

Threads de un mismo proceso comparten:

Mapa de memoria y regiones compartidas

Otros recursos asociados al proceso

Cada thread tiene en propiedad:

Regiones de memoria especificas

thread stack

Contenido de los registros de la CPU

código

datos

ficheros

registros

pila

código

datos

ficheros

regs.

pila

regs.

pila

multithreadedsingle-threaded

Page 10: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Hilo (thread): Estrategias de implementación

ARCOS @ UC3M10

Thread de biblioteca

Implementado en una biblioteca de espacio de usuario

para ofrecer la semántica a las aplicaciones

Usado cuando el sistema operativo no ofrece la abstracción de hilo

[I] Llamada bloqueante de un hilo bloquea todo el proceso

[V] Gestión de hilo no implica al S.O.: más ligeros, más hilos, etc.

Thread de sistema

Disponible como abstracción en el núcleo (espacio de kernel) y

ofrecida la gestión a través de un conjunto de llamadas al sistema

[I] Sobrecarga al sistema operativo la elevada creación 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 más ligero)

Page 11: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Hilo (thread): Estrategias de implementación (2)

ARCOS @ UC3M11

(a) Nivel de usuario puro (N-1) (b) Nivel de núcleo puro (1-1) (c) Combinado (N-M)

Hilo a nivel de núcleo ProcesoPHilo a nivel de usuario

PPP

P

Hilos de biblioteca

Biblioteca de hilos

Espaciode usuario

Espaciode núcleo

Espaciode usuario

Espaciode núcleo

Espaciode usuario

Espaciode núcleo

Page 12: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Introducción

Concepto de proceso

Modelo ofrecido

ARCOS @ UC3M12

Proceso

Page 13: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Modelo ofrecido

Recursos asociados

Zonas de memoria

Al menos: código, datos y pila

Archivos abiertos

Señales

ARCOS @ UC3M13

Disco

CPU

Memoria

Page 14: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Modelo ofrecido

Multiprogramación

Tener varias aplicaciones en memoria

Si una aplicación 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 multiprogramación = número de aplicaciones en RAM

ARCOS @ UC3M14

CPU

Memoria

App 1

App 2

App 3

App1

App2

App3

Page 15: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Modelo ofrecido

Protección / Compartición

El espacio de direcciones privado por aplicación, pero

Posibilidad de comunicar datos entre dos aplicaciones

Paso de mensajes

Compartición de memoria

ARCOS @ UC3M15

CPU

Memoria

App 1

App 2

App 3

Page 16: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Modelo ofrecido

Jerarquía de procesos

Creación 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

ARCOS @ UC3M16

CPU

Memoria

App 1

App 2

App 3App1 App2

App3

App0

Page 17: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Modelo ofrecido

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

ARCOS @ UC3M17

CPU

Memoria

App 1

App 2

App 3

App1 App2 App3

Page 18: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Modelo ofrecido

Multiproceso

Se dispone de varios procesadores (multicore/multiprocesador)

Además 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 algún mecanismo de equilibrio de carga

ARCOS @ UC3M18

Memoria

App 1

App 2

App 3

App1 App2 App3

CPU

Page 19: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en S.O.

ARCOS @ UC3M19

Proceso

kernel

Page 20: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

1. Estructuras de datos

ARCOS @ UC3M20

Zonas de memoria:

Al menos:

código, datos y pila

Zonas compartidas

Archivos abiertos

Señales

Cola de mensajes

de recepción

Locks y conditions …

De los

recu

rsos

uti

lizad

os

Estado de ejecución

Contexto

Información necesaria para guardar

el estado del proceso y poder restaurar

más tarde para continuar la ejecución.

Principalmente: registros de la CPU

Quantum restante

Prioridad

Afinidad

Evitar saltar de un core a otro core

(continuar en el mismo)

Par

a la

pla

nific

ació

n d

e la

CPU

Relación de parentesco

Conjuntos de procesos

Procesos de una sesión ...

Más

Page 21: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

1. Estructuras de datos

ARCOS @ UC3M21

kernel

Page 22: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

2. Funciones: de gestión internas

ARCOS @ UC3M22

kernel

Estados y

cambios de contexto

Colas de procesos

Planificación

Etc.

Page 23: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

2. Funciones: de servicio

ARCOS @ UC3M23

kernel

Creación de proceso

Destrucción de proceso

Cambio de imagen

Espera por el fin de otro proceso

Etc.

Estados y

cambios de contexto

Colas de procesos

Planificación

Etc.

Page 24: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo

2. Funciones: API de servicio

ARCOS @ UC3M24

kernel

Creación de proceso

Destrucción de proceso

Cambio de imagen

Espera por el fin de otro proceso

Etc.

Estados y

cambios de contexto

Colas de procesos

Planificación

Etc.

fork, exit, exec, wait, …

pthread_create, pthread…

Page 25: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Introducciónresumen

Concepto de proceso

Modelo ofrecido

Implicaciones en S.O.

ARCOS @ UC3M25

Proceso

kernel

Page 26: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Introducciónaspectos de diseño e implementación

Concepto de proceso

Modelo ofrecido

Implicaciones en S.O.

ARCOS @ UC3M26

Proceso

kernel

Análisis de requisitosAnálisis de requisitos

Diseño, implementación,

implantación y pruebas

Diseño, implementación,

implantación y pruebas

Page 27: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Introducciónaspectos de diseño e implementación

Concepto de proceso

Modelo ofrecido

Implicaciones en S.O.

ARCOS @ UC3M27

Análisis de requisitosAnálisis de requisitos

Diseño, implementación,

implantación y pruebas

Diseño, implementación,

implantación y pruebas

RequisitosInformación

(estructuras de datos)

Funciones

(internas, servicio y API)

Recursos

Multiprogramación

Comunicación

Multiproceso

Page 28: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Contenidos

ARCOS @ UC3M28

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en el sistema operativo

Aspectos de diseño e implementación

Estructuras de datos

Multiprogramación

Multitarea

Planificador

Llamadas al sistema

Page 29: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Información para cumplir con los requisitos…

ARCOS @ UC3M29

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos

• Zonas de memoria (código, datos y pila)

• Archivos abiertos

• Señales activas

• Diversas funciones internas

• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación

• Estado de ejecución

• Contexto: registros de CPU…

• Lista de procesos

• Int. hw/sw de dispositivos

• Planificador

• Crear/Destruir/Planificar proceso

o Protección /

Compartición

• Paso de mensajes

• Cola de mensajes de recepción

• Memoria compartida

• Zonas, locks y conditions

• Envío/Recepción mensaje y gestión

de la cola de mensaje

• API concurrencia y gestión de

estructuras de datos

o Jerarquía de

procesos

• Relación de parentesco

• Conjuntos de procesos relacionados

• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso

• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante

• Prioridad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Page 30: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Información en el sistema operativo

ARCOS @ UC3M30

Memoria física

App 1

App 2

App 3

Tabla de procesos

Tabla de memoria

Tabla de E/S

Tabla de ficheros

Tablas del S.O.

Page 31: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Información para un proceso

ARCOS @ UC3M31

Memoria física

App 1

App 2

App 3

Tabla de procesos

Tabla de memoria

Tabla de E/S

Tabla de ficheros

Tablas del S.O.

Tabla de procesos

BCP (1)

BCP (2)

BCP (3)

Page 32: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

BCP: entrada de la tabla de procesos

Gestión de proceso

Registros generales

Contador de programa

Registro de estado

Puntero de pila

Identificador del proceso

Proceso padre

Grupo de proceso

Prioridad

Parámetros del planificador

Señales

Instante inicio de ejecución

Tiempo de uso de CPU

Tiempo hasta siguiente alarma

ARCOS @ UC3M32

esta

do

Id.

gest

ión

Process Control Block (PCB / BCP)

Estructura de datos con la información necesaria para

gestionar un proceso en particular

Manifestación de un proceso en el kernel

Thread Control Block (TCB / BCT)

Similar al BCP para cada hilo de un proceso

Process Control Block (PCB / BCP)

Estructura de datos con la información necesaria para

gestionar un proceso en particular

Manifestación de un proceso en el kernel

Thread Control Block (TCB / BCT)

Similar al BCP para cada hilo de un proceso

Tabla de procesos

BCP (1)

BCP (2)

BCP (3)

Page 33: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

BCP: entrada de la tabla de procesos

Gestión de proceso

Registros generales

Contador de programa

Registro de estado

Puntero de pila

Identificador del proceso

Proceso padre

Grupo de proceso

Prioridad

Parámetros del planificador

Señales

Instante inicio de ejecución

Tiempo de uso de CPU

Tiempo hasta siguiente alarma

ARCOS @ UC3M33

esta

do

Id.

gest

ión

Process Identification (PID)

Identificador de cara a los usuarios

Número positivo de 16 bits (32767)

dinámicamente asignado, reusado no de forma inmediata

Address of process descriptor (APD)

Identificación dentro del kernel

Existe mecanismo PID -> APD (Ej.: hash)

Process Identification (PID)

Identificador de cara a los usuarios

Número positivo de 16 bits (32767)

dinámicamente asignado, reusado no de forma inmediata

Address of process descriptor (APD)

Identificación dentro del kernel

Existe mecanismo PID -> APD (Ej.: hash)

Tabla de procesos

BCP (1)

BCP (2)

BCP (3)

Page 34: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Dónde: información del proceso

ARCOS @ UC3M34

Tabla de procesos

Tabla de memora

Tabla de E/S

Tabla de ficheros

Tabla de procesos

BCP (1)

BCP (2)

BCP (3)

La información de cada proceso está en el BCP…

Información fuera del BCP:

Por razones de eficiencia

Para compartir información entre procesos

La información de cada proceso está en el BCP…

Información fuera del BCP:

Por razones de eficiencia

Para compartir información entre procesos

Ejemplos:

Tabla de segmentos y páginas de memoria

Tabla de punteros de posición de ficheros

Lista de peticiones a dispositivos

Ejemplos:

Tabla de segmentos y páginas de memoria

Tabla de punteros de posición de ficheros

Lista de peticiones a dispositivos

Page 35: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Dónde: información del proceso

Tabla de punteros de

posición de ficheros:

Describe la posición de

lectura/escritura de los ficheros

abiertos

La compartición 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 información del

fichero abierto: el i-nodo y la

posición de lectura/escritura.

ARCOS @ UC3M35

Tabla deficheros

Tabla deficheros

Tabla deficheros

BCP 4 BCP 7 BCP 23

23 23

24456

IDFF PP

0

54

4563 4563

34512 2345

633

56 56

28 5566

5368

4 4

34512 10000

33

678 2

0 0 0

1 1

1

1

2 2

2

2

3 3

3

3

4 4

4

4

fd

0

fd fd

Sistemas operativos: una visión aplicada

Page 36: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Información del proceso

Gestión de proceso

Registros generales

Contador de programa

Registro de estado

Puntero de pila

Identificador del proceso

Proceso padre

Grupo de proceso

Prioridad

Parámetros del planificador

Señales

Instante inicio de ejecución

Tiempo de uso de CPU

Tiempo hasta siguiente alarma

ARCOS @ UC3M36

Gestión de memoria

Puntero al segmento de código

Puntero al segmento de datos

Puntero al segmento de pila

Gestión de ficheros

Directorio raíz

Directorio de trabajo

Descriptores de ficheros

Identificador de usuario

Identificador de grupo

esta

do

Id.

gest

ión

BCP

Page 37: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Información del procesoLinux

ARCOS @ UC3M37

task_struct (Process Descriptor)

tty_struct (communications)

signal_struct (signals)

fs_struct (directory name space)

files_struct (Open Files)

stack + thread_info (low_level scheduling)

mm_struct (memory)

sighand_struct (signal handers)

Understanding the Linux Kernel (O'Really)http://www.eecs.harvard.edu/~margo/cs161/videos/sched.h.html

process hierarchy info

state (runability)

stack

pid hash table

scheduling info

debugging support

state (exit status)

pid and tgid

mm

credentialsfs

filessignal

sighand

Page 38: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Contenidos

ARCOS @ UC3M38

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en el sistema operativo

Aspectos de diseño e implementación

Estructuras de datos

Multiprogramación

Multitarea

Planificador

Llamadas al sistema

Page 39: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación (datos y funciones)

ARCOS @ UC3M39

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos

• Zonas de memoria (código, datos y pila)

• Archivos abiertos

• Señales activas

• Diversas funciones internas

• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación

• Estado de ejecución

• Contexto: registros de CPU…

• Lista de procesos

• Int. hw/sw de dispositivos

• Planificador

• Crear/Destruir/Planificar proceso

o Protección /

Compartición

• Paso de mensajes

• Cola de mensajes de recepción

• Memoria compartida

• Zonas, locks y conditions

• Envío/Recepción mensaje y gestión

de la cola de mensaje

• API concurrencia y gestión de

estructuras de datos

o Jerarquía de

procesos

• Relación de parentesco

• Conjuntos de procesos relacionados

• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso

• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante

• Prioridad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Page 40: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación

ARCOS @ UC3M40

Tener varias aplicaciones en memoria

Si una aplicación se bloquea por E/S, entonces

se ejecuta otra (hasta que quede bloqueada)

Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

Page 41: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación (datos)Estados de un proceso (c.c.v.)

ARCOS @ UC3M41

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

Tener varias aplicaciones en memoria

Si una aplicación se bloquea por E/S, entonces

se ejecuta otra (hasta que quede bloqueada)

Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

BCP5

Page 42: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación (datos)Estados de un proceso (c.c.v.)

ARCOS @ UC3M42

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

En ejecución: 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

En ejecución: 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

BCP5

Page 43: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación (datos)Lista/Colas de procesos (c.c.v.)

ARCOS @ UC3M43

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

Tener varias aplicaciones en memoria

Si una aplicación se bloquea por E/S, entonces

se ejecuta otra (hasta que quede bloqueada)

Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

BCP1 BCP3 BCP4BCP7 BCP2

BCP5

Page 44: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación (datos)Lista/Colas de procesos (c.c.v.)

ARCOS @ UC3M44

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

BCP1 BCP3 BCP4BCP7 BCP2

BCP5

Cola de listos: procesos esperando a ejecutar en CPU

Cola de bloqueados por recurso: procesos a la espera de finalizar una petición bloqueante al recurso asociado

o Un proceso solo puede estar en una cola (como mucho)

Cola de listos: procesos esperando a ejecutar en CPU

Cola de bloqueados por recurso: procesos a la espera de finalizar una petición bloqueante al recurso asociado

o Un proceso solo puede estar en una cola (como mucho)

Page 45: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Implementación de las colas de procesos

ARCOS @ UC3M45

Estado del proceso

Límites de memoria

Lista de ficheros abiertos

Registros

. . .

Tabla de procesos

Proceso 0

Estado del proceso

Límites de memoria

Lista de ficheros abiertos

Registros

. . .

Estado del proceso

Límites de memoria

Lista de ficheros abiertos

Registros

. . .

Proceso 1 Proceso n

cola

cabezaCola de listos

cola

cabezaCola de …

Cola de listos: procesos esperando a ejecutar en CPU

Cola de bloqueados por recurso: procesos a la espera de finalizar una petición bloqueante al recurso asociado

o Un proceso solo puede estar en una cola (como mucho)

Cola de listos: procesos esperando a ejecutar en CPU

Cola de bloqueados por recurso: procesos a la espera de finalizar una petición bloqueante al recurso asociado

o Un proceso solo puede estar en una cola (como mucho)

Page 46: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación (datos)Contexto de un proceso

ARCOS @ UC3M46

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

Tener varias aplicaciones en memoria

Si una aplicación se bloquea por E/S, entonces

se ejecuta otra (hasta que quede bloqueada)

Cambio de contexto voluntario (C.C.V.)

Memoria

App 1

App 2

App 3

App1

App2

App3

BCP1 BCP3 BCP4BCP7 BCP2

Page 47: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación (datos)Contexto de un proceso

ARCOS @ UC3M47

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

BCP7 BCP2

Registros generales: PC, RE, etc.

Registros específicos: Registros de coma flotante, etc.

Referencias a recursos: puntero a código, datos, etc.

Registros generales: PC, RE, etc.

Registros específicos: Registros de coma flotante, etc.

Referencias a recursos: puntero a código, datos, etc.

BCP1 BCP3 BCP4

Page 48: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M48

proceso P0 proceso P1sistema operativo

listo

ejecutando

Page 49: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M49

proceso P0 proceso P1sistema operativo

listo

ejecutando

llamada bloqueante1

Page 50: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M50

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

Page 51: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M51

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

bloqueado

Page 52: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M52

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

cargar estado en el BCP1

bloqueado

ejecutando

Page 53: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M53

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

cargar estado en el BCP1

listo

bloqueado

interrupción2

ejecutando

Page 54: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M54

proceso P0 proceso P1sistema operativo

listo

ejecutando

salvar estado en el BCP0

cargar estado en el BCP1

listo

bloqueado

3 llamada bloqueante

(petición de lectura

a disco, esperar en

una pipe, etc.)

ejecutando

Page 55: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M55

proceso P0 proceso P1sistema operativo

listo

ejecutando

listo

salvar estado en el BCP0

cargar estado en el BCP1

salvar estado en el BCP1

cargar estado en el BCP0

bloqueado

ejecutando

Page 56: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M56

proceso P0 proceso P1sistema operativo

listo

ejecutando

ejecutando

listo

salvar estado en el BCP0

cargar estado en el BCP1

salvar estado en el BCP1

cargar estado en el BCP0

bloqueado

bloqueado

ejecutando

Page 57: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiprogramación: ejemplo de ejecución

ARCOS @ UC3M57

proceso P0 proceso P1sistema operativo

listo

ejecutando

ejecutando

listo

salvar estado en el BCP0

cargar estado en el BCP1

salvar estado en el BCP1

cargar estado en el BCP0

bloqueado

bloqueado

ejecutando

1

2

3

llamada bloqueante

interrupción

llamada bloqueante

Page 58: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Teclado_LeerTecla()

• Si (no hay tecla)• procesoActual->estado = BLOQUEADO;• Insertar(Teclado_Procesos, procesoActual);• proceso = procesoActual;

• procesoActual = planificador();• procesoActual->estado = EJECUCION;

• cambio_contexto( &(proceso->contexto), &(procesoActual->contexto));

• return extraer(Teclado_Teclas) ;

Pseudocódigo de ejemplo (P0)

ARCOS @ UC3M58

salvar estado en BCP0

cargar estado en BCP1

RunningRunning

BlockedBlocked

BCP7 BCP2

BCP1 BCP3

planificador()

• return extraer(CPU_Listo);

1

Page 59: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Teclado_Interrupción_Software ()

• proceso = primero (Teclado_Procesos);• SI (proceso != NULL)

• eliminar (Teclado_Procesos);• proceso->estado = LISTO;• insertar (CPU_Listos, proceso);

• return ok;

Pseudocódigo de ejemplo (P1)

ARCOS @ UC3M59

BlockedBlockedReadyReadyfin E/S

BCP7 BCP2

Teclado_Interrupción_Hardware ()

• T = in (TECLADO_HW_ID);• proceso = insertar (T, Teclado_Teclas);• Insertar (Teclado_interrupción_software); • Activar_Interrupción_Software();

2

Page 60: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Teclado_Interrupción_Software ()

• proceso = primero (Teclado_Procesos);• SI (proceso != NULL)

• eliminar (Teclado_Procesos);• proceso->estado = LISTO;• insertar (CPU_Listos, proceso);

• return ok;

Pseudocódigo de ejemplo (P1)

ARCOS @ UC3M60

BlockedBlockedReadyReadyfin E/S

BCP7 BCP2

Teclado_Interrupción_Hardware ()

• T = in (TECLADO_HW_ID);• proceso = insertar (T, Teclado_Teclas);• Insertar (Teclado_interrupción_software); • Activar_Interrupción_Software();

• Un proceso solo puede estar en una cola (como mucho):

[correcto] eliminar + insertar

[incorrecto] insertar + eliminar

2

Page 61: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Teclado_LeerBloqueDisco()

• Si (no hay bloque en caché)• procesoActual->estado = BLOQUEADO;• Insertar(Disco_Procesos, procesoActual);• proceso = procesoActual;

• procesoActual = planificador();• procesoActual->estado = EJECUCION;

• cambio_contexto( &(proceso->contexto), &(procesoActual->contexto));

• return extraer(Disco_caché, bloque) ;

Pseudocódigo de ejemplo (P1)

ARCOS @ UC3M61

salvar estado en BCP1

cargar estado en BCP0

RunningRunning

BlockedBlocked

BCP7 BCP2

BCP1 BCP3

planificador()

• return extraer(CPU_Listo);

3

Page 62: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Teclado_LeerTecla()

• Si (no hay tecla)• procesoActual->estado = BLOQUEADO;• Insertar(Teclado_Procesos, procesoActual);• proceso = procesoActual;

• procesoActual = planificador();• procesoActual->estado = EJECUCION;

• cambio_contexto( &(proceso->contexto), &(procesoActual->contexto));

• return extraer(Teclado_Teclas) ;

Pseudocódigo de ejemplo (P0)

ARCOS @ UC3M62

3

Page 63: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

El reloj: tratamiento con solo c.c.v.

ARCOS @ UC3M63

proceso P0 sistema operativo

ejecutando

interrupción o llamada al sistema

interrupción o llamada al sistema

interrupción o llamada al sistema

Reloj_Interrupción_Hardware ()

• Ticks++

Reloj_Interrupción_Hardware ()

• Ticks++

Reloj_Interrupción_Hardware ()

• Ticks++

Page 64: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Colas/Listas de procesosLinux

ARCOS @ UC3M64

"sched.c"struct rq runqueues

"current.h"task_struct *current

"wait.h"DEFINE_WAIT(wq1)

"sched.h"task_struct init_task

Page 65: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Colas/Listas de procesosLinux

ARCOS @ UC3M65

runqueueskernel/sched.c

struct rq

current

init_tasksched.h

task_struct…

sched.h

task_struct

a. atomic_t is_blocking_mode = ATOMIC_INIT(0);

DECLARE_WAIT_QUEUE_HEAD(dso_wq1);

b. atomic_set(&is_blocking_mode, 0);

wait_event_interruptible(dso_wq1,

(atomic_read(&is_blocking_mode) == 1));

c. atomic_set(&is_blocking_mode, 1);

wake_up_interruptible(&dso_wq1);

"wait.h"DEFINE_WAIT(wq1)

Page 66: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Colas/Listas de procesosLinux

ARCOS @ UC3M66

runqueueskernel/sched.c

struct rq

current

init_tasksched.h

task_struct…

sched.h

task_struct

a. atomic_t is_blocking_mode = ATOMIC_INIT(0);

DECLARE_WAIT_QUEUE_HEAD(dso_wq1);

b. atomic_set(&is_blocking_mode, 0);

wait_event_interruptible(dso_wq1,

(atomic_read(&is_blocking_mode) == 1));

c. atomic_set(&is_blocking_mode, 1);

wake_up_interruptible(&dso_wq1);

• DEFINE_WAIT, DECLARE_WAIT_QUEUE_HEAD(wq)

• wq->flags &= ~WQ_FLAG_EXCLUSIVE

wq->flags |= WQ_FLAG_EXCLUSIVE

"wait.h"DEFINE_WAIT(wq1)

wake_up, wake_up_nr, wake_up_all, wake_up_interruptible,

wake_up_interruptible_nr, wake_up_interruptible_all,

wake_up_interruptible_sync, wake_up_locked(queue)

wait_event, wait_event_interruptible (wq, condition)

wait_event_timeout,

wait_event_interruptible_timeout (wq, condition, timeout)

Page 67: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Contenidos

ARCOS @ UC3M67

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en el sistema operativo

Aspectos de diseño e implementación

Estructuras de datos

Multiprogramación

Multitarea y multiproceso

Planificador

Llamadas al sistema

Page 68: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multitarea (datos y funciones)

ARCOS @ UC3M68

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos

• Zonas de memoria (código, datos y pila)

• Archivos abiertos

• Señales activas

• Diversas funciones internas

• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación

• Estado de ejecución

• Contexto: registros de CPU…

• Lista de procesos

• Int. hw/sw de dispositivos

• Planificador

• Crear/Destruir/Planificar proceso

o Protección /

Compartición

• Paso de mensajes

• Cola de mensajes de recepción

• Memoria compartida

• Zonas, locks y conditions

• Envío/Recepción mensaje y gestión

de la cola de mensaje

• API concurrencia y gestión de

estructuras de datos

o Jerarquía de

procesos

• Relación de parentesco

• Conjuntos de procesos relacionados

• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso

• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante

• Prioridad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Page 69: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Estados de un proceso

ARCOS @ UC3M69

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/Screación

C.C.V.

C.C.V. + C.C.I.

Page 70: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

El reloj: tratamiento con c.c.v. + c.c.i.

ARCOS @ UC3M70

proceso P0 sistema operativo

ejecutando

interrupción o llamada al sistema

interrupción o llamada al sistema

interrupción o llamada al sistema

salvar estado en el BCP0

cargar estado en el BCP1

listo

proceso P1

ejecutando

listo

interrupción o llamada al sistema

Page 71: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Reloj_Planificar_Rodaja ()

• pActual->rodaja = pActual->rodaja - 1;• SI (pActual->rodaja == 0)

• pActual->estado = LISTO;• insertar (CPU_Listos, pActual);• proceso = pActual;

• pActual = planificador();• pActual->estado = EJECUCIÓN;• cambio_contexto(

&(proceso->contexto), &(pActual->contexto));

• return ok;

Pseudocódigo de ejemplo (P0)

ARCOS @ UC3M71

RunningRunning

ReadyReady

BCP7 BCP2

Reloj_Interrupción_Hardware ()

• Ticks++;• Insertar (Reloj_Planificar_Rodaja); • Activar_Interrupción_Software();

BCP2 BCP5

salvar estado en BCP0

cargar estado en BCP1

planificador()

• return extraer(CPU_Listo);

Page 72: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Estados de un procesoLinux

ARCOS @ UC3M72

ReadyReady

StoppedStopped

ExecutingExecuting ZombieZombieScheduling

Signal

Termination

Signal

Creation

UninterruptibleUninterruptible

Event Event

InterruptibleInterruptible

Page 73: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Estados de un procesoWindows 2000

ARCOS @ UC3M73

Page 74: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

TemporizaciónLinux

ARCOS @ UC3M74

• void process_timeout (unsigned long __data) {

wake_up_process((task_t *)__data);

}

• timespec t;

unsigned long expire;

struct timer_list timer;

Understanding the Linux kernel (250)

"timer.h"timer_list

Page 75: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

TemporizaciónLinux

ARCOS @ UC3M75

"timer.h"timer_list

• expire = timespec_to_jiffies(&t) + 1 + jiffies;

init_timer(&timer);

timer.expires = expire;

timer.data = (unsigned long) current;

timer.function = process_timeout;

add_timer(&timer);

current->state = TASK_INTERRUPTIBLE;

schedule(); /* ejecutar mientras otro proceso */

del_singleshot_timer_sync(&timer);

Understanding the Linux kernel (250)

Page 76: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiproceso

ARCOS @ UC3M76

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos

• Zonas de memoria (código, datos y pila)

• Archivos abiertos

• Señales activas

• Diversas funciones internas

• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación

• Estado de ejecución

• Contexto: registros de CPU…

• Lista de procesos

• Int. hw/sw de dispositivos

• Planificador

• Crear/Destruir/Planificar proceso

o Protección /

Compartición

• Paso de mensajes

• Cola de mensajes de recepción

• Memoria compartida

• Zonas, locks y conditions

• Envío/Recepción mensaje y gestión

de la cola de mensaje

• API concurrencia y gestión de

estructuras de datos

o Jerarquía de

procesos

• Relación de parentesco

• Conjuntos de procesos relacionados

• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso

• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante

• Prioridad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Page 77: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Multiproceso

Afinidad: Los procesos tienen ‘afinidad’ (affinity) a una CPU: «mejor volver a la misma CPU»

Simetría: Los procesos se ejecutan en la CPU que tienen unas capacidades específicas

ARCOS @ UC3M77

Page 78: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Contenidos

ARCOS @ UC3M78

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en el sistema operativo

Aspectos de diseño e implementación

Estructuras de datos

Multiprogramación

Multitarea

Planificador

Llamadas al sistema

Page 79: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesosniveles de planificación

A largo plazo

añadir procesos a ejecutar

Invocado con baja frecuencia

puede ser algo lento

A medio plazo

añadir procesos a RAM

A corto plazo

qué proceso tiene la UCP

Invocado frecuentemente

rápido

ARCOS @ UC3M79

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/S

Ready & SuspendReady & Suspend

Blocked & Suspend

Blocked & Suspend

creación

Planificación a medio plazo

Planificación a corto plazo

Planificación a largo plazo

Sistemas operativos: una visión aplicada

Page 80: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesos (a corto plazo)

Planificador:

Selecciona el proceso a ser

ejecutado entre los que están

listos para ejecutar

Activador:

Da control al proceso que el

planificador ha seleccionado

(cambio de contexto - restaurar)

ARCOS @ UC3M80

finalizaciónRunningRunning

ReadyReady BlockedBlockedfin E/S

Ready & SuspendReady & Suspend

Blocked & Suspend

Blocked & Suspend

creación

cola

cabeza

registros

BCP7

registros

BCP2

Page 81: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesosobjetivos de los algoritmos de planificación (según sistema)

Todos los sistemas:

Equitativo – ofrece a cada proceso una parte equitativa de la CPU

Expeditivo – cumplimiento de la política emprendida de reparto

Balanceado – mantener todas las partes del sistema ocupadas

Sistemas batch:

Productividad – maximizar el número de trabajos por hora

Tiempo de espera – minimizar el tiempo entre emisión y terminación del trabajo

Uso de CPU – mantener la CPU ocupada todo el tiempo

Sistemas Interactivos:

Tiempo de respuesta – responder a las peticiones lo más rápido posible

Ajustado – satisfacer las expectaciones de los usuarios

Sistemas de tiempo real:

Cumplimiento de plazos – evitar la pérdida de datos

Predecible – evitar la degradación de calidad en sistemas multimedia

ARCOS @ UC3M81

Page 82: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesoscaracterísticas de los algoritmos de planificación (1/2)

Preemption:

Sin expulsión:

El proceso conserva la CPU mientras desee.

Cambios de contexto voluntarios (C.C.V.)

[v/i] Un proceso puede bloquear al resto pero solución fácil a la compartición de recursos

Windows 3.1, Windows 95 (16 bits), NetWare, MacOS 9.x.

Con expulsión:

Exige un reloj que interrumpe periódicamente:

cuando pasa el quantum de un proceso se cambia a otro

(Se añade) 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

ARCOS @ UC3M82

Page 83: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesoscaracterísticas de los algoritmos de planificación (2/2)

Clasificación de elementos en las colas:

Por prioridad

Por tipo

CPU-bound (más ‘rachas’ –burst– de tiempo usando CPU)

IO-bound (más ‘rachas’ de tiempo esperando E/S)

CPU-aware:

Afinidad:

Los procesos tienen ‘afinidad’ (affinity) a una CPU: «mejor volver a la misma CPU»

Simetría:

Los procesos se ejecutan en la CPU que tienen unas capacidades específicas a dicha CPU

ARCOS @ UC3M83

A B C D

Page 84: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesosprincipales algoritmos de planificación (1/3)

Cíclico o Round Robin:

Asignación rotatoria del procesador

Se asigna un tiempo máximo de procesador (rodaja o quantum)

Equitativo pero interactivo:

Mejor por UID que por proceso

En Linux:

Aparición en 11/2010 de un parche para el kernel que automáticamente crea

un grupo de tareas por TTY para mejorar la interactividad en sistemas cargados.

Son 224 líneas de código 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

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

A B C D B C D A

• Grande:• menos cambios de contexto• Peor reactividad

Page 85: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesosprincipales algoritmos de planificación (2/3)

Por prioridad:

Asignación a procesos más prioritarios el procesador

Se puede combinar con cíclica. Ejemplo con tres clases de prioridad

Características:

Uso de prioridades fijas: problema de inanición

No fijas: uso de algún algoritmo de envejecimiento

Uso en sistemas de tiempo compartido con aspectos de tiempo real

ARCOS @ UC3M85

Prioridad 2

Prioridad 1

Prioridad 3

Page 86: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación de procesosprincipales algoritmos de planificación (3/3)

Primero el trabajo más corto:

Dado un conjunto de trabajo del que se sabe la duración total de la ejecución

de cada uno de ellos, se ordenan de la menor a la mayor duración.

Características:

[v] Produce el menor tiempo de respuesta (medio)

[i] Penaliza los trabajos largos.

Uso en sistemas batch.

FIFO:

Ejecución por el estricto orden de llegada.

Características:

[v] Simple de implantar.

[i] Penaliza los trabajos prioritarios.

Uso en sistemas batch.

ARCOS @ UC3M86

Page 87: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Política vs mecanismo

Separación de lo qué se puede hacer

de cómo se puede hacer

Normalmente, un proceso conoce cuál es el hilo más prioritario,

el que más E/S necesitará, etc.

Uso de algoritmos de planificación parametrizados

Mecanismo en el kernel

Parámetros rellenados por los procesos de usuarios

Política establecida por los procesos de usuario

ARCOS @ UC3M87

Page 88: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación multipolíticaWindows 2000 y Linux

ARCOS @ UC3M88 Sistemas operativos: una visión aplicada

31-1616 niveles de RT

15 niveles variables15-1

1 nivel del sistema

0-99

100-139

Prioridades de RT

Prioridades procs.

convencionales

Windows 2000 Linux

CPU

I/O

CPU

I/O

0

Page 89: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación multipolíticaWindows 2000

ARCOS @ UC3M89 Sistemas operativos: una visión aplicada

31-1616 niveles de RT

15 niveles variables15-1

1 nivel del sistema

Windows 2000

CPU

I/O

0

Page 90: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación: estructuras de datosWindows 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 búsqueda

Idle summary

Un bit por procesador

Si bit =1 procesador libre

ARCOS @ UC3M90 Inside Microsoft Windows 2000 (Microsoft Programming Series)

Page 91: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación: escenarios (1/3)Windows 2000

Cambio de contexto voluntario:

Entra en el estado de espera por algún objeto:

evento, mutex, semáforo, operación de E/S, etc.

Al terminar pasa al final de la cola de listos + temporary priority boost.

Rodaja de T: se mantiene

ARCOS @ UC3M91 Inside Microsoft Windows 2000 (Microsoft Programming Series)

20

19

18

17

16

15

14

Running ReadyPriority

To wait state

Page 92: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación: escenarios (2/3)Windows 2000

Expulsión:

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

ARCOS @ UC3M92 Inside Microsoft Windows 2000 (Microsoft Programming Series)

Running ReadyPriority

From wait state18

17

16

15

14

13

Page 93: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación: 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 vacía, vuelve de nuevo)

Rodaja de T: se reinicia

ARCOS @ UC3M93 Inside Microsoft Windows 2000 (Microsoft Programming Series)

Running ReadyPriority

15

14

13

12

11

Page 94: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación: aumento de prioridadWindows 2000

Priority boost:

Se aumenta la prioridad en ciertas ocasiones (solo en los niveles 0-15):

Cuando se completa una operación de E/S

Al salir del estado de una operación 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 más de 300 ticks (~3 ó 4 segundos) entonces

T.prioridad =15

T.rodaja = 2*rodaja_normal

ARCOS @ UC3M94 Inside Microsoft Windows 2000 (Microsoft Programming Series)

Page 95: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación: estructura de datosLinux

Kernel/sched.c

Cada procesador tiene

su propio runqueue

Cada runqueue tiene

dos vectores de prioridad:

Activo y Expirado

Cada vector de prioridad tiene

140 listas:

Una por nivel de prioridad

Incluye 100 niveles de tiempo real

ARCOS @ UC3M95 CS 6560 Operating System Design (clase 4)

acti

ve

140

1

CPU #0

exp

ired

140

1

runqueue

Page 96: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Planificación: gestiónLinux

El planificador elige los procesos de

la lista de activos de acuerdo a su

prioridad

Cuando expira la rodaja de un

proceso, lo mueve a la lista de

Expirado

Se recalcula prioridad y rodaja

Cuando la lista de activos está vacía,

el planificador intercambia las listas

de activo y expirados

Si un proceso es suficientemente

interactivo permanecerá en la lista

de activos

ARCOS @ UC3M96 CS 6560 Operating System Design (clase 4)

acti

ve

140

1

CPU #0

exp

ired

140

1

runqueue

Page 97: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Contenidos

ARCOS @ UC3M97

Introducción

Concepto de proceso

Modelo ofrecido

Implicaciones en el sistema operativo

Aspectos de diseño e implementación

Estructuras de datos

Multiprogramación

Multitarea

Planificador

Llamadas al sistema

Page 98: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Implicaciones en el sistema operativo…

ARCOS @ UC3M98

Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)

Recursos

• Zonas de memoria (código, datos y pila)

• Archivos abiertos

• Señales activas

• Diversas funciones internas

• Diversas funciones de servicio para

memoria, ficheros, etc.

Multiprogramación

• Estado de ejecución

• Contexto: registros de CPU…

• Lista de procesos

• Int. hw/sw de dispositivos

• Planificador

• Crear/Destruir/Planificar proceso

o Protección /

Compartición

• Paso de mensajes

• Cola de mensajes de recepción

• Memoria compartida

• Zonas, locks y conditions

• Envío/Recepción mensaje y gestión

de la cola de mensaje

• API concurrencia y gestión de

estructuras de datos

o Jerarquía de

procesos

• Relación de parentesco

• Conjuntos de procesos relacionados

• Procesos de una misma sesión

• Clonar/Cambiar imagen de proceso

• Asociar procesos e indicar proceso

representante

Multitarea• Quantum restante

• Prioridad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Multiproceso • Afinidad

• Int. hw/sw de reloj

• Planificador

• Crear/Destruir/Planificar proceso

Page 99: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Servicios del sistema operativoinicialización y finalización de procesos

ARCOS @ UC3M99

kernel

Creación de proceso

Destrucción de proceso

Cambiar propiedad X

Espera por el fin de otro proceso

Etc.

Estados y

cambios de contexto

Colas de procesos

Planificación

Etc.

fork, exit, exec, wait, …

pthread_create, pthread…

Page 100: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Creación 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 ejecución de un programa se necesite

ARCOS @ UC3M100 CS 6560 Operating System Design (clase 4: procesos)

Page 101: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Finalización de procesos

Un proceso termina:

De forma voluntaria: Finalización normal

Finalización con error

De forma involuntaria: Finalizado por el sistema (Ej.: excepción, sin recursos necesarios)

Finalizado por otro proceso (Ej.: a través de llamada al sistema)

Finalizado por el usuario (Ej.: control-c por teclado)

ARCOS @ UC3M101 CS 6560 Operating System Design (clase 4: procesos)

En Unix/Linux se usan señales como mecanismo

Se pueden capturar y tratar (salvo SIGKILL) para evitar finalizar involuntariamente

En Unix/Linux se usan señales como mecanismo

Se pueden capturar y tratar (salvo SIGKILL) para evitar finalizar involuntariamente

Page 102: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Creación y terminación de procesosLlamadas al sistema

Linux

Windows

ARCOS @ UC3M102 Sistemas operativos: una visión aplicada

clone()clone()

exec()exec() exit()exit()

wait()wait()

padre

hijo

CreateProcess()CreateProcess()

ExitProcess()ExitProcess()

GetExitCodeProcess()GetExitCodeProcess()

padre

hijo

Page 103: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Creación de procesosLinux: clone

ARCOS @ UC3M103

Copiar PCB del padre

clone:

Duplicar mapa de M del padre (incluyendo pilas)

Estado listoContexto end_fork()PCB en cola de listos

Otras actualizaciones: p.ej., limpiar señales, eventos y mensajes pendientes

Devuelve PID al padre

Devuelve 0 al hijo

“Clona al proceso padre y da una nueva identidad al hijo”

Obtener entrada libre en Tabla de Procesos

Apila PC inicial

*

Page 104: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Cambio de imagen de un procesoLinux: exec

ARCOS @ UC3M104

exec:

“Cambia la imagen de memoria de un procesousando como ‘recipiente’ uno previo”

Liberar imagen de M del proceso

Leer ejecutable

Crear nueva imagen M BCP

Cargar secciones .texto y .datos

Crear pila inicial UCrear pila S: dir. principio programa

Inicio BCP: regs.; PC dir SO: RETI

Otras acciones: gestión de señales, SETUID, etc

Page 105: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Terminación de procesosLinux: exit

ARCOS @ UC3M105

exit:

“Termina la ejecuciónde un proceso y liberalos recursos”

Finaliza todos los hilos menos uno

Limpia operaciones asíncronas, temporizadores y señales pendientes

Cierra todos los descriptores de archivo

Libera semáforos y cerrojos activos

Reasigna huérfanos a init

Estado proceso <- zombie

Trata de enviar señal SIGCLD al padre:

si responde:freeproc(): libera P y M

NO responde:mantener señal

Page 106: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Servicios del sistema operativorepaso de la asignatura de sistemas operativos

ARCOS @ UC3M106

kernel

Creación de proceso

Destrucción de proceso

Cambio de imagen

Espera por el fin de otro proceso

Etc.

Estados y

cambios de contexto

Colas de procesos

Planificación

Etc.

fork, exit, exec, wait, …

pthread_create, pthread…

Page 107: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Servicios en POSIXFork

Crea un “clon” de un proceso

Iguales salvo pequeñas diferencias:

al padre se le devuelve el PID del hijo, y el hijo cero.

pid = fork( ) ;

Pid 200

201

Pid 201

pid = fork( ) ;

0

ARCOS @ UC3M

Page 108: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Servicios en POSIXExec

Cambia la imagen de un proceso

Si todo va bien no

se vuelve de esta

función (el código se

sustituye por otro)

Pid 201

Pid 201

/* código de /bin/ls */

execlp("ls","ls","-l",NULL);

ARCOS @ UC3M

Page 109: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Servicios en POSIXExit

Finalizar la ejecución de un proceso

El parámetro es un valor entero que se suele usar como

código de diagnóstico: si se ha ejecutado todo bien, ha

habido algún problema leve, algún error grave, etc.

Pid 201

exit( 10 ) ;

ARCOS @ UC3M

Page 110: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Servicios en POSIXWait

Tiene tres efectos:

1. Bloque la ejecución del padre hasta que alguno de sus

hijos termine su ejecución.

2. Guarda en su parámetro el valor devuelto por el hijo.

3. Devuelve el pid del hijo que ha terminado.

pid != wait(&status) ;

exit( 10 );pid != wait(&status) ;

Pid 201Pid 200

201 10

1

23

ARCOS @ UC3M

Page 111: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Ejemplos de uso

fork+exec+wait

simple

ARCOS @ UC3M111

Page 112: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasofork() + exec()

ARCOS @ UC3M112

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

Page 113: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasofork() + exec()

ARCOS @ UC3M113

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

Page 114: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasofork() + exec()

ARCOS @ UC3M114

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

Page 115: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasofork() + exec()

ARCOS @ UC3M115

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

Page 116: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasofork() + exec()

ARCOS @ UC3M116

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

Page 117: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasofork() + exec()

ARCOS @ UC3M117

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

Page 118: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasofork() + exec()

ARCOS @ UC3M118

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* código del mandato ls */

#include <sys/types.h>

#include <stdio.h>

main() {

/* código del ls */

exit( 0 );}

Page 119: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasowait() + exit()

ARCOS @ UC3M119

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* código del mandato ls */

#include <sys/types.h>

#include <stdio.h>

main() {

/* código del ls */

exit( 0 );}

Page 120: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasowait() + exit()

ARCOS @ UC3M120

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* código del mandato ls */

#include <sys/types.h>

#include <stdio.h>

main() {

/* código del ls */

exit( 0 );}

Page 121: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasowait() + exit()

ARCOS @ UC3M121

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

/* código del mandato ls */

#include <sys/types.h>

#include <stdio.h>

main() {

/* código del ls */

exit( 0 );}

Page 122: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasowait() + exit()

ARCOS @ UC3M122

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

0

Page 123: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasowait() + exit()

ARCOS @ UC3M123

/* ejecutar el mandato ls -l */

#include <sys/types.h>

#include <stdio.h>

main() {

pid_t pid;

int status;

pid = fork();if (pid == 0)

{execlp("ls","ls","-l",NULL);exit(-1);

} else

{while (pid != wait(&status));

}

exit(0);

}

Page 124: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Alejandro Calderón Mateos

Repasowait() + exit()

ARCOS @ UC3M124

Page 125: Diseño de sistemas operativos, Procesos, hilos y planificación (v2b)

Lección 3Procesos, hilos y planificación

Grupo ARCOS

Diseño de Sistemas Operativos

Grado en Ingeniería Informática

Universidad Carlos III de Madrid