Excepciones e Interrupciones Cecilia Hernández
Descripción <ul><li>Excepciones e interrupciones </li></ul><ul><ul><li>Tipo especial de transferencia de control </li></ul...
Esquema
Diferencias  <ul><li>Interrupciones </li></ul><ul><ul><li>Manejan eventos  asincrónicos  externos al procesador </li></ul>...
Excepciones <ul><li>Pueden ocurrir en cualquier etapa en el pipeline, pero no WB </li></ul><ul><ul><li>Durante IF : fallo ...
Excepciones precisas <ul><li>Si excepción ocurre en instrucción  i  entonces </li></ul><ul><ul><li>Instrucciones i-1, i-2,...
Idea básica del manejo de excepciones precisas <ul><li>Cuando la excepción ocurre </li></ul><ul><ul><li>Forzar una instruc...
Manejando excepciones <ul><li>Cuando una excepción ocurre </li></ul><ul><ul><li>Dirección almacenada en PC es salvada en E...
Registro Causa vs Vector de Interrupciones Reg Estado Reg Causa Reg Estado Excepción Reg Causa MIPS Vector Interrupciones ...
Manejando excepciones (cont) <ul><li>SO salva el estado del proceso (registros y punteros a memoria) </li></ul><ul><li>SO ...
Manejando excepciones precisas (cont) <ul><li>Excepciones deben ser manejadas en el orden de instrucciones </li></ul><ul><...
Manejo excepciones en MIPS <ul><li>Registros especiales accesados por instrucciones  </li></ul><ul><ul><li>mfc0, mtc0 (Cop...
Llamadas a sistema <ul><li>Debe prevenir que usuario se comunique directamente con el dispositivo de E/S </li></ul><ul><li...
Interrupciones y excepciones en Intel 80386 <ul><li>Fuentes de interrupciones </li></ul><ul><ul><li>Enmascarables, pin INT...
Animación de Interrupción HW mov ax, (115) mov ax, (115) ---------------- Jmp 200 100 200 015 200 210 200 mov sp, 008 iret...
Animación de Interrupción HW 100 200 015 201 210 200 mov sp, 008 iret mov ax, (115) ---------------- Jmp 200 inc (115) ---...
xxx Animación de Interrupción HW 100 200 015 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (...
Animación de Interrupción HW 200 100 200 015 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (...
Animación de Interrupción HW 100 200 015 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
201 Animación de Interrupción HW 100 200 014 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (...
Animación de Interrupción HW 100 200 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---...
Animación de Interrupción HW 100 200 013 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
200 0 Animación de Interrupción HW 100 013 100 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (11...
mov sp, 008 Animación de Interrupción HW 100 000 013 100 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 2...
Animación de Interrupción HW 100 000 013 100 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Animación de Interrupción HW 100 000 013 101 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Animación de Interrupción HW 100 000 008 101 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Animación de Interrupción HW 100 000 008 101 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Animación de Interrupción HW 100 000 008 102 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Animación de Interrupción HW 100 000 009 102 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Animación de Interrupción HW 100 000 009 210 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Animación de Interrupción HW 100 000 010 210 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115)...
Excepciones <ul><li>Animación interrupción SW (ejecutando int n)  http://www.inf.udec.cl/~jlopez/VISUALIZACION/JAVA/EDANIM...
Upcoming SlideShare
Loading in...5
×

Exc Int

1,304

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,304
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Exc Int

  1. 1. Excepciones e Interrupciones Cecilia Hernández
  2. 2. Descripción <ul><li>Excepciones e interrupciones </li></ul><ul><ul><li>Tipo especial de transferencia de control </li></ul></ul><ul><ul><ul><li>Como llamadas no programadas </li></ul></ul></ul><ul><ul><li>Alteran la ejecución normal de un programa </li></ul></ul><ul><ul><ul><li>Manejar eventos externos </li></ul></ul></ul><ul><ul><ul><li>Reportar errores o condiciones excepcionales ocurridos durante ejecución de programa </li></ul></ul></ul>
  3. 3. Esquema
  4. 4. Diferencias <ul><li>Interrupciones </li></ul><ul><ul><li>Manejan eventos asincrónicos externos al procesador </li></ul></ul><ul><ul><ul><li>Llegada de un paquete por interfaz de red </li></ul></ul></ul><ul><ul><ul><li>Se chequean a cada ciclo para ejecutar insterrupciones pendientes </li></ul></ul></ul><ul><ul><ul><li>En pipelining, si una instrucción ocurre, no se busca la siguiente instrucción, se resetea pipeline y se atiende interrupción </li></ul></ul></ul><ul><li>Excepciones </li></ul><ul><ul><li>Manejan condiciones detectadas por el procesador durante la ejecución del programa, sincrónicas </li></ul></ul><ul><ul><ul><li>División por cero, violación de memoria, traps (interrupciones software), etc </li></ul></ul></ul>
  5. 5. Excepciones <ul><li>Pueden ocurrir en cualquier etapa en el pipeline, pero no WB </li></ul><ul><ul><li>Durante IF : fallo de página </li></ul></ul><ul><ul><li>Durante ID : opcode ilegal </li></ul></ul><ul><ul><li>Durante EXE: división por 0 </li></ul></ul><ul><ul><li>Durante MEM: fallo de página, violación de acceso a Memoria </li></ul></ul>
  6. 6. Excepciones precisas <ul><li>Si excepción ocurre en instrucción i entonces </li></ul><ul><ul><li>Instrucciones i-1, i-2, etc, terminan normalmente </li></ul></ul><ul><ul><li>Instrucciones i+1, i+2, etc, que están en pipeline se reejecutan después que se atienda excepción </li></ul></ul>
  7. 7. Idea básica del manejo de excepciones precisas <ul><li>Cuando la excepción ocurre </li></ul><ul><ul><li>Forzar una instrucción “trap” en el próximo IF </li></ul></ul><ul><ul><ul><li>Transfiere el control a una parte conocida en el SO </li></ul></ul></ul><ul><ul><li>Desabilitar escrituras para todas las instrucciones </li></ul></ul><ul><ul><ul><li>Que causó excepción y las siguientes </li></ul></ul></ul><ul><ul><li>Cuando se produce excepción SO salva el PC de la instrucción que causó excepción </li></ul></ul><ul><ul><li>Después que se maneja excepción una instrucción “return from trap” recupera PC </li></ul></ul>
  8. 8. Manejando excepciones <ul><li>Cuando una excepción ocurre </li></ul><ul><ul><li>Dirección almacenada en PC es salvada en EPC (Exception Program Counter) registro no visible a la ISA </li></ul></ul><ul><ul><li>Transfiere control a SO </li></ul></ul><ul><li>2 tipos de manejo de excepciones </li></ul><ul><ul><li>Excepciones tambien pueden ser interrupciones (excepciones asincrónicas) </li></ul></ul><ul><ul><li>Registrar causa de excepción en “Registro Causa” </li></ul></ul><ul><ul><ul><li>MIPS </li></ul></ul></ul><ul><ul><li>Transfiere a la rutina de manejo de excepción de acuerdo a la causa de la excepción. </li></ul></ul><ul><ul><ul><li>A esto se denomina normalmente “vector de interrupciones” </li></ul></ul></ul><ul><ul><ul><li>Intel </li></ul></ul></ul>
  9. 9. Registro Causa vs Vector de Interrupciones Reg Estado Reg Causa Reg Estado Excepción Reg Causa MIPS Vector Interrupciones Intel 80000180hex Chequear y saltar Rutina atención Vector Interrupciones Rutinas de atención dir rutina 1. Salvar PC 2. Desabilitar exc 3. Modo nucleo 4. Ejecutar rutina atención 5. Repuperar PC 6. Modo usuario
  10. 10. Manejando excepciones (cont) <ul><li>SO salva el estado del proceso (registros y punteros a memoria) </li></ul><ul><li>SO ejecuta rutina de manejo de excepción </li></ul><ul><ul><li>Puede decidir terminar proceso o realizar algo en favor de proceso (syscalls, llamadas a sistema) </li></ul></ul><ul><li>Retorna a proceso en ejecución </li></ul><ul><ul><li>Recupera estado y PC </li></ul></ul>
  11. 11. Manejando excepciones precisas (cont) <ul><li>Excepciones deben ser manejadas en el orden de instrucciones </li></ul><ul><ul><li>Ejemplo </li></ul></ul><ul><ul><ul><li>Instrucción i comienza en t </li></ul></ul></ul><ul><ul><ul><li>Instrucción i+1 comienza en t+1 </li></ul></ul></ul><ul><ul><ul><li>Ocurre excepción en MEM ( t + 3 ) para i </li></ul></ul></ul><ul><ul><ul><li>Ocurre excepción en IF ( t + 1 ) para i+1 </li></ul></ul></ul><ul><ul><ul><li>Excepción de i debe ser tratada antes de excepción de i+1 </li></ul></ul></ul>
  12. 12. Manejo excepciones en MIPS <ul><li>Registros especiales accesados por instrucciones </li></ul><ul><ul><li>mfc0, mtc0 (Coprocesador 0 para instrucciones enteras, Coprocesador 1 para instrucciones punto flotante) </li></ul></ul><ul><li>Registro Count: se incrementa a razón fija (en SPIM cada 10ms) </li></ul><ul><li>Cuando registro Count == registro Compare, se produce una interrupción </li></ul>
  13. 13. Llamadas a sistema <ul><li>Debe prevenir que usuario se comunique directamente con el dispositivo de E/S </li></ul><ul><li>Usuarios deben ser capaces de acceder a servicios de dispositivos de E/S </li></ul><ul><li>SO se encarga de requerimiento de usuario en forma segura mediante Llamada a Sistema </li></ul><ul><ul><li>Programa usuario pide servicio a SO mediante llamada a sistema </li></ul></ul><ul><ul><li>Se salva estado programa de usuario en ejecución </li></ul></ul><ul><ul><li>Se cambia a modo protegido (un bit en registro estado de CPU) </li></ul></ul><ul><ul><li>Se ejecuta rutina de servicio </li></ul></ul><ul><ul><li>Se recupera estado proceso de usuario </li></ul></ul><ul><ul><li>Se retorna a ejecución a proceso de usuario cambiando a modo usuario </li></ul></ul>
  14. 14. Interrupciones y excepciones en Intel 80386 <ul><li>Fuentes de interrupciones </li></ul><ul><ul><li>Enmascarables, pin INTR </li></ul></ul><ul><ul><li>No enmascarables, pin NMI </li></ul></ul><ul><li>Fuentes excepciones </li></ul><ul><ul><li>Detectada por procesador. Fallas, traps y abortos </li></ul></ul><ul><ul><li>Programadas. Intrucciones INT n. También llamadas interrupciones software </li></ul></ul>
  15. 15. Animación de Interrupción HW mov ax, (115) mov ax, (115) ---------------- Jmp 200 100 200 015 200 210 200 mov sp, 008 iret xxx inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT Operación CPU empieza en IF IP apunta a Instrucción a ejecutar mov ax,(115) IP++
  16. 16. Animación de Interrupción HW 100 200 015 201 210 200 mov sp, 008 iret mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ Timer interrumpe en IF, pero no se atiende hasta terminar ejecución inst actual Int timer pendiente
  17. 17. xxx Animación de Interrupción HW 100 200 015 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ mov ax,(115) Int timer pendiente
  18. 18. Animación de Interrupción HW 200 100 200 015 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ mov ax,(115) xxx Atención Interrupción mov (SP), F dec SP mov (SP), IP dec SP mov IP, (000) cli
  19. 19. Animación de Interrupción HW 100 200 015 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ mov ax,(115) xxx Atención Interrupción mov (SP), F dec SP mov (SP), IP dec SP mov IP, (000) cli 200 014
  20. 20. 201 Animación de Interrupción HW 100 200 014 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ mov ax,(115) xxx Atención Interrupción mov (SP), F dec SP mov (SP), IP dec SP mov IP, (000) cli 200
  21. 21. Animación de Interrupción HW 100 200 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ mov ax,(115) xxx Atención Interrupción mov (SP), F dec SP mov (SP), IP dec SP mov IP, (000) cli 200 201 014 013
  22. 22. Animación de Interrupción HW 100 200 013 201 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ mov ax,(115) xxx Atención Interrupción mov (SP), F dec SP mov (SP), IP dec SP mov IP, (000) cli 200 201 100 Vector 000 Rutina atención timer
  23. 23. 200 0 Animación de Interrupción HW 100 013 100 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ mov ax,(115) xxx Atención Interrupción mov (SP), F dec SP mov (SP), IP dec SP mov IP, (000) cli 200 201
  24. 24. mov sp, 008 Animación de Interrupción HW 100 000 013 100 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Rutina atención timer
  25. 25. Animación de Interrupción HW 100 000 013 100 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Rutina atención timer 101 mov sp,008
  26. 26. Animación de Interrupción HW 100 000 013 101 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Rutina atención timer mov sp, 008 008
  27. 27. Animación de Interrupción HW 100 000 008 101 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Rutina atención timer mov sp, 008 iret
  28. 28. Animación de Interrupción HW 100 000 008 101 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Rutina atención timer 102 iret
  29. 29. Animación de Interrupción HW 100 000 008 102 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Retorno Interrupción inc SP mov IP, (SP) inc SP mov F, (SP) iret 009
  30. 30. Animación de Interrupción HW 100 000 009 102 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Retorno Interrupción inc SP mov IP, (SP) inc SP mov F, (SP) iret 210
  31. 31. Animación de Interrupción HW 100 000 009 210 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Retorno Interrupción inc SP mov IP, (SP) inc SP mov F, (SP) iret 010
  32. 32. Animación de Interrupción HW 100 000 010 210 210 200 mov sp, 008 iret xxx mov ax, (115) ---------------- Jmp 200 inc (115) ---------------- Jmp 210 IF ID EXE MEM WB INT IP++ 200 201 Retorno Interrupción inc SP mov IP, (SP) inc SP mov F, (SP) iret 200
  33. 33. Excepciones <ul><li>Animación interrupción SW (ejecutando int n) http://www.inf.udec.cl/~jlopez/VISUALIZACION/JAVA/EDANIM_PROYECTO/Demos/EDANIMDEMO-arq/ </li></ul><ul><li>Manejando excepciones del reloj en XSPIM </li></ul><ul><ul><li>Bajar de página del curso links xspim-excep.tar y probar en Lab </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×