PDF de programación - 1 Interrupciones, DMA y programa en memoria

Imágen de pdf 1 Interrupciones, DMA y programa en memoria

1 Interrupciones, DMA y programa en memoriagráfica de visualizaciones

Publicado el 22 de Abril del 2019
904 visualizaciones desde el 22 de Abril del 2019
396,6 KB
18 paginas
Creado hace 324d (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
  • Links de descarga
http://lwp-l.com/pdf15770

Comentarios de: 1 Interrupciones, DMA y programa en memoria (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad