Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3ConceptosSO Pps
3ConceptosSO Pps
Introducción al tiempo
MOISE
real en sistemas
empotrados
• Introducción
UPV / EHU • Soporte de interrupciones
MOISE • Conceptos de sistemas operativos
• Planificación en sistemas de tiempo real
• Mecanismos de sincronización y comunicación
• Planificación 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
• También se denominan APIs.
MOISE • Estándares 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 ejecución:
– Secuencia de valores que adopta el registro
Contador de Programa (PC) durante la ejecución
UPV / EHU de un programa.
MOISE
• Requiere una pila (normalmente en memoria) para
representar las llamadas/retorno a subrutinas).
• Contexto de ejecución:
– Estado del sistema asociado a la ejecución 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;
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);
pila= &memoria_pila[0];
pid= clone(&f_ejemplo, (char*) pila + 1024*64, SIGCHLD | CLONE_FS | CLONE_FILES |
CLONE_SIGHAND | CLONE_VM, 0 );
printf("%d: Soy el padre de %d (%c)\n", getpid(), pid, a);
printf("%d: Agur!\n", getpid());
exit(0);
}
¿cuál
¿cuál es
es el
el valor
valor de
de a?
a?
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores 17
Threads y Procesos (cont)
• Las entidades de ejecución son los procesos/threads.
• En terminología de TR, tareas (indistintamente).
• Un thread (hilo) es un flujo de ejecución con un
UPV / EHU
contexto reducido
• PC, SP (puntero a pila), pila
MOISE • Estado del procesador
• Un proceso es un flujo de ejecución con un contexto
ampliado
• Estado de la memoria
• Estado de la E/S
• Puede haber entidades de ejecución intermedias
• Sistemas combinados: un proceso incluye un
conjunto de threads
– En este caso las entidades de ejecución/planificación
son los threads
UPV / EHU
MOISE
a a
Padre Hijo
fork()
UPV / EHU
MOISE
a
Hijo
Padre
clone()
nuevo
proceso ejecutándose finalizado
UPV / EHU
MOISE
preparado bloqueado
nuevo
proceso finalizado
cola preparados CPU
UPV / EHU
MOISE
. . . .
. . . .
. . . .
http://www.sc.ehu.es/acwlaroa/SO2/CambioContexto.pps
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores 28
Gestión de la memoria
• Monitor residente
UPV / EHU
• Particionado
MOISE
• Swapping
• Paginación y segmentación
• Memoria virtual
• Otras: solapamientos y rutinas de enlace
dinámico
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
• Políticas de asignación de huecos
– ¿En qué hueco almacenar un nuevo programa?
• ¿En el más ajustado al tamaño del programa?
• ¿En en más grande?
• ¿En el primero que se encuentre?
UPV / EHU
MOISE
• Un programa puede, durante su ejecución,
abandonar la memoria.
• Implica reubicación dinámica de programas.
p d
CPU MEM
d
UPV / EHU
dir física
MOISE
PTBR
base
...
TABLA DE PAGINAS
UPV / EHU
MOISE
s p d no d
CPU si MEM
dir física
UPV / EHU <
MOISE STBR
s
base
lim base ...
...
TABLA DE PAGINAS
TABLA DE SEGMENTOS
UPV / EHU
• Driver: código 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.
parámetros
infor. del de la petición
dispositivo
diagnóstico
parámetros parámetros
infor. del de la petición de la petición
dispositivo
diagnóstico diagnóstico
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 gestión del tiempo es un componente
MOISE
básico en cualquier sistema empotrado o de
tiempo real.
• Vamos a estudiar:
– Tipos de relojes
– Rutinas de servicio de la interrupción del reloj
– Gestión de temporizadores
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
– Gestión del tiempo compartido (expulsión por fin
de quantum).
– Contabilidad del uso de recursos temporales (p.
ej., tiempo de CPU).
• Genera eventos periódicos
if (ticks_por_segundo== 0) {
UPV / EHU actualiza_tiempo_del_sistema();
señalar_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 temporización
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)
señalar_evento(primero(peticiones_tiempo).evento;
eliminar(primero(peticiones_tiempo));
}
primero(peticiones_tiempo).plazo−−;
}
}
MOISE s= alarm(seg);
pause();
return(s);
}
signal(SIGALRM, fnula);