Publicado el 22 de Abril del 2019
2.086 visualizaciones desde el 22 de Abril del 2019
396,6 KB
18 paginas
Creado hace 5a (24/01/2019)
1 Interrupciones, DMA y programa
en memoria
Introducción a los Sistemas Operativos,
2018-2019
Pablo González Nalda
Depto. de Lenguajes y Sistemas Informáticos
EU de Ingeniería de Vitoria-Gasteiz, UPV/EHU
30 de enero de 2019
Contenidos de la presentación
Contenidos
Von Neumann
E/S (I/O)
1 Von Neumann
2 E/S (I/O)
2 / 18
Contenidos
Von Neumann
E/S (I/O)
1 Von Neumann
2 E/S (I/O)
3 / 18
Arquitectura Von Neumann
Contenidos
Von Neumann
E/S (I/O)
La Arquitectura Von Neumann es la habitual en los ordenadores.
El procesador puede acceder a la memoria directamente con
una instrucción en ensamblador: http://www.c-jump.
com/CIS77/ASM/Addressing/lecture.html
4 / 18
Arquitectura de la placa base
Contenidos
Von Neumann
E/S (I/O)
La arquitectura de la placa base se compone de dos puentes. El
Northbridge gestiona el acceso por parte de la CPU a la RAM y
al PCI-E (tarjeta gráfica) 1.
El Southbridge gestiona el acceso por parte de la CPU a los PCI
y el restos de dispositivos de E/S 2.
1
2
https://en.wikipedia.org/wiki/Northbridge_(computing)
https://en.wikipedia.org/wiki/Southbridge_(computing)
5 / 18
Arquitectura de la placa base: puente norte
Contenidos
Von Neumann
E/S (I/O)
6 / 18
Arquitectura de la placa base puente sur
Contenidos
Von Neumann
E/S (I/O)
7 / 18
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
1 Von Neumann
2 E/S (I/O)
8 / 18
E/S por registros
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
La E/S (I/O) se puede realizar mediante el uso de registros:
datos, direcciones, estado y control. Pueden necesitar
instrucciones específicas de ensamblador o estar mapeados en
memoria.
Datos lectura o escritura del dato en movimiento
desde/hacia el dispositivo.
Direcciones Ubicación del dato en el dispositivo.
Estado Sólo lectura, con información del estado del
dispositivo (disponible/ocupado, error, etc.).
Control Sólo escritura, para indicar que el dato y la
dirección están escritos y se debe realizar la
operación de E/S.
9 / 18
E/S por Espera Activa (Polling)
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
La E/S por Espera Activa consiste en un ciclo que ejecuta el
procesador, en el que consulta un registro o posición de
memoria hasta que el dispositivo cambia el valor del registro y
se puede hacer la E/S.
1 while (lee_estado(disp1) == NO_DISPONIBLE) {
; // ninguna operaci’on
}
4 // se supone que el dispositivo se encuentra disponible
coloca_dato(disp1, dato_por_escribir);
// bit de escritura en el registro de control
7 realiza_escritura(disp1);
https://en.wikipedia.org/wiki/Polling_
(computer_science)
10 / 18
E/S por Interrupción
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
La E/S por Interrupción se lleva a cabo mediante una se ñal
hardware que ejecuta un código de forma asíncrona.
1 Un dispositivo necesita atención, por ejemplo el teclado, ratón, disco,
tarjeta de red. . . y produce una petición de interrupción (IRQ).
2 El dispositivo activa un bit hardware que llega hasta el controlador de
interrupciones (CI) (dentro de la CPU).
3 El CI asocia esa activación con un número n de interrupción, que
servirá para indexar el Vector de Interrupciones (VI). El VI es la tabla de
rutinas de código (funciones en C o en ensamblador) que sirve para
gestionar las IRQ de todos los controladores hardware.
4 El CI interrumpe la ejecución del programa en curso que ocupa la CPU
(guardando los registros de la CPU y el contador de programa o PC) y
ejecuta el código de VI[n] .
5 La rutina atiende al dispositivo, reparte la información y al terminar
restaura el programa que se estaba ejecutando.
https://en.wikipedia.org/wiki/Interrupt
11 / 18
DMA, Acceso Directo a Memoria
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
El DMA (Acceso Directo a Memoria) es un sistema que realiza
operaciones de movimiento de datos entre RAM y dispositivos
mapeados en memoria. El DMA es programado por la CPU y la
descarga de trabajo.
Las CPUs y el DMA deben compartir el bus del sistema, y por
lo tanto el DMA debe solicitar el uso del bus (BRQ,
BusReest) y la CPU concederlo (BGN, BusGraNt).
La concesión y transferencia se realiza por ráfagas (bursts).
12 / 18
Interrupciones originadas en el soware
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
Los errores de soware provocan una interrupción soware de
forma síncrona (trap3), como salirse de una tabla. El propio
programa produce la IRQ con una instrucción específica de
lenguaje máquina.
También se denominan trap a los errores generados por el
hardware, es decir, el hw produce la IRQ. Ejemplos: división por
cero, instrucción de código máquina errónea, acceso a memoria
incorrecto.
Hay una gran variedad en la nomenclatura y clasificación:
https://stackoverflow.com/questions/3149175/
what-is-the-difference-between-trap-and-interrupt
3
Trap: https://en.wikipedia.org/wiki/Trap_(computing)
13 / 18
Interrupción del reloj
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
IRQ del reloj: un dispositivo programable4 realiza una
interrupción hardware periódica (cada centésima de segundo,
hasta 1 µs) con el objetivo de lanzar operaciones de
mantenimiento y gestión del sistema.
Esa IRQ provoca la ejecución de la Rutina de atención al reloj,
indexada en el Vector de Interrupciones. Cada vez que se
produce esa IRQ lo llamamos un tick de reloj y el Sistema
Operativo realiza operaciones periódicas.
El tiempo en Unix5 es un entero con signo de 32 bits que
cuenta el número de segundos desde 1-1-1970. El último
segundo con este sistema, el 231 − 1 será en 2038.
https://wiki.osdev.org/Time_And_Date y https://lwn.net/Kernel/LDD3/ (capítulo 7)
4
5
https://en.wikipedia.org/wiki/Programmable_interval_timer
https://en.wikipedia.org/wiki/Unix_time
14 / 18
Elementos en memoria: código común y
reutilizable
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
Tendremos en memoria el código dependiente del hardware
común a todos los programas, que por ello se puede mantener
en memoria y ser reutilizable: es el origen del SO.
El Vector de Interrupciones (VI)
Rutinas de atención a la interrupción de reloj
Rutinas de error hardware y soware
Rutinas Dispersoras (integran diferentes operaciones de
una misma IRQ)
Rutinas de atención a interrupciones de los dispositivos
Rutinas de E/S
15 / 18
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
Elementos en memoria: el programa
Y del programa 6 7 8:
Variables globales (fuera de funciones) y estáticas: data (si
no están inicializadas, en bss segment)
Constantes: Código (text segment en x86) y data
Memoria reservada mediante ubicación dinámica:
montículo o heap
Parámetros y variables locales de una función, incluyendo
punteros (pila o stack)
Código (próxima instrucción de Lenguaje Máquina
apuntada por el registro PC (Contador de Programa))
Rutinas de librería
6
7
https://www.geeksforgeeks.org/memory-layout-of-c-program/
https://www.codeproject.com/Articles/76153/
Six-important-NET-concepts-Stack-heap-value-types
https://stackoverflow.com/questions/14588767/
8
where-in-memory-are-my-variables-stored-in-c
16 / 18
¿Más preguntas?
Contenidos
Von Neumann
E/S (I/O)
E/S por registros
E/S por Espera Activa
E/S por Interrupción
DMA
Interrupciones originadas
en el soware
Interrupción del reloj
Elementos en memoria
¿Más preguntas?
17 / 18
1 Interrupciones, DMA y programa
en memoria
Introducción a los Sistemas Operativos,
2018-2019
Pablo González Nalda
Depto. de Lenguajes y Sistemas Informáticos
EU de Ingeniería de Vitoria-Gasteiz, UPV/EHU
30 de enero de 2019
Comentarios de: 1 Interrupciones, DMA y programa en memoria (0)
No hay comentarios