diseño de sistemas operativos, procesos, hilos y planificación (v2b)
Post on 15-Apr-2017
67 Views
Preview:
TRANSCRIPT
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
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
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.
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
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
Alejandro Calderón Mateos
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en S.O.
ARCOS @ UC3M6
Proceso
kernel
Alejandro Calderón Mateos
Introducción
Concepto de proceso
ARCOS @ UC3M7
Proceso
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
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
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)
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
Alejandro Calderón Mateos
Introducción
Concepto de proceso
Modelo ofrecido
ARCOS @ UC3M12
Proceso
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
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
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
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
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
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
Alejandro Calderón Mateos
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en S.O.
ARCOS @ UC3M19
Proceso
kernel
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
Alejandro Calderón Mateos
Implicaciones en el sistema operativo
1. Estructuras de datos
ARCOS @ UC3M21
kernel
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.
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.
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…
Alejandro Calderón Mateos
Introducciónresumen
Concepto de proceso
Modelo ofrecido
Implicaciones en S.O.
ARCOS @ UC3M25
Proceso
kernel
…
…
…
…
…
…
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
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
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
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
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.
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)
…
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)
…
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)
…
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
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
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
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
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
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
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
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
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
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
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)
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)
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
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
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ARCOS @ UC3M48
proceso P0 proceso P1sistema operativo
listo
ejecutando
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ARCOS @ UC3M49
proceso P0 proceso P1sistema operativo
listo
ejecutando
llamada bloqueante1
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ARCOS @ UC3M50
proceso P0 proceso P1sistema operativo
listo
ejecutando
salvar estado en el BCP0
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
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
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
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
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
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
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
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
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
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
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
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
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++
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
…
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)
…
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)
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
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
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.
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
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);
Alejandro Calderón Mateos
Estados de un procesoLinux
ARCOS @ UC3M72
ReadyReady
StoppedStopped
ExecutingExecuting ZombieZombieScheduling
Signal
Termination
Signal
Creation
UninterruptibleUninterruptible
Event Event
InterruptibleInterruptible
Alejandro Calderón Mateos
Estados de un procesoWindows 2000
ARCOS @ UC3M73
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
…
…
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)
…
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
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
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
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
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
…
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
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
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
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
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
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
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
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
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
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)
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
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
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
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)
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
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
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
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
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…
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)
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
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
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
*
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
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
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…
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
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
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
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
Alejandro Calderón Mateos
Ejemplos de uso
fork+exec+wait
simple
ARCOS @ UC3M111
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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 );}
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 );}
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 );}
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 );}
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
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);
}
Alejandro Calderón Mateos
Repasowait() + exit()
ARCOS @ UC3M124
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
top related