miércoles, 28 de agosto de 2013

Conceptos de interrupciones y llamadas a servicios del sistema.

Ya que un procesador no puede procesar simultáneamente varios trozos de información (procesa un trozo de información por vez), un programa que está siendo ejecutado puede, gracias al pedido de interrupción, ser momentáneamente suspendido mientras se produce una interrupción. El programa interrumpido puede continuar ejecutándose luego. Existen 256 direcciones de interrupción diferentes.
Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa.
Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.

Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.
Un dispositivo periférico puede generar una señal eléctrica llamada interrupción que modifica ciertas banderas que se encuentran en el CPU. La detección de una interrupción es parte del ciclo de instrucción. En cada ciclo de instrucción, el CPU chequea las banderas hardware para ver si algún dispositivo necesita atención.
Las interrupciones generadas por los dispositivos periféricos son generalmente asíncronas con respecto al programa que se está ejecutando. Un evento es asíncrono a una entidad si el momento cuando ocurre no está determinado por la entidad. Las interrupciones no siempre ocurren en el mismo punto dentro de la ejecución de un programa. En contraste, un evento de error como la división por cero es síncrono en el sentido de que siempre ocurre durante la ejecución de una instrucción particular si el mismo dato es presentado a la instrucción.

Las rutinas del Sistema de Operación llamadas manejadores de dispositivos usualmente manejan las interrupciones generadas por el dispositivo. Los Sistemas de Operación usan interrupciones para implementar el tiempo compartido. Tienen un dispositivo llamado timer que genera una interrupción después de un intervalo específico de tiempo. El Sistema de Operación inicializa el timer antes de actualizar el Program Counterpare ejecutar un programa de un usuario. Cuando el timer expira, genera una interrupción causando que el CPU ejecute la rutina de servicio de la interrupción timer.
Una señal o signal es la notificación por software de que un evento ocurrió. Por lo general es la respuesta del Sistema de Operación. Por ejemplo, ctrl-C genera una interrupción para el manejador de dispositivo que maneja el teclado. El manejador notifica al proceso apropiado mandando un signal. El Sistema de Operación también puede enviar signals a un proceso para notificar la finalización de una E/S o de un error.

Las interrupciones pueden ser producidas por Hardware o por Software.

Las interrupciones por Hardware son producidas por un dispositivo y viajan por el mismo bus del sistema.
Las interrupciones por Software son producidas por medio de la ejecución de una operación especial que se conoce como "llamada al sistema" (system call) o por errores producidos dentro de un proceso, también conocidas como excepciones.
Hay muchos tipos de interrupciones y pare cada uno de estas existe una rutina en el sistema de operación que le da servicio. Los sistemas de operación actuales permiten a los dispositivos tales como E/S o reloj del sistema interrumpir el CPU asíncronamente.


Interrupciones externas de hardware


Las interrupciones externas las generan los dispositivos perifericos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores.
No es posible desactivar a las interrupciones externas.
Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vias de comunicación llamadas puertos.

Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no ser interrumpido.

Interrupciones por hardware no enmascarables (NMI): Aquellas que siempre interrumpen al programa.

Interrupciones de software


Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al número de interrupción deseada con la instrucción INT.
El uso de las interrupciones nos ayuda en la creación de programas, utilizándolas nuestros programas son más cortos, es más fácil entenderlos y usualmente tienen un mejor desempeño debido en gran parte a su menor tamaño.
Este tipo de interrupciones podemos separarlas en dos categorías: las interrupciones del sistema operativo DOS y las interrupciones del BIOS.
La diferencia entre ambas es que las interrupciones del sistema operativo son más fáciles de usar pero también son más lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho más rápidas pero tienen la desventaja que, como son parte del hardware son muy específicas y pueden variar dependiendo incluso de la marca del fabricante del circuito.
La elección del tipo de interrupción a utilizar dependerá únicamente de las características que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS).


Llamadas al Sistema

Definición de llamada al sistema

Una llamada al sistema es un método o función que puede invocar un proceso para solicitar un cierto servicio al sistema operativo. Dado que el acceso a ciertos recursos del sistema requieren la ejecución de código en modo privilegiado, el sistema operativo ofrece un conjunto de métodos o funciones que el programa puede emplear para acceder a dichos recursos. En otras palabras, el sistema operativo actúa como intermediario, ofreciendo una interfaz de programación (API) que el programa puede usar en cualquier momento para solicitar recursos gestionados por el sistema operativo.

Algunos ejemplos de llamadas al sistema son las siguientes:
· time, que permite obtener la fecha y hora del sistema.
· write, que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una pantalla o un disco magnético.
· read, que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco magnético.
· open, que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele pasarse a write.

Las llamadas al sistema proveen una interfaz entre los procesos y el Sistema de Operación. Por lo general estas llamadas se encuentran disponibles como instrucciones en lenguaje ensamblable. En algunos sistemas podemos realizar llamadas al sistema desde programas en lenguajes de alto nivel, en cuyo caso se asemejan a llamadas a funciones o procedimientos.
Las llamadas al sistema y las excepciones funcionan como interrupciones del software: se gestionan igual que las interrupciones del hardware, pero las provoca la propia CPU.
Para provocar una interrupción software, existe una instrucción de máquina específica:
· INT (Intel)
· TRAP (Motorola)
· SYSCALL (MIPS)


Bibliografía & Linkografía:
http://ldc.usb.ve/~spd/Docencia/ci-3821/Tema2/node4.htmlhttp://www.slideshare.net/SpiderHal/interrupciones-de-hardwarehttp://sopa.dis.ulpgc.es/so/teoria/pdf/so-02-Estructura%20del%20computador-6x1.pdfhttp://antiguo.itson.mx/die/mdomitsu/bibliotecaDigital/Programacion_Lenguaje_Ensamblador8086/Tema08.pdfhttp://moisesrbb.tripod.com/unidad2.htmhttp://moisesrbb.tripod.com/asm.htmlhttp://sinclairql.speccy.org/articulos/programacion/le1.htm

No hay comentarios:

Publicar un comentario