Download Conceptos de sistemas operativos

Document related concepts
no text concepts found
Transcript
Master en Ingeniería de Sistemas Empotrados
UPV / EHU
MOISE
Departamento de Arquitectura y Tecnología de
Computadores
Universidad del País Vasco / Euskal Herriko Unibertsitatea
Introducción al tiempo
real en sistemas
empotrados
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
1
Contenido
UPV / EHU
MOISE
•
•
•
•
•
•
Introducción
Soporte de interrupciones
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
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
2
Conceptos de Sistemas
Operativos
CONTENIDO
UPV / EHU
MOISE
•
•
•
•
•
•
•
El sistema operativo como interfaz para las aplicaciones
Modos de ejecución
Threads y procesos
Control de procesos. Cambio de contexto
Gestión de la memoria
Gestión de la entrada/salida
Gestión de tiempos y temporización
BIBIOGRAFIA
•
•
•
•
•
•
•
Q. Li: Real-Time concepts for embedded systems. CMP Books, 2003.
A. Lafuente: Sistemas Operativos II. Apuntes de la asignatura. Edición 2009-10.
http://www.sc.ehu.es/acwlaroa/SO2.htm
M.J. Rochkind: Advanced Unix Programming (2nd Edition), Addison-Wesley, 2004.
C. Rodríguez, I. Alegria, J. Abascal, A. Lafuente: Descripción funcional de los sistemas
operativos. Síntesis, 1994.
S. Sánchez Prieto: Sistemas Operativos. Universidad de Alcalá de Henares, Servicio
Editorial, 2005.
A. Silberschatz, P. Galvin, G. Gagne: Conceptos de Sistemas Operativos (7a edición).
Willey, 2006.
A.S. Tanenbaum: Modern Operating Systems (3rd edition). Prentice-Hall, 2008.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
3
El sistema operativo como interfaz
para las aplicaciones
• Los dos papeles del sistema operativo:
UPV / EHU
MOISE
– Proporciona a las aplicaciones una interfaz
(llamadas al sistema) para el acceso a los
recursos.
– Arbitra y gestiona eficientemente el uso de los
recursos.
Qué es un recurso:
•
•
•
•
Procesadores
Memoria
Dispositivos (de E/S, relojes, comunicaciones…)
Ficheros
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
4
El sistema operativo como interfaz
para las aplicaciones
Aplicaciones
SO
UPV / EHU
MOISE
Hw
Interfaz de
llamadas al sistema
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
5
El sistema operativo como interfaz
para las aplicaciones
UPV / EHU
MOISE
• Las llamadas al sistema (system calls) proporcionan
una interfaz homogénea que abstrae las
características físicas de los recursos.
– Por ejemplo, una aplicación de reproducción de sonido
funciona de la misma forma para reproducir un archivo
sobre un disco duro o sobre una memoria flash.
• Las llamadas al sistema se utilizan como llamadas a
funciones de biblioteca.
– Su especificación debe estar bien definida (p. ej., el
man de Linux/UNIX).
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
6
UPV / EHU
MOISE
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
7
El sistema operativo como interfaz
para las aplicaciones (cont)
UPV / EHU
MOISE
• También se denominan APIs.
• 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.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
8
Modos de ejecución
UPV / EHU
MOISE
• Las instrucciones máquina pueden ser normales o
reservadas.
• Las instrucciones reservadas acceden a espacios (de
memoria y de E/S) protegidos.
• Dos modos de ejecución: normal y protegido.
• Las instrucciones privilegiadas sólo pueden
ejecutarse en modo protegido.
• Un programa se ejecuta, en principio, en modo
normal.
• La instrucción de cambio de modo es privilegiada.
• ¿Cómo pasar a modo protegido para acceder a
recursos necesarios (dispositivos de E/S, etc)?
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
9
Modos de ejecución
Cambio de modo
• Mecanismo unificado para paso de modo normal a
modo privilegiado: vector de interrupciones (VI).
UPV / EHU
MOISE
– Los servicios del sistema se implementan en espacio
protegido mediante rutinas que se direccionan a través
del VI.
• Rutinas de servicio de interrupción.
• Excepciones
• Llamadas al sistema operativo.
– Las rutinas se ejecutan bien asíncronamente
(interrupciones), bien llamadas desde el programa
(interrupciones programadas o traps).
• Mediante un instrucción especial de LM: INT
– El retorno de la rutina restaura el modo de ejecución
anterior.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
10
Threads y Procesos
• Flujo de ejecución:
UPV / EHU
MOISE
– Secuencia de valores que adopta el registro
Contador de Programa (PC) durante la ejecución
de un programa.
• 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
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
11
Threads y Procesos
Ejemplo: un proceso con tres threads
UPV / EHU
MOISE
(Extraído de Tanenbaum, 2008 © Prentice-Hall, Inc)
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
12
Ejemplo:
creación de un proceso LINUX
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
UPV / EHU
MOISE
int main (int argc, const char * argv[]) {
int pid;
printf("%d: Soy el padre!\n", getpid());
pid= fork();
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
13
Ejemplo
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
UPV / EHU
MOISE
int main (int argc, const char * argv[]) {
int pid;
printf("%d: Soy el padre!\n", getpid());
pid= fork();
Código del
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
{
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
int main (int argc, const char * argv[])
int pid;
padre (pid≠0)
}
printf("%d: Soy el padre!\n", getpid());
pid= fork();
#include <stdio.h>
if (pid == 0)
#include <unistd.h>
#include <stdlib.h>
printf("%d: Soy el hijo!\n", getpid());
int main (int argc, const char * argv[]) {
else
int pid;
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Soy el padre!\n", getpid());
printf("%d: Agur!\n", getpid());
pid= fork();
Código del hijo (pid=0)
if (pid == 0)
exit(0);
printf("%d: Soy el hijo!\n", getpid());
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
}
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>
int main (int argc, const char * argv[]) {
int pid;
int main (int argc, const char * argv[]) {
int pid;
printf("%d: Soy el padre!\n", getpid());
pid= fork();
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
printf("%d: Soy el padre!\n", getpid());
pid= fork();
if (pid == 0)
printf("%d: Soy el hijo!\n", getpid());
else
printf("%d: Soy el padre de %d\n", getpid(), pid);
printf("%d: Agur!\n", getpid());
exit(0);
}
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();
¿cuál es
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);
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
el valor de a?
16
Ejemplo:
threads en LINUX
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sched.h>
#include <wait.h>
UPV / EHU
MOISE
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_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 es el valor de a?
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
17
Threads y Procesos (cont)
UPV / EHU
MOISE
• 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
contexto reducido
• PC, SP (puntero a pila), pila
• 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
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
18
Threads y procesos
Memoria
UPV / EHU
MOISE
a
Padre
a
Hijo
fork()
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
19
Threads y procesos
Memoria
UPV / EHU
MOISE
a
Padre
Hijo
clone()
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
20
Threads y Procesos
Estados y grafo de transición
UPV / EHU
nuevo
proce so
eje cutándose
fina liza do
MOISE
pre pa rado
bloquea do
• Nota: se toma aquí el proceso como entidad de ejecución,
sin pérdida de generalidad.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
21
Control de procesos
Representación
• Bloque de Control de Procesos (PCB)
UPV / EHU
MOISE
– Identificador.
– Estado del proceso.
– Información para la planificación (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).
– Puntero a los recursos de memoria (tablas de
páginas).
– Puntero a los recursos de E/S (tabla de
descriptores).
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
22
Control de procesos
Representación
• Los PCBs se enlazan en colas
• Una cola por estado
UPV / EHU
MOISE
– Incluso para el estado ejecutándose.
– Proceso nulo: al menos un proceso preparado para
ejecución.
– Estado bloqueado: una cola por cada condición de
bloqueo.
co l a
PCB
p ri o ri d ad
i n fo
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
PCB
p ri o ri d ad
i n fo
PCB
p ri o ri d ad
i n fo
23
Control de procesos
El sistema operativo como un sistema de colas
nuevo
proceso
finalizado
cola preparados
CPU
UPV / EHU
MOISE
.
.
.
DISP1
cola disp. 1
.
.
.
.
.
.
DISPn
cola disp. n
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
.
.
.
24
Control de procesos
Planificación
UPV / EHU
MOISE
• La planificación de procesos (o threads) es la función
del sistema operativo que decide qué proceso va
entrar a ejecutándose y cuándo.
• La realiza el scheduler.
• Se elige un proceso de entre la cola de preparados
de acuerdo a un criterio:
– FCFS
– Prioridades
• Estáticas. Se asigna una prioridad al proceso cuando se
crea y no cambia durante su ejecución.
• Dinámicas. A partir de una prioridad inicial, se ajusta
durante la ejecución de acuerdo a determinados criterios
(p. ej. consumo de CPU del proceso).
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
25
Control de procesos
Planificación (cont)
• Cuándo planificar:
– Sólo cuando la CPU queda libre
UPV / EHU
MOISE
• porque el proceso ejecutándose termina o se
bloquea: sistemas no expulsores
– Además, los sistemas operativos expulsores,
sacan al proceso que está ejecutándose
• cuando ha consumido un quantum de tiempo:
– Combinado con FCFS: planificación de turno circular o
Round-Robin
• cuando otro proceso llega a preparados.
– Le da la oportunidad de ejecutarse inmediatamente.
Como veremos, combinada con prioridades estáticas
esta planificación expulsora es adecuada para tiempo
real.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
26
Cambio de contexto
UPV / EHU
MOISE
• El cambio de contexto es el conjunto de
operaciones necesarias para realizar una
transición de un proceso (o thread) a otro:
– Guardar el contexto del proceso que abandona la
CPU.
– Restaurar el contexto del proceso seleccionado por
el scheduler.
– Transferirle el control.
– Además, actualizar la representación de los
procesos en colas de PCBs.
• Implica manipular las pilas de procesos
– Se implementa en lenguaje máquina.
PBA
Cola de ejecución
UPV / EHU
BA de la Rut.
de Atención
BA
Contexto
de la Rut.
de de
Atención
PA
PB
Cola de preparados
MOISE
Pila de PA
SP
CPU
PA
Contexto
de PB
Una cola de
bloqueados (por
ejemplo)
1.
Se está ejecutando PA.
2.
Se produce una interrupción
(externa o trap).
3.
Se salva el contexto de PA.
4.
Cambio de estado de PA.
5.
Scheduler: elige a PB.
6.
Cambio de estado de PB.
7.
Manipulación del Stack Pointer
para retornar al bloque de
activación de PB.
8.
Se carga el contexto de PB en la
CPU.
9.
Retorno de la interrupción.
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 Tecnología de Computadores
28
Gestión de la memoria
UPV / EHU
MOISE
• Se refiere a la memoria principal (RAM), donde un
programa almacena su código, sus datos y su pila.
• Gran diversidad de técnicas y políticas, dependiendo
de si el programa se almacena:
– Estática o dinámicamente.
– Contiguo o en trozos.
• Algunas técnicas (paginación, memoria virtual)
requieren importante soporte hardware:
– MMU, hoy en día on-chip.
– Almacenamiento secundario (memoria virtual).
• Las técnicas más elaboradas (memoria virtual) son
incompatibles con el tiempo real.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
29
Gestión de la memoria
Técnicas
UPV / EHU
MOISE
•
•
•
•
•
•
Monitor residente
Particionado
Swapping
Paginación y segmentación
Memoria virtual
Otras: solapamientos y rutinas de enlace
dinámico
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
30
Gestión de la memoria
Monitor residente
• Para un único programa en memoria
UPV / EHU
MOISE
Sistema operativo
(monitor)
registro
barrera
Programa de
usuario
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
31
Gestión de la memoria
Particionado
• Particionado fijo (MFT)
UPV / EHU
MOISE
Sistema operativo
2 Kb
4 Kb
8 Kb
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
32
Gestión de la memoria
Particionado
• Particionado variable (MVT)
UPV / EHU
MOISE
Sistema operativo
Programa 1
Programa 2
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
33
Gestión de la memoria
Particionado
• En particionado fijo se pierde espacio dentro
de las particiones (fragmentación interna).
UPV / EHU
MOISE
– ¿Qué hacer si llega un programa nuevo y la
partición adecuada a su tamaño está ocupada?
• Encolarlo hasta que se libere.
• Ejecutarlo en una partición mayor libre.
• En particionado variable el espacio se pierde
en los huecos entre programas
(fragmentación externa).
– Tiende a aumentar (cada vez más huecos más
pequeños): degradación de la memoria.
– Compactar para recuperar espacio.
• Implica reubicación dinámica.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
34
Gestión de la memoria
Particionado
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?
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
35
Gestión de la memoria
Swapping
UPV / EHU
MOISE
• Un programa puede, durante su ejecución,
abandonar la memoria.
• Implica reubicación dinámica de programas.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
36
Gestión de la memoria
Paginación y segmentación
• Los programas se dividen en trozos
– De igual tamaño (paginación)
– De tamaño variable (segmentación)
UPV / EHU
MOISE
• Como consecuencia, un programa no aparece
contiguo en memoria.
• Dirección virtual vs dirección física.
• Las direcciones donde se almacenan los trozos se
guardan en tablas de páginas/segmentos.
– Traducción dinámica de direcciones
– Requiere importante soporte Hw:
• Unidad de gestión de memoria (MMU)
• Buffers de traducciones (TLB)
• Permite compartir páginas/segmentos entre
programas.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
37
Gestión de la memoria
Paginación
dir virtual
p
UPV / EHU
MOISE
d
CPU
d
MEM
dir física
PTBR
p
base
...
TABLA DE PAGINAS
• La tabla de páginas puede ocupar mucho espacio.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
38
Gestión de la memoria
Segmentación
TRAP
dir virtual
UPV / EHU
CPU
s
no
<
d
si
+
dir física
MEM
MOISE
STBR
s
lim
base
...
TABLA DE SEGMENTOS
• Produce fragmentación externa.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
39
Gestión de la memoria
Sistemas combinados
TRAP
dir virtual
s
p
d
CPU
si
dir física
<
UPV / EHU
MOISE
d
no
MEM
STBR
s
base
lim
base
...
...
TABLA DE PAGINAS
TABLA DE SEGMENTOS
• Varios niveles de indirección.
• El último, siempre de paginación.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
40
Gestión de la memoria
Memoria virtual
UPV / EHU
MOISE
• Se implementa sobre un sistema paginado.
• Permite la ejecución de programas no enteros.
• La referencia a una página no cargada en memoria
provoca un trap de fallo de página y la búsqueda de
la página en disco.
• Aún más soporte Hw:
–
–
–
–
Bit de validez
Trap de fallo de página
Espacio en disco (swap)
Soporte para el reemplazo de páginas
• Amplio soporte del sistema operativo:
– Política de reemplazo de páginas
– Políticas de asignación de espacio entre programas
• Introduce impredecibilidad en los tiempos de
respuesta.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
41
Gestión de la memoria
Solapamientos y enlace dinámico
• ¿Qué hacer si un programa no cabe en la RAM y no
tengo soporte de MV?
UPV / EHU
MOISE
– Se estructura el programa y se divide en trozos o
solapamientos (overlays)
• Cada solapamiento, una función
– Se añade una rutina de enlace dinámico que gestiona
la carga de las funciones en tiempo de ejecución.
– Las llamadas a funciones son ahora llamadas a la rutina
de enlace con la función y sus parámetros como
argumentos.
– Inicialmente se carga en memoria el programa
principal y la rutina de enlace.
• Modernamente los sistemas operativos añaden este
mecanismo (con otros propósitos): Dynamic Link
Libraries o Run-Time Libraries.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
42
Gestión de la entrada/salida
• Los dispositivos de entrada/salida son muy
heterogéneos:
UPV / EHU
MOISE
–
–
–
–
–
–
–
Velocidad
Representación de los datos
Protocolos
Operaciones
Unidad de transferencia (bloques, caracteres…)
Tipos de errores
Modo de tratar la E/S: Encuesta, Interrupciones,
DMA.
• Interfaz de los dispositivos unificada
mediante Controladores
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
43
Entrada/salida
Interfaz
UPV / EHU
MOISE
• Los Controladores de los dispositivos (Kdisp) ofrecen
una interfaz entre los dispositivos y el nivel de
lenguaje máquina.
• Elementos de la interfaz:
– Espacio de direcciones de E/S, que puede ser
• Memory-mapped
• Independiente del de memoria
– Operaciones de E/S mediante instrucciones máquina
• Memory-mapped: LOAD/STORE
• Espacios independientes: IN/OUT
• Las direcciones de E/S se asocian a los dispositivos
(Registros de E/S) y tienen papeles específicos:
– Registros de estado
– Registros de datos
– Registros de control
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
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 línea de interrupción
– Cuando se activa la interrupción, se ejecuta la Rutina de
Servicio que gestiona la E/S:
• Comprobación sobre Registro de Estado
• Acceso a Registro de Datos
• Acceso Directo a Memoria (DMA)
– Los dispositivos de bloques no involucran a la CPU en el
acceso a cada byte
– Se programa la operación de DMA
– Se ordena su inicio sobre un Registro de Control del KDMA
– El fin de la operación se anuncia mediante una interrupción
• La Rutina de Servicio a la Interrupción de DMA comprueba sobre
un Registro de Estado.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
45
Gestión de la entrada/salida
Manejadores de dispositivos (drivers)
UPV / EHU
MOISE
• Driver: código que monopoliza el acceso al
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.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
46
Gestión de la entrada/salida
Manejadores de dispositivos (drivers)
• Interfaz entre las Rutinas de E/S y el driver:
UPV / EHU
MOISE
– Descriptor del Dispositivo, configurado por el driver:
• Estado del dispositivo
• Modo de operación
• Tablas de conversión
• Apuntador a la cola de peticiones
• Evento asociado al driver
– IORB (Input/Output Request Block) para especificar una
petición al driver:
• Identificador del proceso cliente
• Parámetros de la petición
• Evento para sincronización con el final de la operación
• Diagnóstico de la operación (a rellenar por el driver)
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
47
Gestión de la entrada/salida
DESCRIPTOR
DISP 1
IORB
cola IORBs
infor. del
dispositivo
UPV / EHU
MOISE
TABLA DE
CANALES
Proceso i
parámetros
de la petición
diagnóstico
DESCRIPTOR
DISP 2
IORB
IORB
parámetros
de la petición
parámetros
de la petición
diagnóstico
diagnóstico
cola IORBs
infor. del
dispositivo
DESCRIPTOR
DISP 3
TABLA DE
CANALES
Proceso j
cola IORBs
infor. del
dispositivo
Ejemplo de estado de la E/S
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
48
Gestión 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
Aplicación
Aplicación
Aplicación
Aplicación
Dispositivo
Dispositivo
Dispositivo
Dispositivo
(a) E/S sin
buffer
(b) E/S con un
buffer
MOISE
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
(c) E/S con doble
buffer
(d) E/S con bufer
circular
49
Gestión de la entrada/salida
El sistema de ficheros
UPV / EHU
MOISE
• El desarrollo de las memorias tipo flash
posibilita que incluso los dispositivos más
pequeños proporcionen un sistema de
ficheros.
• Las abstracciones del modelo de E/S
proporcionan independencia entre el
sistema de ficheros y el dispositivo soporte.
– Ejemplo: FAT16 sobre floppy/HD/flash
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
50
Gestión de la entrada/salida
El sistema de ficheros
• Características del sistema de ficheros:
– Permanencia
– Organización estructurada
UPV / EHU
MOISE
• En árbol
• Nombre de un fichero: relativo-absoluto
• Algunos ficheros son directorios
– Atributos de un fichero
•
•
•
•
Tiempos de creación, Acceso…
Derechos de acceso
Tamaño
etc
– El contenido se organiza en registros lógicos
– Acceso concurrente a ficheros
• Punteros independientes
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
51
Gestión de tiempos y
temporización
UPV / EHU
MOISE
• El tiempo es un recurso peculiar.
• La gestión del tiempo es un componente
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
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
52
Gestión de tiempos y temporización
Relojes
• Reloj de tiempo real (RTC)
– Siempre en funcionamiento. Requiere
alimentación propia.
UPV / EHU
MOISE
• Reloj Hardware
–
–
–
–
Se inicializa con el RTC en la inicialización.
Produce las interrupciones de reloj.
Suele ser programable (PIT, p. ej., Intel 8253).
Puede tener otras funciones (p. ej., refresco de la
DRAM).
• Reloj del sistema
– Es un reloj software implementado por la ISR del
PIT.
– Cuenta interrupciones y las expresa en unidades
de tiempo.
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
53
El tiempo en Linux
•Comando para consultar el reloj del sistema:
– date
•Ajuste del reloj:
UPV / EHU
MOISE
– adjtimex (sólo puede ejecutarla root)
•Cronómetro de alta resolución:
– gettimeofday()
#include <sys/time.h>
struct timeval t0, t1;
gettimeofday(&t0, NULL);
…
gettimeofday(&t1, NULL);
printf("Duracion: %d,%d segundos\n",
t1.tv_sec-t0.tv_sec, t1.tv_usec-t0.tv_usec);
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
54
Gestión de tiempos y temporización
Rutina de servicio de la interrupción del reloj
• Funciones:
UPV / EHU
MOISE
– Soporte del reloj software (contador de unidades
de tiempo, p. ej., segundos)
• 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
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
55
Gestión de tiempos y temporización
Rutina de servicio de la interrupción del reloj
Ejemplo
ISR_del_reloj ()
{
...
ticks_por_segundo−−;
intervalo_CPU++;
UPV / EHU
MOISE
if (ticks_por_segundo== 0) {
actualiza_tiempo_del_sistema();
señalar_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());
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
56
Gestión de tiempos y temporización
Gestión de temporizadores
• El sistema proporciona un servicio de temporización:
UPV / EHU
MOISE
– Un proceso se duerme durante n unidades de tiempo.
– El sistema gestiona cuándo despertar a cada proceso
dormido.
• Hay que definir la resolución del temporizador:
– A mayor resolución más carga para el sistema.
• Modelo:
– Los procesos ponen su petición de temporización
(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 Tecnología de Computadores
57
Gestión de tiempos y temporización
Implementación
Peticiones
temporización
UPV / EHU
13
MOISE
EVENTO_P
Gestor
de
tiempos
EVENTO_P
P
EVENTO_SEGUNDO
ISR
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
58
Gestión de tiempos y temporización
Implementación
Sólo hay que
consultar la
primera
UPV / EHU
MOISE
13
12
23
13
23
Ordenar
12
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
23
23
Sólo hay que
decrementar la
primera
12
Relativo
a la
anterior
1
10
0
59
Gestión de tiempos y temporización
Implementación
UPV / EHU
MOISE
Gestor_tiempos ()
{
...
while (TRUE) {
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−−;
}
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
60
Ejemplo:
uso de temporizadores en Unix
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void fnula() {return;}
UPV / EHU
unsigned esperar_tiempo (unsigned seg) {
unsigned s;
MOISE
s= alarm(seg);
pause();
return(s);
}
int main (int argc, const char * argv[]) {
int i;
unsigned t;
signal(SIGALRM, fnula);
for (i=1; i<5; i++) {
printf("espera (%d segundos)\n", i);
t= esperar_tiempo(i);
printf("despertado (%d)\n", t);
}
}
Konputagailuen Arkitektura eta Teknologia Saila
Departamento de Arquitectura y Tecnología de Computadores
61