Beruflich Dokumente
Kultur Dokumente
Introduccin al tiempo
MOISE
real en sistemas
empotrados
Introduccin
UPV / EHU Soporte de interrupciones
MOISE Conceptos de sistemas operativos
Planificacin en sistemas de tiempo real
Mecanismos de sincronizacin y comunicacin
Planificacin de tiempo real con recursos
compartidos
BIBIOGRAFIA
Qu es un recurso:
Procesadores
Memoria
Dispositivos (de E/S, relojes, comunicaciones)
Ficheros
SO
UPV / EHU
MOISE
Hw
Interfaz de
llamadas al sistema
MOISE
UPV / EHU
Tambin se denominan APIs.
MOISE Estndares para compatibilidad de
aplicaciones (p. ej: POSIX)
Proporcionan un mecanismo nico de
entrada al sistema mediante cambio a modo
protegido:
La llamada se implementa mediante un trap.
Flujo de ejecucin:
Secuencia de valores que adopta el registro
Contador de Programa (PC) durante la ejecucin
UPV / EHU de un programa.
MOISE
Requiere una pila (normalmente en memoria) para
representar las llamadas/retorno a subrutinas).
Contexto de ejecucin:
Estado del sistema asociado a la ejecucin del
programa. Incluye o puede incluir:
PC, SP (puntero a pila), pila
Estado del procesador
Estado de la memoria
Estado de la E/S
UPV / EHU
MOISE
UPV / EHU
int main (int argc, const char * argv[]) {
int pid;
MOISE
UPV / EHU
int main (int argc, const char * argv[]) { int main (int argc, const char * argv[]) {
int pid; int pid;
char a;
void* pila;
UPV / EHU char memoria_pila[64*1024];
char a;
UPV / EHU
MOISE
a a
Padre Hijo
fork()
UPV / EHU
MOISE
a
Hijo
Padre
clone()
nue vo
proc eso e jec ut ndose finaliz ado
UPV / EHU
MOISE
p ri o ri d ad p ri o ri d ad p ri o ri d ad
i n fo i n fo i n fo
nuevo
proceso finalizado
cola preparados CPU
UPV / EHU
MOISE
. . . .
. . . .
. . . .
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
Monitor residente
UPV / EHU
Particionado
MOISE
Swapping
Paginacin y segmentacin
Memoria virtual
Otras: solapamientos y rutinas de enlace
dinmico
UPV / EHU
Sistema operativo
MOISE
(monitor)
registro
barrera
Programa de
usuario
UPV / EHU
Sistema operativo
MOISE
2 Kb
4 Kb
8 Kb
UPV / EHU
Sistema operativo
MOISE
Programa 1
Programa 2
UPV / EHU
MOISE
Polticas de asignacin de huecos
En qu hueco almacenar un nuevo programa?
En el ms ajustado al tamao del programa?
En en ms grande?
En el primero que se encuentre?
UPV / EHU
MOISE
Un programa puede, durante su ejecucin,
abandonar la memoria.
Implica reubicacin dinmica de programas.
p d
CPU d MEM
UPV / EHU
dir fsica
MOISE
PTBR
base
...
TABLA DE PAGINAS
dir virtual no
s d < si
+
CPU MEM
UPV / EHU dir fsica
MOISE
STBR
lim base
...
TABLA DE SEGMENTOS
s p d no d
CPU si MEM
dir fsica
UPV / EHU <
MOISE
STBR
s
base
lim base ...
...
TABLA DE PAGINAS
TABLA DE SEGMENTOS
UPV / EHU
Driver: cdigo que monopoliza el acceso al
MOISE dispositivo.
El resto del sistema operativo es independiente del
dispositivo.
Un modelo de entrada/salida: cliente-servidor
Las rutinas de E/S son clientes del driver.
parmetros
infor. del de la peticin
dispositivo
diagnstico
parmetros parmetros
infor. del de la peticin de la peticin
dispositivo
diagnstico diagnstico
DESCRIPTOR
DISP 3
TABLA DE
CANALES cola IORBs
MOISE
(a) E/S sin (b) E/S con un (c) E/S con doble (d) E/S con bufer
buffer buffer buffer circular
UPV / EHU
El tiempo es un recurso peculiar.
La gestin del tiempo es un componente
MOISE
bsico en cualquier sistema empotrado o de
tiempo real.
Vamos a estudiar:
Tipos de relojes
Rutinas de servicio de la interrupcin del reloj
Gestin de temporizadores
#include <sys/time.h>
gettimeofday(&t0, NULL);
gettimeofday(&t1, NULL);
printf("Duracion: %d,%d segundos\n",
t1.tv_sec-t0.tv_sec, t1.tv_usec-t0.tv_usec);
Funciones:
UPV / EHU Soporte del reloj software (contador de unidades
de tiempo, p. ej., segundos)
MOISE
Para el tiempo del sistema
Para implementar temporizadores
Gestin del tiempo compartido (expulsin por fin
de quantum).
Contabilidad del uso de recursos temporales (p.
ej., tiempo de CPU).
Genera eventos peridicos
if (ticks_por_segundo== 0) {
UPV / EHU actualiza_tiempo_del_sistema();
sealar_evento(EVENTO_SEGUNDO);
ticks_por_segundo= UN_SEGUNDO;
MOISE }
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());
}
Peticiones
UPV / EHU temporizacin
13 EVENTO_P
MOISE Gestor
de
tiempos
EVENTO_P
P
EVENTO_SEGUNDO
ISR
MOISE
13 12 12
23 13 Relativo 1
Ordenar a la
23 23 anterior 10
12 23 0
Gestor_tiempos ()
{
UPV / EHU ...
while (TRUE) {
MOISE esperar_evento(EVENTO_SEGUNDO);
while (primero(peticiones_tiempo).plazo == 0)
sealar_evento(primero(peticiones_tiempo).evento;
eliminar(primero(peticiones_tiempo));
}
primero(peticiones_tiempo).plazo;
}
}
MOISE s= alarm(seg);
pause();
return(s);
}
signal(SIGALRM, fnula);