Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
UPV / EHU
MOISE
Introduccin al tiempo
real en sistemas
empotrados
Contenido
UPV / EHU
MOISE
Introduccin
Soporte de interrupciones
Conceptos de sistemas operativos
Planificacin en sistemas de tiempo real
Mecanismos de sincronizacin y comunicacin
Planificacin de tiempo real con recursos
compartidos
Conceptos de Sistemas
Operativos
CONTENIDO
UPV / EHU
MOISE
BIBIOGRAFIA
Procesadores
Memoria
Dispositivos (de E/S, relojes, comunicaciones)
Ficheros
Hw
Interfaz de
llamadas al sistema
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores
UPV / EHU
MOISE
UPV / EHU
MOISE
UPV / EHU
MOISE
Modos de ejecucin
UPV / EHU
MOISE
Modos de ejecucin
Cambio de modo
Mecanismo unificado para paso de modo normal a
modo privilegiado: vector de interrupciones (VI).
UPV / EHU
MOISE
10
Threads y Procesos
Flujo de ejecucin:
UPV / EHU
MOISE
Contexto de ejecucin:
Estado del sistema asociado a la ejecucin del
programa. Incluye o puede incluir:
11
Threads y Procesos
UPV / EHU
MOISE
12
Ejemplo:
creacin de un proceso LINUX
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
UPV / EHU
MOISE
13
Ejemplo
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
UPV / EHU
MOISE
(pid0)
14
Ejemplo
UPV / EHU
MOISE
Hijo
Padre
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
15
Ejemplo:
contexto de un proceso LINUX
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
char a;
UPV / EHU
MOISE
int f_ejemplo() {
a= 'H';
printf("%d: Soy el hijo! (%c)\n", getpid(), a);
return 0;
}
int main (int argc, const char * argv[]) {
int pid;
a= 'P';
printf("%d: Soy el padre! (%c)\n", getpid(), a);
pid= fork();
cul es el
if (pid == 0)
f_ejemplo();
else {
printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a);
}
printf("%d: Agur!\n", getpid());
exit(0);
}
valor de a?
16
Ejemplo:
threads en LINUX
#include
#include
#include
#include
#include
UPV / EHU
MOISE
<stdio.h>
<unistd.h>
<stdlib.h>
<sched.h>
<wait.h>
void* pila;
char memoria_pila[64*1024];
char a;
int f_ejemplo() {
a= 'H';
printf("%d: Soy el hijo! (%c)\n", getpid(), a);
return 0;
}
int main (int argc, const char * argv[]) {
int pid;
a= 'P';
printf("%d: Soy el padre! (%c)\n", getpid(), a);
pila= &memoria_pila[0];
pid= clone(&f_ejemplo, (char*) pila + 1024*64, SIGCHLD | CLONE_FS |
| CLONE_SIGHAND | CLONE_VM, 0 );
printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a);
printf("%d: Agur!\n", getpid());
exit(0);
}
CLONE_FILES
cul es el valor de a?
17
UPV / EHU
MOISE
18
Threads y procesos
Memoria
UPV / EHU
MOISE
a
Padre
Hijo
fork()
19
Threads y procesos
Memoria
UPV / EHU
MOISE
a
Padre
Hijo
clone()
20
Threads y Procesos
Estados y grafo de transicin
UPV / EHU
nuevo
proceso
ejecutndose
finalizado
MOISE
preparado
bloqueado
21
Control de procesos
Representacin
Bloque de Control de Procesos (PCB)
UPV / EHU
MOISE
Identificador.
Estado del proceso.
Informacin para la planificacin (prioridad,
quantum).
Contadores de consumo de recursos (tiempo de
CPU).
Puntero a la pila del proceso
En sistemas combinados: puntero a los threads del
proceso (representados por TCBs).
22
Control de procesos
Representacin
Los PCBs se enlazan en colas
Una cola por estado
UPV / EHU
MOISE
PCB
PCB
PCB
prioridad
prioridad
prioridad
info
info
info
23
Control de procesos
UPV / EHU
MOISE
24
Control de procesos
Planificacin
UPV / EHU
MOISE
25
Control de procesos
Planificacin (cont)
Cundo planificar:
Slo cuando la CPU queda libre
UPV / EHU
MOISE
26
Cambio de contexto
UPV / EHU
MOISE
PBA
Cola de ejecucin
UPV / EHU
BA de la Rut.
de Atencin
Contexto
BA
de la Rut.
PA
de de
Atencin
PB
Cola de preparados
MOISE
Pila de PA
SP
CPU
PA
Contexto
de PB
Una cola de
bloqueados (por
ejemplo)
1.
2.
3.
4.
5.
6.
7.
8.
Se carga el contexto de PB en la
CPU.
9.
Retorno de la interrupcin.
10.
Se ejecuta PB.
Pila de PB
http://www.sc.ehu.es/acwlaroa/SO2/CambioContexto.pps
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores
28
Gestin de la memoria
UPV / EHU
MOISE
29
Gestin de la memoria
Tcnicas
UPV / EHU
MOISE
Monitor residente
Particionado
Swapping
Paginacin y segmentacin
Memoria virtual
Otras: solapamientos y rutinas de enlace
dinmico
30
Gestin de la memoria
Monitor residente
Para un nico programa en memoria
UPV / EHU
MOISE
Sistema operativo
(monitor)
registro
barrera
Programa de
usuario
31
Gestin de la memoria
Particionado
Particionado fijo (MFT)
UPV / EHU
MOISE
Sistema operativo
2 Kb
4 Kb
8 Kb
32
Gestin de la memoria
Particionado
Particionado variable (MVT)
UPV / EHU
MOISE
Sistema operativo
Programa 1
Programa 2
33
Gestin de la memoria
Particionado
En particionado fijo se pierde espacio dentro
de las particiones (fragmentacin interna).
UPV / EHU
MOISE
34
Gestin de la memoria
Particionado
UPV / EHU
MOISE
35
Gestin de la memoria
Swapping
UPV / EHU
MOISE
36
Gestin de la memoria
Paginacin y segmentacin
Los programas se dividen en trozos
De igual tamao (paginacin)
De tamao variable (segmentacin)
UPV / EHU
MOISE
37
Gestin de la memoria
Paginacin
dir virtual
UPV / EHU
MOISE
CPU
MEM
dir fsica
PTBR
p
base
...
TABLA DE PAGINAS
38
Gestin de la memoria
Segmentacin
UPV / EHU
MOISE
39
Gestin de la memoria
Sistemas combinados
TRAP
dir virtual
CPU
<
UPV / EHU
MOISE
no
si
dir fsica
MEM
STBR
s
base
lim
base
...
...
TABLA DE PAGINAS
TABLA DE SEGMENTOS
Varios niveles de indireccin.
El ltimo, siempre de paginacin.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores
40
Gestin de la memoria
Memoria virtual
UPV / EHU
MOISE
Bit de validez
Trap de fallo de pgina
Espacio en disco (swap)
Soporte para el reemplazo de pginas
41
Gestin de la memoria
Solapamientos y enlace dinmico
Qu hacer si un programa no cabe en la RAM y no
tengo soporte de MV?
UPV / EHU
MOISE
42
Gestin de la entrada/salida
Los dispositivos de entrada/salida son muy
heterogneos:
UPV / EHU
MOISE
Velocidad
Representacin de los datos
Protocolos
Operaciones
Unidad de transferencia (bloques, caracteres)
Tipos de errores
Modo de tratar la E/S: Encuesta, Interrupciones,
DMA.
43
Entrada/salida
Interfaz
UPV / EHU
MOISE
44
Entrada/salida
Modos
Encuesta
Espera activa sobre Registro de Estado
Acceso a Registro de Datos
UPV / EHU
MOISE
Interrupciones
El dispositivo cuenta con una lnea de interrupcin
Cuando se activa la interrupcin, se ejecuta la Rutina de
Servicio que gestiona la E/S:
Comprobacin sobre Registro de Estado
Acceso a Registro de Datos
45
Gestin de la entrada/salida
Manejadores de dispositivos (drivers)
UPV / EHU
MOISE
46
Gestin de la entrada/salida
Manejadores de dispositivos (drivers)
47
Gestin de la entrada/salida
DESCRIPTOR
DISP1
IORB
colaIORBs
infor.del
dispositivo
UPV / EHU
MOISE
TABLADE
CANALES
Procesoi
parmetros
delapeticin
diagnstico
DESCRIPTOR
DISP2
IORB
IORB
parmetros
delapeticin
parmetros
delapeticin
diagnstico
diagnstico
colaIORBs
infor.del
dispositivo
DESCRIPTOR
DISP3
TABLADE
CANALES
Procesoj
colaIORBs
infor.del
dispositivo
48
Gestin de la entrada/salida
Buffering
Para desacoplar las velocidades de funcionamiento de los
dispositivos y la CPU, el SO proporciona buffers del
sistema para almacenamiento temporal de la E/S.
Varios esquemas.
UPV / EHU
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Dispositivo
Dispositivo
Dispositivo
Dispositivo
(a)E/Ssin
buffer
(b)E/Sconun
buffer
(c)E/Scondoble
buffer
(d)E/Sconbufer
circular
MOISE
49
Gestin de la entrada/salida
El sistema de ficheros
UPV / EHU
MOISE
50
Gestin de la entrada/salida
El sistema de ficheros
Caractersticas del sistema de ficheros:
Permanencia
Organizacin estructurada
UPV / EHU
MOISE
En rbol
Nombre de un fichero: relativo-absoluto
Algunos ficheros son directorios
Atributos de un fichero
51
Gestin de tiempos y
temporizacin
UPV / EHU
MOISE
52
Reloj Hardware
53
El tiempo en Linux
gettimeofday(&t1,NULL);
printf("Duracion:%d,%dsegundos\n",
t1.tv_sect0.tv_sec,t1.tv_usect0.tv_usec);
54
Funciones:
UPV / EHU
MOISE
55
UPV / EHU
MOISE
if (ticks_por_segundo== 0) {
actualiza_tiempo_del_sistema();
sealar_evento(EVENTO_SEGUNDO);
ticks_por_segundo= UN_SEGUNDO;
}
if (intervalo_CPU == quantum) {
incrementa_gasto_CPU_del_proceso(intervalo_CPU);
intervalo_CPU= 0;
goto cambio_de_contexto;
}
...
eoi();
reti();
cambio_de_contexto:
expulsar_proceso();
dispatcher (scheduler());
}
56
Modelo:
Los procesos ponen su peticin de temporizacin
(usando un IORB).
Un gestor de tiempos (manejador), activado cada
unidad de tiempo por la ISR del reloj, despacha las
peticiones a medida que se cumplen, despertando al
proceso correspondiente.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores
57
Peticiones
temporizacin
UPV / EHU
13
MOISE
EVENTO_P
Gestor
de
tiempos
EVENTO_P
EVENTO_SEGUNDO
ISR
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnologa de Computadores
58
UPV / EHU
MOISE
13
12
23
13
23
Ordenar
12
23
23
12
Relativo
a la
anterior
1
10
0
59
UPV / EHU
MOISE
Gestor_tiempos ()
{
...
while (TRUE) {
esperar_evento(EVENTO_SEGUNDO);
while (primero(peticiones_tiempo).plazo == 0)
sealar_evento(primero(peticiones_tiempo).evento;
eliminar(primero(peticiones_tiempo));
}
primero(peticiones_tiempo).plazo;
}
}
60
Ejemplo:
uso de temporizadores en Unix
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void fnula() {return;}
UPV / EHU
MOISE
}
61