Publicado el 15 de Octubre del 2018
1.199 visualizaciones desde el 15 de Octubre del 2018
135,7 KB
72 paginas
Creado hace 16a (25/02/2009)
ditdit
UPM
Programación de bajo nivel
Juan Antonio de la Puente
DIT/UPM
Transparencias basadas en el capítulo 15 del libro de A. Burns y A. Wellings Real-Time Systems and Programming Languages, 3ª edición (2001)
Objetivos
Los sistemas de tiempo real suelen tener dispositivos de
entrada y salida especiales
Los manejadores de dispositivos forman parte del
software de aplicación
Veremos cómo controlar los dispositivos de hardware en
un lenguaje de alto nivel
Veremos también cómo incluir los manejadores de
dispositivos en el modelo de tareas de tempo real
Y cómo tener en cuenta las características del núcleo de
ejecución en el análisis de tiempos de respuesta
25/02/2009
Programación de bajo nivel
1
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Índice
Mecanismos de hardware para entrada y salida y
manejadores de dispositivos
Mecanismos de bajo nivel en Ada
– cláusulas de representación
– manejo de interrupciones
– ejemplo
– código de máquina
Programación de dispositivos en C
Planificación con manejadores de dispositivos
25/02/2009
Programación de bajo nivel
2
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Arquitecturas de entrada-salida
datos
datos
memoria
CPU
dispositivo
dispositivo
Bus de E/S separado del
de memoria
direcciones
direcciones
datos
CPU
memoria
dispositivo
dispositivo
direcciones
Bus único para E/S y memoria
(memory mapped)
25/02/2009
Programación de bajo nivel
3
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Interfaz con los dispositivos
de entrada y salida
Los dispositivos de entrada-salida se conectan a los otros
elementos del computador mediante controladores que
presentan una interfaz homogénea
El procesador intercambia datos e información de control
y estado con los controladores mediante registros de
hardware
La forma concreta de hacerlo depende de la arquitectura
de entrada y salida
25/02/2009
Programación de bajo nivel
4
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Entrada y salida en lenguaje de máquina
Bus de E/S separado
Registros en espacio de
direcciones de E/S
(direcciones de puerto)
Bus de memoria
Registros en el espacio de
direcciones de memoria
Se leen y escriben mediante
Se leen y escriben mediante
instrucciones de transferencia de
datos
mov r, address
mov address, r
instrucciones de E/S
específicas
in r, port
out r, port
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Ejemplo: Intel 486 & Pentium
Ejemplo: M 68000, PowerPC
25/02/2009
Programación de bajo nivel
5
Sincronización
Por consulta (status driven)
El procesador interroga al
controlador para comprobar el
estado del dispositivo.
Operaciones
– test
– control
– E/S
Complicado e ineficiente
A veces es la única opción
(en sistemas muy críticos es
posible que no se permita
usar interrupciones)
Por interrupción (interrupt driven)
El controlador presenta una
interrupción en determinadas
circunstancias
Un manejador de interrupción se
encarga de tomar la acción
adecuada
Varios tipos
– controlado por programa
– acceso directo a memoria
– controlado por canal
Puede ser difícil estimar el tiempo
de computo
– robo de ciclos al procesador
25/02/2009
Programación de bajo nivel
6
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Mecanismos de interrupción (1)
Cambio de contexto
– se guarda el estado del procesador antes de la interrupción
– se carga el estado del manejador de interrupción
– cuando se completa el manejador, se restaura el estado anterior
Soporte de hardware
– básico:
– parcial: PC y PSW (registro de estado)
– completo: todo el contexto
sólo se guarda el contador de programa (PC)
– Puede hacer falta hacer una parte en software
25/02/2009
Programación de bajo nivel
7
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Mecanismos de interrupción (2)
Identificación del dispositivo que interrumpe
– por vector de interrupción: array asociado al hardware de
interrupción que contiene direcciones de memoria con
manejadores de interrupción y otros datos (p.e. palabra de estado)
– por estado: cada interrupción tiene una palabra de estado
asociada que indica cuál es el origen de la misma
– por consulta: un manejador general consulta a los dispositivos
para averiguar cuál ha interrumpido
Identificación de la causa de la interrupción
– consultando el estado del dispositivo
– con diferentes interrupciones para el mismo dispositivo
25/02/2009
Programación de bajo nivel
8
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Mecanismos de interrupción (3)
Control de interrupciones
Las interrupciones de un dispositivo pueden estar
permitidas (enabled) o inhibidas (disabled)
– mediante indicadores (flags) en registros de estado
– mediante una máscara (mask), con un bit por dispositivo
– mediante un nivel de prioridad de hardware
» cada dispositivo tiene un nivel asociado
» si el nivel del procesador es mayor o igual que el de un dispositivo, no
se aceptan interrupciones de éste
Control de prioridad
– a veces se asocia una prioridad a cada fuente de interrupciones
– la prioridad indica la urgencia relativa de la interrupción
– puede ser estática o dinámica
– normalmente está relacionada con los niveles de prioridad del
procesador
25/02/2009
Programación de bajo nivel
9
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Ejemplo de sistema de entrada y salida
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Suponemos una arquitectura con E/S por bus de
memoria, con interrupciones (como la M68000)
Cada dispositivo tiene dos tipos de registros
– Registros de control y estado (CSR), que contienen información
sobre el dispositivo y el control de interrupciones
– Registros de datos (DBR), que contienen los datos que se
transmiten al dispositivo o desde él
Un mismo dispositivo puede tener varios CSR o DBR
Cuando se produce una interrupción, se guarda el estado
(PC y PSW) en la pila, y se carga el nuevo estado del
vector de interrupción correspondiente
– Las interrupciones y el procesador tienen asociada una prioridad
– Una interrupción puede desalojar a un manejador con prioridad
más baja
25/02/2009
Programación de bajo nivel
10
Estructura de los registros
CSR
15
12
14
13
errors
11
B
10
8
9
unit
7
6
R I
2
4
3
5
1
reserved function
0
E
B device busy
R device ready / done
I
E device enable
interrupt enable
15
14
13
11
12
unused
10
9
8
7
6
5
2
1
0
4
3
data
15
14
13
12
11
mode
8
9
10
unused
7
6
5
priority
4
3
2
1
0
condition codes
DBR
PSW
25/02/2009
Programación de bajo nivel
11
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Manejadores de dispositivos
Para realizar manejadores de dispositivos hace falta:
– Un modelo abstracto de la gestión de dispositivos
» procesos sincronizados por interrupciones
– Manipular registros de hardware y direcciones
» un registro se puede representar como una variable, un objeto o un
canal de comunicación
– Enlazar interrupciones con código. Algunas posibilidades son:
» llamada a procedimiento
» activación de proceso esporádico
» suceso asíncrono
» sincronización con variable de condición
» mensaje
Todos estos métodos (excepto la llamada a procedimiento)
requieren un cambio de contexto
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
25/02/2009
Programación de bajo nivel
12
Manejadores de dispositivos en Ada
Modelo abstracto de dispositivos: tareas en hardware
Las tareas que usan el dispositivo se tienen que
comunicar y sincronizar con las tareas de hardware
– acceso a registros de hardware
– sincronización con interrupciones
Manejador: subsistema que controla el acceso al
dispositivo
– objeto protegido: abstracción de comunicación y sincronización
– registros como variables en memoria
– interrupciones asociadas a procedimientos protegidos
25/02/2009
Programación de bajo nivel
13
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Esquema general
software
hardware
manejador
interrupción
tarea
cliente
registros
25/02/2009
Programación de bajo nivel
14
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Mecanismos de bajo nivel en Ada
Ada 95 tiene varios mecanismos de bajo nivel que
permiten acceder a registros, direcciones e interrupciones
– cláusulas de representación
» permiten especificar la representación de tipos y objetos en la
arquitectura de hardware
representación de atributos (tamaño, dirección, alineación)
representación de tipos enumerados
representación de registros
– manejadores de interrupciones
» permiten asociar una interrupción a un procedimiento protegido
– subprogramas en lenguaje de máquina
» permiten un control total sobre la arquitectura de hardware
25/02/2009
Programación de bajo nivel
15
6
0
0
2
-
1
0
0
2
e
n
e
u
P
a
t
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Cláusulas de representación de atributos
Tamaño
type Data_Register is mod 2**8;
for Data_Register'Size use 16;
-- los objetos de tipo Data_Register ocupan 16 bits
Dirección
Data_Buffer : Data_Register;
for Data_Buffer'Address
use System.Storage_Elements.To_Address(8#177560
Comentarios de: Programación de bajo nivel (0)
No hay comentarios